Oracle 低版本匯入高版本按使用者expdp/impdp

urgel_babay發表於2016-02-29

  因開發的需要,要分別把2個生產庫中各自相同的一個使用者下的的資料匯入到測試庫中
一、Oracle環境 (這裡分別用iP最後的數字代稱)
9 庫 Oracle :11.2.0.3
5 庫 Oracle :11.1.0.6
13庫 Oracle :11.2.0.4
     5庫和9庫下的u_pd_dw使用者,匯入13庫之後的對應情況:

   使用者  預設表空間  對應庫  使用者  預設表空間
 5  u_pd_dw  TBS_PD_PW  13  u_sd_ca  TBS_SD_CA
 9  u_pd_dw  TBS_PD_PW  13  u_sd_sh  TBS_SD_SH

二、匯出方案
1、建立目錄。
2、執行匯出命令。
5庫:expdp system/oracle directory=dir dumpfile=u_pd_dw.dmp  logfile=u_pd_dw.log  schemas=u_pd_dw COMPRESSION=all  parallel=8
9庫:expdp system/oracle directory=dir dumpfile=u_pd_dw.dmp  logfile=u_pd_dw.log  schemas=u_pd_dw COMPRESSION=all  parallel=16

具體實施匯出:
5庫:

點選(此處)摺疊或開啟

  1. [root@zhang5 dmp55]# expdp system/oracle directory=dir dumpfile=u_pd_dw5.dmp logfile=u_pd_dw5.log schemas=u_pd_dw COMPRESSION=all parallel=8;
  2. Export: Release 11.1.0.6.0 - 64bit Production on Saturday, 01 November, 2014 17:49:45
  3. Copyright (c) 2003, 2007, Oracle. All rights reserved.
  4. ;;;
  5. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  7. Starting \"SYSTEM\".\"SYS_EXPORT_SCHEMA_02\": system/******** directory=dir dumpfile=u_pd_dw5.dmp logfile=u_pd_dw5.log schemas=u_pd_dw COMPRESSION=all para
  8. llel=8
  9. Estimate in progress using BLOCKS method...
  10. Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
  11. Total estimation using BLOCKS method: 38.90 GB
  12. Processing object type SCHEMA_EXPORT/USER

  13. ---------------------
  14. . . exported \"U_PD_DW\".\"T99_COD_STATE\" 0 KB 0 rows
  15. Master table \"SYSTEM\".\"SYS_EXPORT_SCHEMA_02\" successfully loaded/unloaded
  16. ******************************************************************************
  17. Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_02 is:
  18.   /orabak/20141101/u_pd_dw5.dmp
  19. Job \"SYSTEM\".\"SYS_EXPORT_SCHEMA_02\" successfully completed at 18:31:05
  20. [root@zhang5 dmp55]#
說明一下:由於兩個庫的物理機器配置不同,所以並行度也有所差異
9庫:

點選(此處)摺疊或開啟

  1. [oracle@zhang9 20141101]$ expdp system/oracle directory=dir dumpfile=u_pd_dw9.dmp logfile=u_pd_dw9.log schemas=u_pd_dw COMPRESSION=all parallel=16
  2. Export: Release 11.2.0.3.0 - Production on Sat Nov 1 11:16:25 2014
  3. Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
  4. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  5. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  6. Starting \"SYSTEM\".\"SYS_EXPORT_SCHEMA_01\": system/******** directory=dir dumpfile=u_pd_dw9.dmp logfile=u_pd_dw9.log schemas=u_pd_dw COMPRESSION=all parallel=16
  7. Estimate in progress using BLOCKS method...
  8. Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
  9. Total estimation using BLOCKS method: 246.9 GB
  10. Processing object type SCHEMA_EXPORT/USER
  11. . . exported \"U_PD_DW\".\"T99_COD_STATE\" 0 KB 0 rows
  12. Master table \"SYSTEM\".\"SYS_EXPORT_SCHEMA_01\" successfully loaded/unloaded
  13. *********************** 略 *******************************************************
  14. Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
  15.   /orabak/20141101/u_pd_dw9.dmp
  16. Job \"SYSTEM\".\"SYS_EXPORT_SCHEMA_01\" successfully completed at 13:55:27
ok! 成功匯出

三、匯入方案
核心命令
impdp system/oracle directory=dir89  dumpfile=u_pd_dw.dmp  parallel=3 schemas=u_pd_dw remap_schema=u_pd_dw:u_sd_sh remap_tablespace=TBS_PD_PW:TBS_SD_SH
impdp system/oracle directory=dir55  dumpfile=u_pd_dw.dmp  parallel=3 schemas=u_pd_dw remap_schema=u_pd_dw:u_sd_ca remap_tablespace=TBS_PD_PW:TBS_SD_CA
1、檢查匯出的使用者已經相應的表空間
col object_name  format a26
col tablespace_name  format a26
select o.object_name,o.NAMESPACE,t.tablespace_name,i.TABLESPACE_NAME
from dba_objects o
,dba_tables t
,dba_indexes i
where t.owner='U_PD_DW'
and t.OWNER=o.OWNER
and i.OWNER=o.OWNER;
----- 這個是我寫的sql,我在匯入的時候,報錯了。然後根據報錯的資訊,找到需要建立哪些表空間和其他相關聯的的使用者。
----- 相關聯的的使用者只需要建立,匯入成功後,也可drop 掉。
----- 對於相關聯的的表空間,要根據原來資料庫裡面的實際情況,來設定大小和增長量。只要足夠用就可以了。

2、先建立相應的表空間。
3、建立相關的使用者,許可權,預設表空間。
4、建立目錄。

具體匯入實施:

1、根據查詢到的結果,建立表空間----- 主要是根據自己的實際情況,如果你熟悉每個資料庫,就更方便了
        TBS_SD_CA
create tablespace TBS_SD_CA datafile '/u01/oracle/oradata/DEVBIREPORT/TBS_SD_CA01.dbf' size 10G autoextend on next 100M maxsize 20G;
alter tablespace TBS_SD_CA add datafile '/u02/oradata/TBS_SD_CA02.dbf' size 5G autoextend on next 10M maxsize 25G;
create user u_sd_ca identified by belle default tablespace TBS_SD_CA temporary tablespace TEMP; 
grant dba,connect,resource,CREATE TABLE,create view,create procedure TO u_sd_ca;
        TBS_SD_SH
create tablespace TBS_SD_SH datafile '/u01/oracle/oradata/DEVBIREPORT/TBS_SD_SH01.dbf' size 1G autoextend on next 20M maxsize 30G;
create user u_sd_sh identified by belle default tablespace TBS_SD_SH temporary tablespace TEMP; 
grant dba,connect,resource,CREATE TABLE,create view,create procedure TO u_sd_sh;
提醒:這裡只給出部分的,根據實際情況來預算匯入的資料量大小,預先的設定表空間的大小,增長量,總大小和資料檔案的個數。
         以免在匯入的過程中,由於表空間不足而使匯入失敗。自動增長量,先設定大一些,匯入完成後再調小。
2、目錄directory
 create directory dir9 as '/u01/oracle/imp/dmp9';    ---- 一般情況下是sys使用者建立,然後授權給其他使用者。當然也可以授權其他使用者建立directory的許可權。總之能用就行
 grant read,write on directory dir89 to public;         ---- 我是為了好區分,才這樣
 create directory dir5 as '/u01/oracle/imp/dmp5';
 grant read,write on directory dir89 to public;

9庫:

點選(此處)摺疊或開啟

  1. [oracle@bidevelop4 dmp89]$ impdp system/oracle directory=dir89 dumpfile=u_pd_dw.dmp parallel=3 schemas=u_pd_dw remap_schema=u_pd_dw:u_sd_sh remap_tablespace=TBS_PD_DW:TBS_SD_SH
  2. Import: Release 11.2.0.4.0 - Production on Mon Nov 3 21:06:45 2014
  3. Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
  4. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  5. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  6. Master table \"SYSTEM\".\"SYS_IMPORT_SCHEMA_01\" successfully loaded/unloaded
  7. Starting \"SYSTEM\".\"SYS_IMPORT_SCHEMA_01\": system/******** directory=dir89 dumpfile=u_pd_dw.dmp parallel=3 schemas=u_pd_dw remap_schema=u_pd_dw:u_sd_sh remap_tablespace=TBS_PD_DW:TBS_SD_SH
  8. Processing object type SCHEMA_EXPORT/USER
  9. ORA-31684: Object type USER:\"U_SD_SH\" already exists
  10. Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
  11. Processing object type SCHEMA_EXPORT/ROLE_GRANT
  12. Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
  13. Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
  14. Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
  15. Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC
  16. ORA-31684: Object type TYPE:\"U_SD_SH\".\"QUEST_SOO_ALERTTRACE_LINE_TYP\" already exists
  17. ORA-31684: Object type TYPE:\"U_SD_SH\".\"QUEST_SOO_ALERTTRACE_LOG_TYP\" already exists
  18. Processing object type SCHEMA_EXPORT/TYPE/GRANT/OWNER_GRANT/OBJECT_GRANT
  19. -------略--- 
  20. Processing object type SCHEMA_EXPORT/TABLE/INDEX/BITMAP_INDEX/INDEX
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/BITMAP_INDEX/INDEX_STATISTICS
    Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully completed  at Wed Nov 5 05:53:59 2014 elapsed 1 08:47:13
現在是2014.11.05.早上9點
好了,9庫的資料已經匯入到了13庫,耗時8小時47分13秒。
由於時間的原因,5庫的就不貼出來。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30936525/viewspace-2016700/,如需轉載,請註明出處,否則將追究法律責任。

相關文章