Oracle12c中數據泵新特性之功能增強(expdp, impdp)


Oracle的數據泵功能在10g中被引進。本文對數據泵在12c中的增強做一個概覽。

1.   禁用日志選項(DISABLE_ARCHIVE_LOGGING)

Impdp的TRANSFORM參數已經擴展為包括DISABLE_ARCHIVE_LOGGING選項。該選項的默認值為 "N",不會影響日志行為。將該選項設置為"Y",這將會使表和索引在導入前將日指屬性設置為NOLOGGING,從而導入期間減少相關日志的產生,導入后再將日志屬性重置為LOGGING。

TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y

通過附上對象類型,可以把影響限定為特定對象類型(TABLE or INDEX)。

TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y:TABLE

 

TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y:INDEX

如下例所示。

$ impdp system/Password1@pdb1directory=test_dir dumpfile=emp.dmp logfile=impdp_emp.log \

    remap_schema=scott:test transform=disable_archive_logging:y

如果數據庫運行在FORCE LOGGING模式下,DISABLE_ARCHIVE_LOGGING選項將沒什么影響。

2.   LOGTIME參數

LOGTIME參數決定時間戳是否將包括在expdp和impdp功能的輸出信息中。 

LOGTIME=[NONE | STATUS |LOGFILE | ALL]

可用值如下。

1)     NONE :默認值,指示輸出中不包括時間戳,輸出和之前的版本相似。

2)     STATUS :時間戳包括在控制台輸出中,但不會在日志文件中出現。

3)     LOGFILE:時間戳出現在日志文件中,但不會輸出到控制台。

4)     ALL :時間戳出現在日志文件和控制台輸出中。

如下例所示。

$ expdp scott/tiger@pdb1 tables=empdirectory=test_dir dumpfile=emp.dmp logfile=expdp_emp.loglogtime=all

 

Export: Release 12.1.0.1.0 - Production onWed Nov 20 22:11:57 2013

 

Copyright (c) 1982, 2013, Oracle and/or itsaffiliates.  All rights reserved.

 

Connected to: Oracle Database 12c EnterpriseEdition Release 12.1.0.1.0 - 64bit Production

With the Partitioning, Oracle Label Security,OLAP, Advanced Analytics

and Real Application Testing options

20-NOV-13 22:12:09.312: Starting"SCOTT"."SYS_EXPORT_TABLE_01":  scott/********@pdb1 tables=empdirectory=test_dir dumpfile=emp.dmp logfile=expdp_emp.log logtime=all

20-NOV-13 22:12:13.602: Estimate in progressusing BLOCKS method...

20-NOV-13 22:12:17.797: Processing objecttype TABLE_EXPORT/TABLE/TABLE_DATA

20-NOV-13 22:12:18.145: Total estimationusing BLOCKS method: 64 KB

20-NOV-13 22:12:30.583: Processing objecttype TABLE_EXPORT/TABLE/TABLE

20-NOV-13 22:12:33.649: Processing objecttype TABLE_EXPORT/TABLE/INDEX/INDEX

20-NOV-13 22:12:37.744: Processing objecttype TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

20-NOV-13 22:12:38.065: Processing objecttype TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

20-NOV-13 22:12:38.723: Processing objecttype TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

20-NOV-13 22:12:41.052: Processing objecttype TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

20-NOV-13 22:12:41.337: Processing objecttype TABLE_EXPORT/TABLE/STATISTICS/MARKER

20-NOV-13 22:13:38.255: . . exported"SCOTT"."EMP"                                8.75 KB      14 rows

20-NOV-13 22:13:40.483: Master table"SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

20-NOV-13 22:13:40.507:******************************************************************************

20-NOV-13 22:13:40.518: Dump file set forSCOTT.SYS_EXPORT_TABLE_01 is:

20-NOV-13 22:13:40.545:   /home/oracle/emp.dmp

20-NOV-13 22:13:40.677: Job"SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at WedNov 20 22:13:40 2013 elapsed 0 00:01:36

 

$

3.   像表一樣導出視圖

VIEWS_AS_TABLES參數允許把視圖當成表導出。表結構匹配視圖列,視圖查詢結果對應表數據。

VIEWS_AS_TABLES=[schema_name.]view_name[:table_name],...

 

如下例所示。

CONN scott/tiger@pdb1

CREATE VIEW emp_v AS

 SELECT * FROM emp;

用VIEWS_AS_TABLES參數導出視圖。

$ expdp scott/tiger views_as_tables=scott.emp_vdirectory=test_dir dumpfile=emp_v.dmp logfile=expdp_emp_v.log

Expdp默認會創建一個臨時表來作為視圖的拷貝,但不包含數據,只是為導出提供一個元數據源。此外,也可以確定一個結構合適的表來代替。但這也許只有在只讀庫上才有意義。

4.   導入時改變表壓縮

TRANSFORM參數的TABLE_COMPRESSION_CLAUSE子句允許表導入過程中動態改變表的壓縮特性。

TRANSFORM=TABLE_COMPRESSION_CLAUSE:[NONE |compression_clause]

TABLE_COMPRESSION_CLAUSE參數的可選值如下。

1)     NONE :漏掉表壓縮子句,表繼承表空間的壓縮屬性。

2)     NOCOMPRESS:禁用表壓縮。

3)     COMPRESS:開啟基本表壓縮。

4)     ROW STORE COMPRESSBASIC :和COMPRESS一樣。

5)     ROW STORE COMPRESSADVANCED :開啟高級壓縮,也被稱為OLTP壓縮。

6)     COLUMN STORECOMPRESS FOR QUERY :Exadata和ZFS存儲配置中可用的混合列壓縮(HCC)。

7)     COLUMN STORECOMPRESS FOR ARCHIVE :Exadata和ZFS存儲配置中可用的混合列壓縮。

包括空格的壓縮子句需要用單引號或雙引號括起來。

如下例所示。

$ impdp system/Password1@pdb1directory=test_dir dumpfile=emp.dmp logfile=impdp_emp.log \

    remap_schema=scott:test transform=table_compression_clause:compress

5.   導入時改變表的LOB存儲

TRANFORM參數的LOB_STORAGE子句使得在進行非可傳輸導入操作時改變表的壓縮特性。

TRANSFORM=LOB_STORAGE:[SECUREFILE | BASICFILE| DEFAULT | NO_CHANGE]

LOB_STORAGE子句可以為如下值。

1)     SECUREFILE :LOB數據存儲為SecureFiles。

2)     BASICFILE :LOB數據存儲為BasicFiles。

3)     DEFAULT :LOB數據的存儲由數據庫自行決定。

4)     NO_CHANGE :LOB數據的存儲和原來的對象一樣。

舉例如下。

$ impdp system/Password1@pdb1directory=test_dir dumpfile=lob_table.dmp logfile=impdp_lob_table.log \

     transform=lob_storage:securefile

6.   導出文件壓縮選項

作為高級壓縮選項的一部分,你可以確定COMPRESSION_ALGORITHM參數以確定導出文件的壓縮級別。這和先前討論的表壓縮沒關系。

COMPRESSION_ALGORITHM=[BASIC | LOW | MEDIUM |HIGH]

可用值如下。

1)     BASIC :和先前版本的壓縮算法一樣。提供很好的壓縮,但對性能影響不大。

2)     LOW :用於降低CPU消耗比壓縮率更重要的場景。

3)     MEDIUM :推薦使用的選項。和BASIC特性類似,但用了不同的算法。

4)     HIGH:最大限度壓縮,但會消耗更多CPU。

舉例如下。

$ expdp scott/tiger tables=empdirectory=test_dir dumpfile=emp.dmp logfile=expdp_emp.log \

       compression=all compression_algorithm=medium

7.   多宿主選項支持(CDB和PDB)

Oracle12c引進了多宿主選項,允許多個可插拔數據庫(PDBs)存在於一個容器數據庫(CDB)。將數據泵用於PDB和用於非CDB數據庫沒太大差別。

從11.2.0.2庫以FULL選項導出的數據可以導入一個新PDB中,這和之前的完全導入一樣,但會有些限制。

8.   審計命令

通過創建審計策略,可以對Oracle 12c的數據泵作業進行審計。

CREATE AUDIT POLICY policy_name

 ACTIONS COMPONENT=DATAPUMP [EXPORT | IMPORT | ALL];

當該策略用於用戶時,用戶的數據泵作業信息將被審計。如下策略會審計所有的數據泵操作。該策略被用於用戶SCOTT。

CONN / AS SYSDBA

CREATE AUDIT POLICY aud_dp_plcy ACTIONSCOMPONENT=DATAPUMP ALL;

AUDIT POLICY aud_dp_plcy BY scott;

運行如下數據泵命令。

$ expdp scott/tiger tables=empdirectory=test_dir dumpfile=emp.dmp logfile=expdp_emp.log

檢查審計信息時,會發現該數據泵作業已被審計。

-- Flush audit information to disk.

EXECDBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;

 

SET LINESIZE 200

COLUMN event_timestamp FORMAT A30

COLUMN dp_text_parameters1 FORMAT A30

COLUMN dp_boolean_parameters1 FORMAT A30

 

SELECT event_timestamp,

      dp_text_parameters1,

      dp_boolean_parameters1

FROM  unified_audit_trail

WHERE audit_type = 'Datapump';

 

EVENT_TIMESTAMP               DP_TEXT_PARAMETERS1          DP_BOOLEAN_PARAMETERS1

------------------------------------------------------------ ------------------------------

14-DEC-13 09.47.40.098637 PM   MASTER TABLE:  "SCOTT"."SYS_EX MASTER_ONLY:FALSE, DATA_ONLY:

                              PORT_TABLE_01" , JOB_TYPE: EXP  FALSE, METADATA_ONLY: FALSE,

                              ORT, METADATA_JOB_MODE: TABLE_DUMPFILE_PRESENT: TRUE, JOB_RE

                              EXPORT, JOB VERSION: 12.1.0.0. STARTED:FALSE

                              0, ACCESS METHOD: AUTOMATIC, D

                              ATA OPTIONS: 0, DUMPER DIRECTO

                              RY: NULL REMOTE LINK: NULL, T

                              ABLE EXISTS: NULL, PARTITION O

                              PTIONS: NONE

 

SQL>

9.   加密口令增強

先前的版本中,數據泵加密口令需要在命令行輸入ENCRYPTION_PASSWORD參數,這樣很容易偷窺口令。

Oracle 12c中,ENCRYPTION_PWD_PROMPT參數可以加密但不要求在命令行輸入口令,而是運行時提示用戶輸入口令,且命令不回顯。

ENCRYPTION_PWD_PROMPT=[YES | NO]

舉例如下。

$ expdp scott/tiger tables=empdirectory=test_dir dumpfile=emp.dmp logfile=expdp_emp.log \

       encryption_pwd_prompt=yes

 

Export: Release 12.1.0.1.0 - Production onSat Dec 14 21:09:11 2013

 

Copyright (c) 1982, 2013, Oracle and/or itsaffiliates.  All rights reserved.

 

Connected to: Oracle Database 12c EnterpriseEdition Release 12.1.0.1.0 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

 

Encryption Password:

Starting"SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** tables=emp directory=test_dir

dumpfile=emp.dmp logfile=expdp_emp.logencryption_pwd_prompt=yes

Estimate in progress using BLOCKS method...

Processing object typeTABLE_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 64 KB

Processing object typeTABLE_EXPORT/TABLE/TABLE

Processing object typeTABLE_EXPORT/TABLE/INDEX/INDEX

Processing object typeTABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object typeTABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object typeTABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object typeTABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Processing object typeTABLE_EXPORT/TABLE/STATISTICS/MARKER

Processing object typeTABLE_EXPORT/TABLE/POST_TABLE_ACTION

. . exported"SCOTT"."EMP"                               8.765 KB      14 rows

Master table"SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

******************************************************************************

Dump file set for SCOTT.SYS_EXPORT_TABLE_01is:

 /tmp/emp.dmp

Job"SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at SatDec 14 21:09:55 2013 elapsed 0 00:00:41

 

$

10.        可傳輸數據庫

現在,TRANSPORTABLE選項可以和 FULL選項一起使用來傳輸整個數據庫。

$ expdp system/Password1 full=Ytransportable=always version=12 directory=TEMP_DIR \

  dumpfile=orcl.dmp logfile=expdporcl.log

該方法也可以被用來升級數據庫。

11.        其他增強

1)     數據泵支持擴展數據類型,但VERSION參數需要設置為12.1之后的版本。

2)     有域索引的LOB列現在可以充分里用直接路徑加載的優勢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM