Orace 12c Export local database and import to remote database

Export local database and import to remote database

###Export local database to dmp file
Execute on sql developer client with system role

alter session set "_oracle_script" = true;

drop user user_test cascade;

drop tablespace BIGTBS_03 including contents and datafiles;

CREATE BIGFILE TABLESPACE BIGTBS_03  DATAFILE 'C:/tableSpaces/BIGTBS_F3.DAT'  SIZE 500M AUTOEXTEND ON NEXT 100M;

CREATE USER user_test IDENTIFIED BY user_pass DEFAULT TABLESPACE bigtbs_03 QUOTA UNLIMITED ON bigtbs_03 TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON system;

grant all privileges to user_test;

expdp user_test/user_pass@xe directory=DATA_PUMP_DIR dumpfile=EXPDP_local.dmp logfile=EXPDP_local.log tables=IMAGES,GENERIC

###Copy local dmp file to remote database via dblink

drop public database link to_rds;

create public database link to_rds connect to user_test_rds identified by user_pass_rds
	using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=remote.server.ip)(PORT=1521))(CONNECT_DATA=(SID=xe)))';

DBMS_FILE_TRANSFER.PUT_FILE(
    source_directory_object       => 'DATA_PUMP_DIR',
    source_file_name              => 'EXPDP_local.DMP',
    destination_directory_object  => 'DATA_PUMP_DIR',
    destination_file_name         => 'EXPDP_rds_rds.DMP', 
    destination_database          => 'to_rds'
);

###Import dmp file in remote database

impdp user_test_rds/user_pass_rds@rds_servicename logfile=EXPDP_rds_rds.DMP.log dumpfile=EXPDP_rds_rds.DMP directory=DATA_PUMP_DIR TABLE_EXISTS_ACTION=APPEND tables=IMAGES,GENERIC
   
    1. only import data: CONTENT=DATA_ONLY 
    2. table exists then append data records: TABLE_EXISTS_ACTION=APPEND 
    3. not import index,CONSTRAINT: EXCLUDE=INDEX,CONSTRAINT 

###SQL file implement function copy local dmp file to remote database via dblink
Execute on CMD window: win + R + cmd(windows)

sqlplus -S local_user_sys/local_pass_system@xe as sysdba @C:\Sql\oracle_db_copy_to_rds.sql EXPDP_rds_rds.DMP user_pass_rds
Oracle_db_copy_to_rds.sql
File: C:\Sql\oracle_db_copy_to_rds.sql

    SET SERVEROUTPUT ON SIZE 999999;
    WHENEVER SQLERROR EXIT FAILURE ROLLBACK;

    DECLARE
    script_name   CONSTANT VARCHAR2 (50) := 'oracle_db_copy_to_rds.sql ';
    BEGIN
        DBMS_OUTPUT.new_line ();
        DBMS_OUTPUT.put_line ('File ' || script_name || 'started at ' || TO_CHAR (CURRENT_DATE, 'MON-DD-YYYY HH24:MI:SS'));
        
        EXECUTE IMMEDIATE 'create public database link to_rds connect to user_test_rds identified by &2
        using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=remote.server.ip)(PORT=1521))(CONNECT_DATA=(SID=xe)))';

        DBMS_FILE_TRANSFER.PUT_FILE(
            source_directory_object       => 'DATA_PUMP_DIR',
            source_file_name              => 'EXPDP_local.DMP',
            destination_directory_object  => 'DATA_PUMP_DIR',
            destination_file_name         => '&1', 
            destination_database          => 'to_rds'
        );
        
    DBMS_OUTPUT.put_line ('File ' || script_name || ' ended at ' || TO_CHAR (CURRENT_DATE, 'MON-DD-YYYY HH24:MI:SS'));
    END;
    /
    commit;
    exit;

###Directory Operation

select * from dba_directories;
create directory or replace DATA_PUMP_DIR as 'c:\dump';
grant read,write on directory DATA_PUMP_DIR to user_test;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值