12c推出了可插拔數據庫,在一個容器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
切換到pdborclSQL>?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
導入成功!