91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用version參數解決Oracle數據泵版本差異

發布時間:2021-11-09 16:53:55 來源:億速云 閱讀:289 作者:柒染 欄目:建站服務器

今天就跟大家聊聊有關如何使用version參數解決Oracle數據泵版本差異,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

當我們回顧Oracle產品工具發展歷程,不能不承認Exp/Imp的成功。從早期的版本到現在11gExp/Imp都是開發人員最常使用、也是最簡單使用的數據庫邏輯備份工具。

但是隨著Oracle產品的不斷發展和現實環境中數據海量化,Exp/Imp已經不能滿足實際需要了。Oracle10g版本中正式推出了數據泵(Data Pump),也就是Expdp/Impdp產品。在很多方面,Data Pump解決或者緩解了Exp/Imp的一些缺陷。

 

1、版本陷阱

 

經常使用Exp/Imp的朋友可能都有過這樣的經歷:將數據導出到本地機器上,再導入到一臺新服務器上的時候,經常會報版本錯誤。不同的數據庫服務器版本、不同的客戶端版本都會影響到我們導出數據dump文件,影響我們導入操作的成功。

 

這樣情況的本質原因有兩個:一個是Exp/Imp是一個客戶端工具,工具程序是駐留在客戶端上的。不同版本的客戶端必然帶來不同的Exp/Imp操作行為,寫入的Dump文件也必然有一定差異。這就考驗客戶端程序的兼容性。

 

另一個方面的原因是數據庫服務器的版本兼容性。每一個版本中,Oracle推出的新特性和屬性,我們很難要求低版本服務器來兼容支持。Oracle可以做到向后兼容,但是不能做到“預知未來”。

 

所以,在Exp/Imp的使用過程中,我們經常會討論的問題有兩個,一個是字符集的匹配,另一個就是版本導出策略。

 

Data Pump的使用過程中,也會有版本差異的問題。不過,Data Pump版本的架構特點決定了版本差異會得到一定程度的解決。

 

Exp/Imp工具不同的是,Data Pump是一個服務端工具,只運行在數據庫服務器端。這就讓Data Pump不受到客戶端版本的影響。同時,Oracle考慮到版本差異的影響,也給Data Pump進行了很多額外的配置。其中,version參數就是可以解決問題的方案。

 

2、實驗環境介紹

 

Data Pump10g開始推出,所以最大版本間的差異存在于Oracle 10g11g之間。筆者選擇兩個環境進行測試。

 

10g環境是Oracle Windows版本,創建Directory對象。

 

 

SQL> select * from v$version;

 

BANNER

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

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE        10.2.0.1.0         Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 – Production

 

 

SQL> create directory verdmp as 'D:\verdmp';

Directory created

 

 

11g環境采用Linux版本。

 

 

SQL> select * from v$version;

 

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 – Production

 

 

--創建Directory對象

[root@oracle11g /]# cd /verdmp/

[root@oracle11g verdmp]# pwd

/verdmp

 

SQL> create directory verdmp as '/verdmp';

Directory created.

 

 

3、從10g11g

 

首先我們測試從10g11g的情況。如果我們從10g中導出Dump文件,導入到11g上,有沒有什么問題呢?

 

我們先成10g上導出dmp文件。

 

 

C:\Documents and Settings\Administrator>expdp \"/ as sysdba\" directory=verdmp dumpfile=scottdmp.dmp schemas=scott

 

Export: Release 10.2.0.1.0 - Production on 星期六, 24 11, 2012 16:08:43

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 

連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

啟動 "SYS"."SYS_EXPORT_SCHEMA_01":  "/******** AS SYSDBA" directory=verdmp dumpf

ile=scottdmp.dmp schemas=scott

正在使用 BLOCKS 方法進行估計...

(篇幅原因,有省略……)

. . 導出了 "SCOTT"."BONUS"                                 0 KB       0

已成功加載/卸載了主表 "SYS"."SYS_EXPORT_SCHEMA_01"

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

SYS.SYS_EXPORT_SCHEMA_01 的轉儲文件集為:

  D:\VERDMP\SCOTTDMP.DMP

作業 "SYS"."SYS_EXPORT_SCHEMA_01" 已于 16:20:03 成功完成

 

 

目錄中存在導出的文件。

 

 

 D:\verdmp 的目錄

2012-11-24  16:08    <DIR>          .

2012-11-24  16:08    <DIR>          ..

2012-11-24  16:20             2,360 export.log

2012-11-24  16:20        69,062,656 SCOTTDMP.DMP

               2 個文件     69,065,016 字節

               2 個目錄 36,759,314,432 可用字節

 

 

導出成功,使用ftp傳導到Linux 11g環境。

 

 

[root@oracle11g verdmp]# ls -l

total 67520

-rw-r--r--  1 root root     2360 Nov 24 08:14 export.log

-rw-r--r--  1 root root 69062656 Nov 24 08:14 SCOTTDMP.DMP

 

 

 

 

 

[oracle@oracle11g ~]$ impdp userid=\'/ as sysdba\' directory=verdmp dumpfile=SCOTTDMP.DMP remap_schema=scott:test

 

Import: Release 11.2.0.1.0 - Production on Sat Nov 24 08:17:15 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Master table "SYS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded

Starting "SYS"."SYS_IMPORT_FULL_01":  userid="/******** AS SYSDBA" directory=verdmp dumpfile=SCOTTDMP.DMP remap_schema=scott:test

(篇幅原因,有省略……)

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Job "SYS"."SYS_IMPORT_FULL_01" completed with 2 error(s) at 08:17:39

 

 

導入成功。我們得到了結論:在使用Data Pump時候,從低版本導出的dmp文件可以導入到高版本的數據庫服務器上。這個過程,不需要額外的配置。

 

 

411g10g

 

下面嘗試將從11g轉移到10g版本。

 

 

[oracle@oracle11g ~]$ expdp userid=\'/ as sysdba\' directory=verdmp dumpfile=testdmp.dmp  schemas=test reuse_dumpfiles=y

 

Export: Release 11.2.0.1.0 - Production on Sat Nov 24 08:24:01 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."SYS_EXPORT_SCHEMA_01":  userid="/******** AS SYSDBA" directory=verdmp dumpfile=testdmp.dmp schemas=test reuse_dumpfiles=y

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 85.25 MB

(篇幅原因,有省略……)

Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:

  /verdmp/testdmp.dmp

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 08:24:43

 

 

導出文件成功,將dmp文件傳輸到10g環境去導入。

 

 

D:\verdmp>dir

 驅動器 D 中的卷沒有標簽。

 卷的序列號是 2294-1384

 

 D:\verdmp 的目錄

 

2012-11-24  17:00    <DIR>          .

2012-11-24  17:00    <DIR>          ..

2012-11-24  16:20             2,360 export.log

2012-11-24  16:20        69,062,656 SCOTTDMP.DMP

2012-11-24  17:00        69,103,616 testdmp.dmp

               3 個文件    138,168,632 字節

               2 個目錄 36,689,879,040 可用字節

 

--導入文件

D:\verdmp>impdp \"/ as sysdba\" directory=verdmp dumpfile=testdmp.dmp

 

Import: Release 10.2.0.1.0 - Production on 星期六, 24 11, 2012 17:02:19

 

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 

連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

ORA-39001: 參數值無效

ORA-39000: 轉儲文件說明錯誤

ORA-39142: 版本號 3.1 (在轉儲文件 "D:\verdmp\testdmp.dmp" ) 不兼容

 

 

 

報錯,明顯是版本錯誤。解決問題的方法,就是在導出expdp的時候,使用version參數限制dmp文件的格式。官方的文檔中,對version參數如下:

 

 

VERSION

Version of objects to export.

Valid keyword values are: [COMPATIBLE], LATEST or any valid database version.

 

 

我們重新導出文件。

 

 

[oracle@oracle11g ~]$ expdp userid=\'/ as sysdba\' directory=verdmp dumpfile=testdmp_10g.dmp  schemas=test reuse_dumpfiles=y version=10.2.0.1.0

 

Export: Release 11.2.0.1.0 - Production on Sat Nov 24 08:32:34 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."SYS_EXPORT_SCHEMA_01":  userid="/******** AS SYSDBA" directory=verdmp dumpfile=testdmp_10g.dmp schemas=test reuse_dumpfiles=y version=10.2.0.1.0

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 85.25 MB

(篇幅原因,有省略……)

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

Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:

  /verdmp/testdmp_10g.dmp

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 08:33:10

 

 

重新導入文件。

 

 

D:\verdmp>dir

 驅動器 D 中的卷沒有標簽。

 卷的序列號是 2294-1384

 

 D:\verdmp 的目錄

 

2012-11-24  17:13    <DIR>          .

2012-11-24  17:13    <DIR>          ..

2012-11-24  16:20             2,360 export.log

2012-11-24  17:02               378 import.log

2012-11-24  16:20        69,062,656 SCOTTDMP.DMP

2012-11-24  17:00        69,103,616 testdmp.dmp

2012-11-24  17:13        69,087,232 testdmp_10g.dmp

               5 個文件    207,256,242 字節

               2 個目錄 36,620,615,680 可用字節

 

--重新導入

D:\verdmp>impdp \"/ as sysdba\" directory=verdmp dumpfile=testdmp_10g.dmp remap_tablespace=test:tptest

 

Import: Release 10.2.0.1.0 - Production on 星期六, 24 11, 2012 17:16:52

 

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 

連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

已成功加載/卸載了主表 "SYS"."SYS_IMPORT_FULL_02"

啟動 "SYS"."SYS_IMPORT_FULL_02":  "/******** AS SYSDBA" directory=verdmp dumpfil

e=testdmp_10g.dmp remap_tablespace=test:tptest

處理對象類型 SCHEMA_EXPORT/USER

處理對象類型 SCHEMA_EXPORT/SYSTEM_GRANT

處理對象類型 SCHEMA_EXPORT/ROLE_GRANT

處理對象類型 SCHEMA_EXPORT/DEFAULT_ROLE

處理對象類型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

處理對象類型 SCHEMA_EXPORT/TYPE/TYPE_SPEC

ORA-39083: 對象類型 TYPE 創建失敗, 出現錯誤:

ORA-02304: 無效的對象標識符文字

失敗的 sql :

CREATE TYPE "TEST"."T_INFO"   OID '5F88C5F6877C43468A5C2CE5F53CEA48' is object (

id number);

 

ORA-39083: 對象類型 TYPE 創建失敗, 出現錯誤:

ORA-02304: 無效的對象標識符文字

失敗的 sql :

CREATE TYPE "TEST"."T_INFOLIST"   OID '49E54F26C4CC4134B65C15C1D91026FC' is tabl

e of t_info;

 

處理對象類型 SCHEMA_EXPORT/DB_LINK

處理對象類型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE

(篇幅原因,有省略……)

處理對象類型 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE

ORA-39082: 對象類型 ALTER_PROCEDURE:"TEST"."P_TEST_NC" 已創建, 但帶有編譯警告

處理對象類型 SCHEMA_EXPORT/VIEW/VIEW

ORA-39082: 對象類型 VIEW:"TEST"."V_T1" 已創建, 但帶有編譯警告

處理對象類型 SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY

處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

處理對象類型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

作業 "SYS"."SYS_IMPORT_FULL_02" 已經完成, 但是有 4 個錯誤 ( 17:18:11 完成)

 

 

存在報錯,但是導入的版本問題已經不存在了。這個問題筆者曾經解決過,詳細參見(http://space.itpub.net/17203031/viewspace-732501)。

 

我們通過transform參數來解決這個問題。

 

 

D:\verdmp>impdp \"/ as sysdba\" directory=verdmp dumpfile=testdmp_10g.dmp remap_tablespace=test:tptest transform=oid:n

 

Import: Release 10.2.0.1.0 - Production on 星期六, 24 11, 2012 17:20:30

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

已成功加載/卸載了主表 "SYS"."SYS_IMPORT_FULL_02"

啟動 "SYS"."SYS_IMPORT_FULL_02":  "/******** AS SYSDBA" directory=verdmp dumpfile=testdmp_10g.dmp remap_tablespace=test:tptest transform=oid:n

(篇幅原因,有省略……)

處理對象類型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

作業 "SYS"."SYS_IMPORT_FULL_02" 已經完成, 但是有 2 個錯誤 ( 17:20:41 完成)

 

 

結論:當從高版本數據庫服務器導出,試圖導入到低版本數據庫服務器的時候,會存在版本沖突問題。解決的方法在導出expdp過程中,使用version參數約定版本號。

 

注意,impdp程序也有version參數。但是對解決沖突不起作用。Impdpversion是用于生成兼容性SQL語句的。

 

 

VERSION

Version of objects to import.

Valid keywords are: [COMPATIBLE], LATEST or any valid database version.

Only valid for NETWORK_LINK and SQLFILE.

 

 

即使我們在impdp中使用version,也不能起到兼容性作用。

 

 

D:\verdmp>impdp \"/ as sysdba\" directory=verdmp dumpfile=testdmp.dmp remap_tablespace=test:tptest transform=oid:n version=10.2.0.1.0

 

Import: Release 10.2.0.1.0 - Production on 星期六, 24 11, 2012 17:24:33

 

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 

連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

ORA-39001: 參數值無效

ORA-39000: 轉儲文件說明錯誤

ORA-39142: 版本號 3.1 (在轉儲文件 "D:\verdmp\testdmp.dmp" ) 不兼容

 


Oracle Data Pump而言,版本問題較exp/imp容易的多了。目前Data Pump推出的版本只有10g11g,相信隨著版本的不斷演進,數據泵跨版本移植的場景會越來越多。

看完上述內容,你們對如何使用version參數解決Oracle數據泵版本差異有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安远县| 察雅县| 洛隆县| 灵山县| 青岛市| 屏边| 青阳县| 日照市| 南安市| 囊谦县| 黄山市| 运城市| 石城县| 南木林县| 吉安市| 富宁县| 汾西县| 含山县| 蕉岭县| 碌曲县| 长治县| 甘南县| 舞阳县| 马尔康县| 黎平县| 甘孜县| 武宣县| 广饶县| 武邑县| 米泉市| 璧山县| 许昌市| 澜沧| 琼结县| 井冈山市| 都昌县| 宣化县| 改则县| 同江市| 英吉沙县| 乌鲁木齐县|