【12C】Oracle 12c 可插拔資料庫之資料泵功能體驗
郵箱:
QQ: 1253771276
#########################我是分隔符#############################新年新群招募: 中國Oracle精英聯盟 170513055
群介紹:本群是大家的一個技術分享社群,在這裡可以領略大師級的技術講座,還有機會參加Oracle舉辦的技術沙龍,與興趣相投的小夥伴一起笑談風雲起,感悟職場情!
#########################我是分隔符#############################
前言:Oracle12c的datapump功能跟以前差不多,在多租戶的環境中執行匯入\匯出以及使用一些更細化的引數的時候,幾乎沒有區別,依然很好用,效率很高。目前有很多的使用者仍然在使用exp/imp工具在執行一些遷移、備份、過濾和轉移資料的工作,相比起來,資料泵的效率更高、更易用並且更方便管理,但exp/imp在有些時候可以完成datapump不適用的情況。兩者的操作風格和格式很相似,相信在您掌握了其中任一種工具之後,另一種會很容易上手。
資料泵可以高效備份、複製、保護和傳輸大量的資料和源資料。在匯入和匯出過程中可以做到過濾資料和物件,並且能夠在全資料庫級、方案級、表級和表空間級實現匯入匯出。
在此,我們簡單體驗一下資料泵在可插拔資料庫中的基本操作過程,你將會發現,跟以前傳統的非插拔資料庫幾乎沒有太大區別。
在Oracle12c的可插拔資料庫環境中,首先啟動CDB:
[oracle@cafe ~]$ export ORACLE_SID=cup -----CDB的名字自定義為cup,顧名思義cup作為容器儲存資料庫,我們的PDB自定義為tea。
[oracle@cafe ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Fri Jan 23 15:06:41 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup -----啟動CDB
ORACLE instance started.
Total System Global Area 767557632 bytes
Fixed Size 2929112 bytes
Variable Size 574623272 bytes
Database Buffers 184549376 bytes
Redo Buffers 5455872 bytes
Database mounted.
Database opened.
SQL> alter pluggable database tea open; -----在CDB中啟動可插拔資料庫(PDB)tea。
Pluggable database altered.
SQL> alter session set container = tea; -----切換到PDB中(tea)。
Session altered.
SQL> show con_name
CON_NAME
------------------------------
TEA -----經驗證,已切換到tea資料庫容器。
SQL> show parameter service;
做資料泵的匯出需要首先建立目錄物件,主要用於作為匯出目的地存放匯出檔案用,應該事檢查作業系統中有充足的空間可用並且該空間在資料庫伺服器本地。這樣做的好處之一是可以對目錄結構等資訊達到保密的安全效果,不贊成使用預設的路徑,因為可能會導致空間不足問題,以至於影響資料庫正常功能。
在資料庫系統中建立相關目錄:
[root@cafe /]# mkdir /oradump
[root@cafe /]# chmod -R 777 /oradump
[root@cafe /]# chown -R oracle.oinstall /oradump
SQL> create directory dump_dir as '/oradump'; -----在資料庫中建立該目錄的物件資訊。
Directory created.
SQL> select directory_name,directory_path from dba_directories;
DIRECTORY_NAME DIRECTORY_PATH
-------------- --------------
DUMP_DIR /oradump
插入測試資料,以備驗證後期驗證匯出、匯入的效果:
SQL> create table test(id number);
Table created.
SQL> insert into test values(1);
1 row created.
SQL> CREATE USER eric IDENTIFIED BY gao ACCOUNT UNLOCK;
User created.
SQL> grant dba to eric;
Grant succeeded.
接下來我們執行一次全庫匯出:
expdp eric/gao directory=dump_dir dumpfile=fullbak.dmp logfile=fullbak.log full=y
引數解釋:
directory:指定的是我們們剛建立的目錄物件中的路徑別名,在dba_directories中對應著directory_name欄位。
dumpfile:自定義匯出檔案的filename。
logfile:可以把整個匯入、匯出過程中的操作資訊輸出到檔案中,以便後期驗證備份效果和排錯用。
full:等於y的時候為全庫匯出模式。
注意,匯出所用的使用者不要用sys,一般用具有dba角色的使用者即可,system也可用。
匯出過程:
[oracle@cafe ~]$ expdp eric/gao@tea directory=dump_dir dumpfile=fullbak.dmp logfile=fullbak.log full=y
Export: Release 12.1.0.2.0 - Production on Fri Jan 23 18:34:12 2015 -----此行包含版本、匯出操作開始的時間,該時間可用於計算匯出總時間
和記錄操作時間點。
Copyright (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 "ERIC"."SYS_EXPORT_FULL_01": eric/********@tea directory=dump_dir dumpfile=fullbak.dmp logfile=fullbak.log full=y
-----"ERIC"."SYS_EXPORT_FULL_01"為當前執行的job的名字,可用於中途介入匯入、匯出過程中調整策略和檢視狀態。
Estimate in progress using BLOCKS method...
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: 4.265 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
. . exported "SYS"."KU$_USER_MAPPING_VIEW" 6.109 KB 38 rows
...省略多行...
. . exported "SYS"."NACL$_WALLET_EXP" 0 KB 0 rows
. . exported "WMSYS"."WM$EXP_MAP" 7.718 KB 3 rows
Master table "ERIC"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ERIC.SYS_EXPORT_FULL_01 is:
/oradump/fullbak.dmp
Job "ERIC"."SYS_EXPORT_FULL_01" successfully completed at Fri Jan 23 18:49:29 2015 elapsed 0 00:12:55
-----此行包含job名稱,完成時間和總共使用時間,有時可能沒有elapsed,可以根據該操作剛開始的時間做減法,算總時間。
檢視一下匯出的檔案:
[root@cafe oradump]# ls -lh
總用量 2.8M
-rw-r----- 1 oracle oinstall 2.8M 1月 23 18:49 fullbak.dmp -----匯出的實際容量和其估算的容量還是有一定出入的,因此建議在準備儲存空間的
時候多預留一些。
-rw-r--r-- 1 oracle oinstall 9.4K 1月 23 18:49 fullbak.log
我們也可以只估算匯出檔案的大小而不進行實際的匯出操作:
expdp eric/gao@tea estimate_only=y directory=dump_dir logfile=n full=y
此處我們使用了estimate_only引數,將該引數置於y狀態即可開啟估算功能,此處不需要寫dumpfile引數,否則可能會報錯。
輸出結果:
[oracle@cafe ~]$ expdp eric/gao@tea estimate_only=y directory=dump_dir logfile=n full=y
Export: Release 12.1.0.2.0 - Production on Fri Jan 23 22:08:30 2015
Copyright (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 "ERIC"."SYS_EXPORT_FULL_01": eric/********@tea estimate_only=y directory=dump_dir logfile=n full=y
Estimate in progress using BLOCKS method...
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
. estimated "SYS"."KU$_USER_MAPPING_VIEW" 16 KB
. estimated "ORDDATA"."ORDDCM_DOCS" 1.25 MB
. estimated "WMSYS"."WM$CONSTRAINTS_TABLE$" 320 KB
. estimated "WMSYS"."WM$LOCKROWS_INFO$" 192 KB
. estimated "WMSYS"."WM$UDTRIG_INFO$" 192 KB
. estimated "LBACSYS"."OLS$AUDIT_ACTIONS" 64 KB
. estimated "LBACSYS"."OLS$DIP_EVENTS" 64 KB
. estimated "LBACSYS"."OLS$INSTALLATIONS" 64 KB
. estimated "LBACSYS"."OLS$PROPS" 64 KB
...省略多行...
Total estimation using BLOCKS method: 4.265 MB -----此處我們看到,該值跟我們們上一次做實際全庫匯出過程中算的值一樣。
Job "ERIC"."SYS_EXPORT_FULL_01" successfully completed at Fri Jan 23 22:10:18 2015 elapsed 0 00:01:32
資料泵有一個好處,那就是互動操作模式,我們可以在作業執行中去監控執行狀態,並且可以暫停、啟動作業,也可以終止作業。
檢視正在執行的匯入匯出狀態:
下面我們就來體驗一下:
Export> status -----檢視當前作業狀態
Job: SYS_EXPORT_FULL_02 -----作業名,上面的全庫匯出我們也看到過有對應的名字
Operation: EXPORT -----操作型別:
Mode: FULL -----模式:全庫匯出
State: EXECUTING -----狀態:執行中
Bytes Processed: 0
Current Parallelism: 1 -----當前並行數,如果指定了parallel引數,便會影響該值,並且下面會對應的有worker1~workerN
Job Error Count: 0
Dump File: /oradump/fullbak.dmp
bytes written: 4,096 -----已寫入的位元組
Worker 1 Status:
Instance ID: 1
Instance name: cup -----例項名為cup,容器資料庫CDB的名稱
Host name: cafe -----作業系統主機名
Process Name: DW00 -----相關寫程式,如果設定了parallel的話,會有更多DWNN。
State: EXECUTING
返回匯入/匯出命令列輸出狀態:
Export> continue_client
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: 4.578 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
暫停正在執行的匯入/匯出操作,該操作不會導致作業停止,只是暫時停止,類似於斷點續傳:
Export> stop_job
Are you sure you wish to stop this job ([yes]/no): yes
附加正在執行的作業,在這裡就用到了我們們一再提到的job名稱了,使用attach引數指定作業名稱就可附加到正在執行或者是暫停的作業中去:
[oracle@cafe oradump]$ expdp eric/gao@tea attach=eric.SYS_EXPORT_FULL_02
Export: Release 12.1.0.2.0 - Production on Fri Jan 23 22:24:04 2015
Copyright (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
Job: SYS_EXPORT_FULL_02
Owner: ERIC
Operation: EXPORT
Creator Privs: TRUE
GUID: 0D537C91F12C103FE0537EE0A8C01C87
Start Time: Friday, 23 January, 2015 22:24:16
Mode: FULL
Instance: cup
Max Parallelism: 1
Timezone: -07:00
Timezone version: 18
Endianness: LITTLE
NLS character set: ZHS16GBK
NLS NCHAR character set: AL16UTF16
EXPORT Job Parameters:
Parameter Name Parameter Value:
CLIENT_COMMAND eric/********@tea directory=dump_dir dumpfile=fullbak.dmp logfile=fullbak.log full=y
State: IDLING -----在這裡我們看到job是處於暫停狀態的
Bytes Processed: 0
Current Parallelism: 1
Job Error Count: 0
Dump File: /oradump/fullbak.dmp
bytes written: 4,096
Worker 1 Status:
Instance ID: 1
Instance name: cup
Host name: cafe
Process Name: DW00
State: UNDEFINED
啟動暫停的作業:
Export> start_job
再次檢視一下作業的狀態有沒有發生變化:
Export> status
Job: SYS_EXPORT_FULL_02
Operation: EXPORT
Mode: FULL
State: EXECUTING
Bytes Processed: 0
Current Parallelism: 1
Job Error Count: 0
Dump File: /oradump/fullbak.dmp
bytes written: 69,632
Worker 1 Status:
Instance ID: 1
Instance name: cup
Host name: cafe
Process Name: DW00
State: EXECUTING -----作業繼續執行了
Object Schema: SYS
Object Name: KU$_USER_MAPPING_VIEW
Object Type: DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
Completed Objects: 1
Worker Parallelism: 1
終止資料泵作業,在作業執行中途遇到問題不得不停止的時候,可以用kill_job命令終止操作:
Export> kill_job
Are you sure you wish to stop this job ([yes]/no): yes
終止之後系統中不會有實際的匯出檔案生成:
[oracle@cafe oradump]$ ls -lt
總用量 4
-rw-r--r-- 1 oracle oinstall 1398 1月 23 22:31 fullbak.log
檢視資料泵輸出的日誌,我們看一下終止操作在日誌中的資訊:
Job "ERIC"."SYS_EXPORT_FULL_02" stopped due to fatal error at Fri Jan 23 22:31:01 2015 elapsed 0 00:06:48
我們刪除資料庫tea中的表,然後在資料庫全備的檔案中恢復該表,以驗證匯出的效果:
SQL> drop table test;
Table dropped.
SQL> select * from test;
select * from test
*
ERROR at line 1:
ORA-00942: table or view does not exist -----該表已不存在。
然後從全備份中單獨匯入test表,在這裡我們用全備的備份集,使用table引數保證單獨匯入該表,保證減小系統開銷:
[oracle@cafe oradump]$ impdp eric/gao@tea directory=dump_dir dumpfile=fullbak.dmp logfile=imptab.log tables=test
Import: Release 12.1.0.2.0 - Production on Fri Jan 23 23:20:31 2015
Copyright (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 "ERIC"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "ERIC"."SYS_IMPORT_TABLE_01": eric/********@tea directory=dump_dir dumpfile=fullbak.dmp logfile=imptab.log tables=test
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
. . imported "ERIC"."TEST" 5.046 KB 1 rows -----已匯入1行資料,5K的資料量。
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type DATABASE_EXPORT/STATISTICS/MARKER
Job "ERIC"."SYS_IMPORT_TABLE_01" successfully completed at Fri Jan 23 23:21:37 2015 elapsed 0 00:00:59
驗證表test已經恢復到了刪除之前的狀態:
[oracle@cafe oradump]$ sqlplus eric/gao@tea
SQL*Plus: Release 12.1.0.2.0 Production on Fri Jan 23 23:26:53 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Fri Jan 23 2015 23:23:49 +08:00
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
SQL> select * from test;
ID
----------
1
OK,資料已回來。
在實際專案中,可能資料量、環境和客戶要求都比此次試驗規模龐大、情況複雜,但是萬變不離其宗,切記一定實現規劃好備份空間,密切的關注備份狀態。
資料泵的功能和適用情景還有很多,比如我們們開始提到的過濾資料和物件,還有在全資料庫級、方案級、表級和表空間級實現匯入匯出等功能,由於篇幅有限,無法一一列舉,希望有機會做更深入的分享和交流。
##########################################################################################
如果喜歡我的文章就請掃下面二維碼吧!關注微訊號:leonarding_public
在這裡你能得到技術、實事、熱點訊息等新興事物的思考和觀點,別的地方可能沒有的東西。我將為大家提供最新技術與資訊動態,傳遞正能量。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26686207/viewspace-1437098/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【12C】Oracle 12C 新特性“可插拔資料庫”功能體驗Oracle資料庫
- Oracle Database 12c可插拔資料庫案例OracleDatabase資料庫
- 【Oracle 12c資料庫支援閃回庫功能】實驗Oracle資料庫
- 12c 資料泵常用功能總結
- 關於oracle 12c多租戶可插拔資料庫的啟停分析(一)Oracle資料庫
- Oracle 12C 資料泵新特性測試Oracle
- Oracle 12c資料庫安裝Oracle資料庫
- 12c 資料泵克隆使用者
- 資料庫遷移之資料泵實驗資料庫
- 12c 使用資料泵複製資料庫結構的注意事項資料庫
- Oracle 12C RAC CDB資料庫部署Oracle資料庫
- 12c 資料泵傳輸表空間
- 12c 資料泵命令列互動模式命令列模式
- 12c 傳統資料庫的ADG初體驗資料庫
- Oracle 12C新特性-資料泵新引數(LOGTIME)Oracle
- Oracle 12C新特性-資料泵新引數(VIEWS_AS_TABLES)OracleView
- oracle之資料泵Oracle
- 12c 資料泵匯入匯出級別
- ORACLE 12C RAC資料庫的啟停Oracle資料庫
- Oracle 12c資料庫升級實戰Oracle資料庫
- Oracle 12c - 普通資料庫與容器資料庫不能相互轉化Oracle資料庫
- Oracle 12c 新特性之 PDB 級別閃回資料庫Oracle資料庫
- 資料庫升級之-資料泵資料庫
- SequoiaDB資料庫之體驗sql功能資料庫SQL
- 12c 資料泵一致性匯出
- Oracle 12C 跨網路傳輸資料庫Oracle資料庫
- ORACLE 12C 開啟資料庫歸檔模式Oracle資料庫模式
- Oracle 資料庫12c新特性總結(一)Oracle資料庫
- Oracle 資料庫12c 16大新特性總結Oracle資料庫
- 使用 Oracle 資料庫 10g 資料泵重新啟動功能Oracle資料庫
- kettl連線oracle12c 可插拔資料庫pdbOracle資料庫
- 12c 資料庫管理 小結資料庫
- oracle12c新特點之可插拔資料庫(Pluggable Database,PDB)Oracle資料庫Database
- Oracle資料庫12c最新安全工具Data RedactionFPOracle資料庫
- Oracle 12c系列(一)|多租戶容器資料庫Oracle資料庫
- Oracle 資料庫12c 16大新特性總結(轉)Oracle資料庫
- Oracle 12c 新特性之 資料庫內歸檔(In-Database Archiving)Oracle資料庫Database
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫