Oracle 12 c pdb expdp/impdpを使用したインポートエクスポート


12 cは、1つのコンテナcdbに複数のデータベースpdbが同時に存在する挿抜可能なデータベースを発売した.pdbのデータポンプインポートエクスポートでは、従来のデータベースとは少し異なります.
1,pdbにtansnamesを追加する必要がある
2、エクスポートのインポート時にuseridパラメータにtansnamesの値を指定する必要があります.たとえばuserid=user/pwd@tnsname
 
データポンプエクスポート
1、現在のSIDを表示し、pdbを表示し、コンテナデータベースに切り替える.ここのpluggableデータベースはpdborclである.
[oracle@test admin]$ echo $ORACLE_SID
[oracle@test admin]orcl

cdbにログインし、pdbを表示します.
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> show pdbs

    CON_ID CON_NAME              OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
PDB$SEED                      READ ONLY    NO
PDBORCL                       MOUNTED

SQL> alter pluggable database all open;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME              OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
PDB$SEED                      READ ONLY  NO
PDBORCL                       READ WRITE NO

pdborclに切り替え
SQL> alter session set container=pdborcl;

Session altered.

SQL>

2、サンプルユーザーscottを表示し、以降のschemaレベルのインポートエクスポートでそのユーザーのデータを使用します.
SQL> select owner, table_name from dba_tables where owner='SCOTT';

OWNER                   TABLE_NAME
------------------------------ ----------------------------------------
SCOTT                   SALGRADE
SCOTT                   BONUS
SCOTT                   EMP
SCOTT                   DEPT

3、dba権限を単独で作成するデータポンプユーザー
SQL> grant dba to dp identified by dp;
Grant succeeded.

4、データポンプディレクトリdp_を作成するdir、パスoracleホームディレクトリ
SQL> create or replace directory dp_dir as  '/home/oracle';

Directory created.

SQL> exit

5、dpユーザーにデータポンプ経路に読み書き権限を与える
(dba権限のこのステップは省略できますが、試験の完全性のためにここで保持します)
SQL> grant read,write on directory dp_dir to dp;
Grant succeeded.

6、tnsnamesを設定.ora、pdboroclを増やします.SERVICE_NAMEはpdbのインスタンス名、ここではpdborcl
[oracle@xqzt admin]$ pwd
/data/app/oracle/product/12.1.0/dbhome_1/network/admin
[oracle@xqzt admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /data/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = xqzt)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


PDBORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = xqzt)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME =pdborcl)
    )
  )

7.tnsnames.oraの有効性、OK(0 msec)を返すと構成成功
[oracle@xqzt admin]$ tnsping pdborcl

TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 10-DEC-2015 09:10:34

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
/data/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xqzt)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =pdborcl)))
OK (0 msec)

8、データポンプのエクスポート
  • ユーザ名パスワードはdp/dpであり、tnsnamesを介してpdborcl
  • を指す.
  • データポンプディレクトリ:dp_dir,OSパスは/home/oracle
  • エクスポートファイル:/home/oracle/scott_pdborcl.dmp
  • エクスポートログ:/home/oracle/scott_pdborcl.log
  • エクスポートモードはschemeであり、ユーザ:scott
  • [oracle@xqzt ~]$ expdp dp/dp@pdborcl directory=dp_dir dumpfile=scott_pdborcl.dmp logfile=scott_pdborcl.log schemas=scott
    
    Export: Release 12.1.0.2.0 - Production on Thu Dec 10 09:32:05 2015Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
    
    Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
    Starting "DP"."SYS_EXPORT_SCHEMA_01":  dp/********@pdborcl directory=dp_dir dumpfile=scott_pdborcl.dmp logfile=scott_pdborcl.log schemas=scott 
    Estimate in progress using BLOCKS method...
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Total estimation using BLOCKS method: 192 KB
    Processing object type SCHEMA_EXPORT/USER
    Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
    Processing object type SCHEMA_EXPORT/ROLE_GRANT
    Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Processing object type SCHEMA_EXPORT/TABLE/TABLE
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
    . . exported "SCOTT"."DEPT"                              6.023 KB       4 rows
    . . exported "SCOTT"."EMP"                               8.773 KB      14 rows
    . . exported "SCOTT"."SALGRADE"                          6.023 KB      10 rows
    . . exported "SCOTT"."BONUS"                                 0 KB       0 rows
    Master table "DP"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
    ******************************************************************************
    Dump file set for DP.SYS_EXPORT_SCHEMA_01 is:
      /home/oracle/scott_pdborcl.dmp
    Job "DP"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Dec 10 09:32:29 2015 elapsed 0 00:00:21
    
    [oracle@xqzt ~]$

    10、エクスポートファイルの表示
    [oracle@xqzt ~]$ ls  -l scott_pdborcl.dmp  scott_pdborcl.log
    -rw-r----- 1 oracle oinstall 356352 12  10 09:32 scott_pdborcl.dmp
    -rw-r--r-- 1 oracle oinstall   1960 12  10 09:32 scott_pdborcl.log

    11、エクスポートファイルが正常にインポートできるかどうかをテストするために、pdborclのscottユーザーを削除します.
    SQL> select count(*) from scott.DEPT;
    
      COUNT(*)
    ----------
    
    SQL> drop user scott cascade  ;
    
    User dropped.
    
    SQL>

    ユーザーにアクセスするテーブルはもう存在しません
    SQL> select count(*) from scott.DEPT;
    select count(*) from scott.DEPT                           
    *ERROR at line 1:
    
    ORA-00942: table or view does not exist

    12、scottユーザーのインポート
    [oracle@xqzt ~]$ impdp dp/dp@pdborcl directory=dp_dir dumpfile=scott_pdborcl.dmp logfile=scott_pdborcl_imp.log schemas=scott
    
    Import: Release 12.1.0.2.0 - Production on Thu Dec 10 09:39:02 2015Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
    
    Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
    Master table "DP"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
    Starting "DP"."SYS_IMPORT_SCHEMA_01":  dp/********@pdborcl directory=dp_dir dumpfile=scott_pdborcl.dmp logfile=scott_pdborcl_imp.log schemas=scott 
    Processing object type SCHEMA_EXPORT/USER
    Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
    Processing object type SCHEMA_EXPORT/ROLE_GRANT
    Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Processing object type SCHEMA_EXPORT/TABLE/TABLE
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    . . imported "SCOTT"."DEPT"                              6.023 KB       4 rows
    . . imported "SCOTT"."EMP"                               8.773 KB      14 rows
    . . imported "SCOTT"."SALGRADE"                          6.023 KB      10 rows
    . . imported "SCOTT"."BONUS"                                 0 KB       0 rows
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
    Job "DP"."SYS_IMPORT_SCHEMA_01" successfully completed at Thu Dec 10 09:39:06 2015 elapsed 0 00:00:04
    
    [oracle@xqzt ~]$

    13、試験導入結果
    SQL> select count(*) from scott.DEPT;  
    COUNT(*)
    ----------
         4

    インポートに成功しました.