Transport Oracle 11g (11.2.0.3) Database to Oracle 12c (12.1.0.2) Database

### Source DB Server (Oracle 11g)
# make non-system tablespaces read-only
[oracle@testsrv11g ~]$ . oraenv
ORACLE_SID = [test11g] ?

sqlplus / as sysdba
begin
  for rec in (select tablespace_name as t from dba_tablespaces where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP') loop
      execute immediate 'alter tablespace '||rec.t||' read only';
  end loop;
end;
/

test11g> SELECT COUNT(*) from DBA_TABLES where owner = 'TESTUSER';

  COUNT(*)
----------
        28

        
test11g>
SELECT COUNT(*) from TESTUSER.TEST_TABLE;

  COUNT(*)
----------
       296

       
# Export Oracle 11g database
read -s mypwd
expdp system/$mypwd@test11g full=y dumpfile=test11g.dmp directory=DATA_PUMP_DIR transportable=always version=12 logfile=test11g.log

Estimate in progress using BLOCKS method...
Processing object type DATABASE_EXPORT/PLUGTS_FULL/FULL/PLUGTS_TABLESPACE
Processing object type DATABASE_EXPORT/PLUGTS_FULL/PLUGTS_BLK
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/TABLE_DATA
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 68.81 MB
Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/PROFILE
Processing object type DATABASE_EXPORT/SYS_USER/USER
Processing object type DATABASE_EXPORT/SCHEMA/USER
Processing object type DATABASE_EXPORT/ROLE
Processing object type DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
...
...
...
...
...
...
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:
  /oracle/admin/test11g/dpdump/test11g.dmp
******************************************************************************
Datafiles required for transportable tablespace TEST_DATA:
  +DATA/test11g/datafile/test_data.333.841251643
Datafiles required for transportable tablespace TEST_INDX:
  +DATA/test11g/datafile/test_indx.334.841251649
Datafiles required for transportable tablespace USERS:
  +DATA/test11g/datafile/users.335.841251653
Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at 11:28:52

### Destination DB Server (Oracle 12c)

CDB$ROOT@MY12C> create pluggable database test11g admin user pdbadmin identified by oracle;

CDB$ROOT@MY12C> sho pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------- -------------------- ----------
         2 PDB$SEED                          READ ONLY           NO
         3 PDBMY12C                         READ WRITE         NO
         4 MYPDB                               READ WRITE         NO
         5 MYPDB2                             READ WRITE         NO
     
   6 test11g                               MOUNTED


CDB$ROOT@MY12C> alter pluggable database test11g open;

CDB$ROOT@MY12C> select file_name from cdb_data_files where con_id = 6;

FILE_NAME
------------------------------------------------------------------------------------------------------------------------
+DATA/MY12C/2A741E0ACC3C1B87E0538501000A05C7/DATAFILE/system.426.902413891
+DATA/MY12C/2A741E0ACC3C1B87E0538501000A05C7/DATAFILE/sysaux.427.902413895

# Copy Tablespace Data Files
scp 168.95.1.15:/backup/dpdump/test11g/TEST*.* /backup/data_pump/test11g
scp 168.95.1.15:/backup/dpdump/test11g/USERS*.* /backup/data_pump/test11g

# Copy Data Pump Export Files
scp 168.95.1.15:/oracle/admin/test11g/dpdump/test11g*.* /backup/data_pump/test11g

ls -l cd /backup/data_pump/test11g

/backup/data_pump/test11g:
total 1189980
-rw-r----- 1 oracle dba 524296192 Jan 29 14:43 TEST_DATA.333.841251643
-rw-r----- 1 oracle dba 524296192 Jan 29 14:43 TEST_INDX.334.841251649
-rw-r----- 1 oracle dba  52436992 Jan 29 14:43 USERS.335.841251653
-rw-r----- 1 oracle dba 116240384 Jan 29 15:36 test11g_full.dmp
-rw-r--r-- 1 oracle dba     53423 Jan 29 15:36 test11g_full.log

su - grid
asmcmd -p

ASMCMD [+] > cd +DATA/MY12C/2A741E0ACC3C1B87E0538501000A05C7/DATAFILE


cp /backup/data_pump/test11g/TEST_DATA.333.841251643 +DATA/MY12C/2A741E0ACC3C1B87E0538501000A05C7/DATAFILE/TEST_DATA
cp /backup/data_pump/test11g/TEST_INDX.334.841251649 +DATA/MY12C/2A741E0ACC3C1B87E0538501000A05C7/DATAFILE/TEST_INDX
cp /backup/data_pump/test11g/USERS.335.841251653 +DATA/MY12C/2A741E0ACC3C1B87E0538501000A05C7/DATAFILE/USERS


ASMCMD [+data/my12c/2A741E0ACC3C1B87E0538501000A05C7/datafile] > ls -l
Type      Redund  Striped  Time             Sys  Name
DATAFILE  MIRROR  COARSE   JAN 29 14:00:00  N    TEST_DATA => +DATA/ASM/DATAFILE/TEST_DATA.429.902415199
DATAFILE  MIRROR  COARSE   JAN 29 14:00:00  N    TEST_INDX => +DATA/ASM/DATAFILE/TEST_INDX.430.902415229
DATAFILE  MIRROR  COARSE   JAN 29 14:00:00  Y    SYSAUX.427.902413895
DATAFILE  MIRROR  COARSE   JAN 29 14:00:00  Y    SYSTEM.426.902413891
DATAFILE  MIRROR  COARSE   JAN 29 14:00:00  N    USERS => +DATA/ASM/DATAFILE/USERS.431.902415293


CDB$ROOT@MY12C> alter session set container=test11g;

Session altered.

CDB$ROOT@MY12C> sho con_name

CON_NAME
------------------------------
test11g

CDB$ROOT@MY12C> create directory dump_dir as '/backup/data_pump/test11g';

# import Oracle 11g database dump file to Oracle 12c
export TWO_TASK=test11g
read -s mypwd
impdp system/$mypwd full=y directory=dump_dir dumpfile=test11g_full.dmp transport_datafiles='+DATA/ASM/DATAFILE/TEST_DATA.429.902415199','+DATA/ASM/DATAFILE/TEST_INDX.430.902415229','+DATA/ASM/DATAFILE/USERS.431.902415293'

sqlplus system/$mypwd
test11g@MY12C> sho con_name

CON_NAME
------------------------------
test11g

test11g@MY12C> select status from v$instance;

STATUS
------------------------------------
OPEN

# Verify the Result
test11g@MY12C> SELECT COUNT(*) from DBA_TABLES where owner = 'TESTUSER';

  COUNT(*)
----------
        28
        
test11g@MY12C>  
SELECT COUNT(*) from TESTUSER.TEST_TABLE;

  COUNT(*)
----------
       296

 

 

[Reference]
https://docs.oracle.com/database/121/ADMIN/transport.htm#ADMIN13726

arrow
arrow
    文章標籤
    Oracle 12c
    全站熱搜

    DanBrother 發表在 痞客邦 留言(0) 人氣()