Oracle Tutorials: Complete Guide of Oracle Import using impdp

Data Pump Import supports various import modes

Yes, Oracle Data Pump Import (impdp) supports various import modes. Here are the different modes of import that are supported by Data Pump Import:

  1. Full database import: This mode imports all objects in the dump file into a new database or an existing database.
  2. Schema-level import: This mode imports all objects owned by a specific schema in the dump file into a new or existing database.
  3. Table-level import: This mode imports one or more tables (and their dependent objects) from the dump file into a new or existing database.
  4. Partition-level import: This mode imports one or more partitions of a table from the dump file into a new or existing database.
  5. Subset-level import: This mode imports a subset of rows from a table in the dump file into a new or existing database.
  6. Transportable tablespace import: This mode imports one or more tablespaces from the dump file into a new or existing database. This mode is particularly useful when you need to move a large amount of data between databases quickly.

Terminology Used in Oracle Import Process

datafiles

A datafile in Oracle database contains the actual data used and manipulated by Oracle. It stores the physical data of the database, such as tables, indexes, and other database objects. Datafiles are associated with a specific tablespace in the database and can be added or removed as needed to increase or decrease the amount of storage available.

control files

In Oracle database, the control files contain important information about the physical structure of the database. The control file is a binary file that is created when a database is first created and is updated continuously thereafter.

The control file records the following information:

  • Database name and the time stamp of when the control file was created
  • Names and locations of all datafiles and online redo log files belonging to the database
  • Current log sequence number
  • Archive log history
  • Backup information, including the date and time of the last backup, backup type, and backup set information
    Database creation time
  • The current state of the database, such as whether it is mounted or open

The control file is crucial for starting up the database and for managing its operations. It is automatically read and updated by the database whenever a new file is added or deleted, a backup is taken, or a log switch occurs. Without a control file, the database cannot be opened, backed up, or recovered.

archived logs

Archived logs contain a historical record of all transactions that have taken place on an Oracle database. Whenever a change is made to the database, the information about the change is first written to the database redo log files, which are located on disk. The redo log files are then periodically archived and copied to a separate location, such as tape, to provide a backup of the database changes. These archived logs can then be used for recovery purposes in case of a disaster or data loss. In other words, archived logs are a crucial component of a database backup and recovery strategy.

What contains in oracle .dmp file

An Oracle .dmp file is a binary file created by the Oracle Data Pump utility (expdp) or the original Export (exp) utility. It contains a logical backup of one or more Oracle database objects, such as tables, indexes, and stored procedures, in a platform-independent format. The file can be used to restore the database objects to the same or a different Oracle database. The .dmp file also includes the SQL statements used to create the database objects, as well as any constraints, triggers, and other related information.

What is tablespace?

In Oracle databases, a tablespace is a logical storage unit that contains one or more datafiles. A datafile is a physical file on disk that stores data and metadata for the objects created in a database.

A tablespace is used to organize and manage database objects, such as tables, indexes, and partitions. By separating data into different tablespaces, you can manage the storage of data and control the allocation of space on disk.

Each tablespace is associated with a set of database objects, and these objects are physically stored in the datafiles associated with the tablespace. A tablespace can contain multiple datafiles, and a datafile can belong to only one tablespace.

Oracle provides several default tablespaces when you create a new database, including the SYSTEM tablespace, which contains the data dictionary and other system information, and the TEMP tablespace, which is used for temporary storage during sorting and other operations.

You can also create additional tablespaces as needed to manage data storage and allocation in your database. By default, Oracle databases use the Automatic Segment Space Management (ASSM) feature to manage the allocation of space within tablespaces, but you can also use manual segment space management if desired.

Overall, tablespaces provide a way to manage data storage and allocation in Oracle databases, and are a fundamental concept in database administration.

https://www.devopsschool.com/blog/oracle-tutorials-how-to-import-data-pump-using-impdp/

What are things to do before oracle impdump full

Before running the Oracle IMPDP (Import Data Pump) utility to perform a full database import, here are some important things to do:

  1. Backup the existing database: It’s always recommended to have a backup of the database before importing data, especially in the case of a full database import.
  2. Check the available disk space: Make sure that there is enough free disk space to accommodate the imported data. The space required would depend on the size of the exported data and the size of the target database.
  3. Disable database triggers: Before starting the import, it’s recommended to disable all the database triggers to avoid any data inconsistencies during the import.
  4. Disable foreign key constraints: Similarly, disabling foreign key constraints can also help avoid conflicts during the import process.
  5. Disable any scheduled jobs: Any scheduled jobs running on the database should be disabled before starting the import to prevent any conflicts or errors.
  6. Check for any errors or warnings in the export log: It’s important to review the export log of the source database to check for any errors or warnings before starting the import. These could indicate potential issues with the data or the database.
  7. Verify the compatibility of the source and target databases: Make sure that the source and target databases have the same version and compatibility level.
  8. Verify that all required privileges are granted to the user performing the import: The user running the import should have all the necessary privileges to perform the import.
Backup the existing database:
You can use the Oracle RMAN (Recovery Manager) utility to take a full backup of the database before starting the import. Here's an example command:

rman target / nocatalog
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
This will take a full backup of the database along with all the archived logs.

Check the available disk space:
You can check the available disk space on the target server using the df command. Here's an example command:

df -h
This will show you the free disk space on all the mounted file systems.

Disable database triggers:
You can disable all the database triggers using the following SQL command:

ALTER TRIGGER ALL DISABLE;
This will disable all the triggers in the database.

Disable foreign key constraints:
You can disable all the foreign key constraints using the following SQL command:

ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;
You will need to run this command for each table that has foreign key constraints.

Disable any scheduled jobs:
You can disable all the scheduled jobs using the following SQL command:

BEGIN
    DBMS_SCHEDULER.DISABLE('<job_name>');
END;
You will need to run this command for each scheduled job that you want to disable.

Check for any errors or warnings in the export log:
You can review the export log of the source database to check for any errors or warnings before starting the import. The location of the log file will depend on how you performed the export. Here's an example command to review the log file:

less <export_log_file>
This will open the log file in the less command-line viewer, allowing you to scroll through the log and review any errors or warnings.

Verify the compatibility of the source and target databases:
You can check the compatibility level of the source and target databases using the following SQL command:

SELECT * FROM v$version;
This will show you the version and compatibility level of the database.

Verify that all required privileges are granted to the user performing the import:
You can check the privileges of the user performing the import using the following SQL command:

SELECT * FROM dba_sys_privs WHERE grantee='<user_name>';

Best practices for data pump import in Oracle RAC cluster?

When performing a data pump import in an Oracle RAC (Real Application Clusters) cluster, there are several best practices that can help ensure a successful and efficient process:

  1. Use parallel processing: Data pump imports can be performed in parallel by specifying the PARALLEL parameter. This can significantly reduce the import time, particularly for large data sets.
  2. Spread the load: To avoid overloading any single node in the cluster, consider spreading the import load across multiple nodes. This can be achieved by using the PARALLEL parameter with a value greater than 1, or by manually dividing the import file into smaller pieces and importing them separately on different nodes.
  3. Use network-resident files: To reduce the I/O load on the cluster, it’s best to use network-resident files for the import data files. This can be achieved by storing the files on a network file system accessible to all nodes in the cluster.
  4. Configure the buffer cache: Adjust the size of the buffer cache to optimize import performance. This can be done using the BUFFER_SIZE parameter.
  5. Use Direct Path mode: Direct Path mode bypasses SQL processing and writes data directly to the database, resulting in faster imports. This can be enabled using the DIRECT parameter.
  6. Monitor the process: Monitor the import process using tools like Enterprise Manager or the DBA_DATA_PUMP_JOBS view to ensure that it is running smoothly and to identify any potential issues.
  7. Plan for recovery: Ensure that you have a recovery plan in place in case the import process fails or encounters errors. This may involve creating a backup of the data before starting the import, or using tools like Flashback to restore the database to a previous state if necessary.

Import Approach using userdata?

I have 2 instance of oracle rac which is created using cloudformation script. I have added data pump impdp command in user data of the script. Is it good approach?

It’s not recommended to run the data pump import (impdp) command as part of the user data section of a cloud formation script to import data into an Oracle RAC cluster.

The user data section of a cloud formation script is designed to run scripts or commands when an EC2 instance is launched for the first time. While it’s possible to use the user data section to run the impdp command, it’s not a good approach for several reasons:

  1. Time-consuming: Data pump import can be a time-consuming process, and it’s not ideal to hold up the launch of your EC2 instances while the import process completes.
  2. Risk of errors: If the impdp command encounters an error during the import process, it may halt the launch of your EC2 instances, leaving your cluster in an incomplete state.
  3. Lack of control: Running the impdp command as part of the user data section doesn’t give you much control over the import process. You won’t be able to monitor the progress of the import, and you won’t have much flexibility in terms of configuring the import parameters.

Instead, it’s recommended to launch your EC2 instances and then initiate the data pump import process separately. You can do this by connecting to each instance in your cluster using SSH or remote desktop, and then running the impdp command manually or using a shell script. This will give you more control over the import process and allow you to monitor it more closely.

Alternatively, you could use Oracle Data Guard to replicate your data to the new cluster and avoid the need for a data pump import altogether. This would involve setting up a standby database in your new cluster, configuring Data Guard, and then switching over to the new cluster once the replication is complete.

How can i add oracle impd commands in cloudformation?

While it’s not recommended to run the impdp command as part of the user data section of a CloudFormation script, if you still want to do it, here’s an example of how you can add the impdp command to a CloudFormation script:

  1. In your CloudFormation template, define an EC2 instance resource with the appropriate configuration, such as the instance type, security group, key pair, and so on.
  2. In the user data section of your EC2 instance resource, add the impdp command, along with any necessary parameters and options.

For example, the following user data section launches an EC2 instance and then initiates a data pump import process:


UserData:
  Fn::Base64: !Sub |
    #!/bin/bash
    yum update -y
    yum install -y oracle-instantclient19.8-basic.x86_64
    export LD_LIBRARY_PATH=/usr/lib/oracle/19.8/client64/lib:$LD_LIBRARY_PATH
    impdp scott/tiger@mydb directory=mydir dumpfile=myfile.dmp logfile=myfile.log

Write a terraform code which would connect to ec2 instnace of Oracle RAC and run impdp command


# Configure the provider to use the AWS region where your EC2 instance is located
provider "aws" {
  region = "us-west-2"
}

# Define the EC2 instance resource
resource "aws_instance" "oracle_rac" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  key_name      = "my_key_pair"
  security_groups = ["my_security_group"]
  subnet_id     = "subnet-12345678"
  associate_public_ip_address = true
  tags = {
    Name = "oracle_rac_instance"
  }
}

# Use the remote-exec provisioner to connect to the EC2 instance and run the impdp command
resource "null_resource" "oracle_rac_impdp" {
  depends_on = [aws_instance.oracle_rac]
  
  provisioner "remote-exec" {
    inline = [
      "sudo yum update -y",
      "sudo yum install -y oracle-instantclient19.8-basic.x86_64",
      "export LD_LIBRARY_PATH=/usr/lib/oracle/19.8/client64/lib:$LD_LIBRARY_PATH",
      "impdp scott/tiger@mydb directory=mydir dumpfile=myfile.dmp logfile=myfile.log"
    ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/my_key_pair.pem")
      host        = aws_instance.oracle_rac.public_ip
    }
  }
}

Rajesh Kumar
Follow me
Latest posts by Rajesh Kumar (see all)
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x