oracle資料泵方式更換資料預設表空間.
在oracle10g之前,匯入和匯出(imp/exp)都作為客戶端程式執行,匯出的資料由資料庫例項讀出,透過網路連線傳輸到匯出客戶程式,然後寫到磁碟上。所有資料在整個匯出程式下透過單執行緒操作,如果再匯出過程中發生網路中斷或客戶端程式異常,都會導致匯出操作失敗。
在oracle10g中,推出了伺服器端的實用程式----資料泵(data pump)。它的所有工作都由資料庫例項來完成,資料庫可以並行來處理這些工作。透過impdp/expdp執行的命令實際上都是在呼叫server端的API在執行操作,一旦一個任務被排程或執行,客戶端就可以退出連線,任務會在server端繼續執行。如果一個7小時的匯出任務在執行了6小時後因為磁碟空間不夠而失敗,那麼也不用從頭開始重新啟動該任務,此時可以連線到這個失敗的任務,增加一個或多個新的轉儲(dmp)檔案,從失敗的地方重新啟動,這樣只需1小時就可以完成任務了。
源平臺
OS:redhat linux as4 DB:oracle 10.2.0.4 instance_name:linux10g |
目的平臺
OS:windows2003 DB:oracle 10.2.0.1 instance_name:ora11g |
源平臺 redhat linux as4 + oracle 10.2.0.4
1:首先在作業系統層面建立一個目錄 /oradata/expdir ,然後修改該目錄的使用者為oracle ,並授予該目錄讀寫許可權
[oracle@VM-10 ~]$ sqlplus / as sysdba
SQL> create or replace directory expdir as '/oradata/expdir';
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------------------------------------------------------------
SYS EXPDIR /oradata/expdir
SQL> grant read,write on directory EXPDIR to scott;
2:檢視scott使用者所在的表空間
SQL> select username,default_tablespace from dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ -------------
SCOTT USERS
可以看到scott使用者預設的表空間是 USERS ,也就是說scott使用者下的所有物件都屬於 USERS表空間
3:在源平臺匯出資料
[oracle@VM-10 expdir]$ expdp scott/tiger directory=expdir dumpfile=scott_20131008_%U.dmp parallel=4 version=10.2.0.1 logfile=scott1008.log
Export: Release 10.2.0.4.0 - 64bit Production on Wednesday, 09 October, 2013 11:22:37
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SCOTT"."SYS_EXPORT_SCHEMA_01": scott/******** directory=expdir dumpfile=scott_20131008_%U.dmp parallel=4 version=10.2.0.1 logfile=scott1008.log
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 192 KB
. . exported "SCOTT"."DEPT" 5.648 KB 4 rows
. . exported "SCOTT"."EMP" 7.812 KB 14 rows
. . exported "SCOTT"."SALGRADE" 5.578 KB 5 rows
. . exported "SCOTT"."BONUS" 0 KB 0 rows
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/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:
/oradata/expdir/scott_20131008_01.dmp
/oradata/expdir/scott_20131008_02.dmp
Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 11:22:42
注意:這裡面加了引數 version=10.2.0.1 ,表示匯出的dmp檔案將要匯入到版本為10.2.0.1 的目的庫中
然後將匯出的dmp檔案上傳到目的庫所在的匯入目錄中(expdir)
目的平臺 windows2003 +oracle 10.2.0.1
1:建立新的表空間
C:\>sqlplus / as sysdba
SQL> create tablespace trans datafile 'C:\oradata\wn10g\trans.dbf' size 20m;
表空間已建立。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
TRANS
IDX_TBS
TEST
2:檢視匯入目錄
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
--------------------------------------------- -----------------------------------
SYS EXPDIR C:\expdir
3:建立新的使用者 trans01 ,指定該使用者的預設表空間為 TRANS,並授權
SQL> create user trans01 identified by trans01 default tablespace TRANS;
SQL> grant dba to trans01;
SQL> grant read,write on directory expdir to trans01;
4:在目的庫中匯入dmp檔案
將原使用者scott的資料匯入到trans01使用者下,儲存的表空間從users變更到test ,同時開啟4個並行程式執行
C:\>impdp trans01/trans01 dumpfile=scott_20131008_01.dmp,scott_20131008_02.dmp directory=expdir remap_schema=scott:trans01 remap_tablespace=users:test content=all parallel=4
Import: Release 10.2.0.1.0 - Production on 星期三, 09 10月, 2013 11:54:44
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
已成功載入/解除安裝了主表 "TRANS01"."SYS_IMPORT_FULL_01"
啟動 "TRANS01"."SYS_IMPORT_FULL_01": trans01/******** dumpfile=scott_20131008_0
1.dmp,scott_20131008_02.dmp directory=expdir remap_schema=scott:trans01 remap_ta
blespace=users:test content=all parallel=4
處理物件型別 SCHEMA_EXPORT/USER
ORA-31684: 物件型別 USER:"TRANS01" 已存在
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "TRANS01"."DEPT" 5.648 KB 4 行
. . 匯入了 "TRANS01"."EMP" 7.812 KB 14 行
. . 匯入了 "TRANS01"."SALGRADE" 5.578 KB 5 行
. . 匯入了 "TRANS01"."BONUS" 0 KB 0 行
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作業 "TRANS01"."SYS_IMPORT_FULL_01" 已經完成, 但是有 1 個錯誤 (於 11:54:57 完成)
5:驗證匯入的結果是否正確
C:\>sqlplus trans01/trans01
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
SQL> select index_name,table_owner,table_name,tablespace_name from user_indexes;
INDEX_NAME TABLE_OWNER TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------ -----------------------------------------------
PK_DEPT TRANS01 DEPT TEST
PK_EMP TRANS01 EMP TEST
SQL> select count(*) from emp;
COUNT(*)
-----------------------
14
可以看到新匯入的表及表上的所有都在test表空間,匯入成功
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-1722295/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫設定預設表空間Oracle資料庫
- 12c 資料泵傳輸表空間
- 資料泵 TTS(傳輸表空間技術)TTS
- oracle清除資料庫表空間Oracle資料庫
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- 【SQL】查詢及修改資料庫預設表空間SQL資料庫
- Oracle 表空間與資料檔案Oracle
- oracle 資料檔案表空間管理Oracle
- Oracle修改預設表空間和預設臨時表空間Oracle
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- Oracle資料泵建立使用者避坑(表空間配額、許可權)Oracle
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- 【TABLESPACE】Oracle資料庫預設永久表空間的查詢及刪除方法Oracle資料庫
- ORACLE 資料泵Oracle
- oracle資料泵Oracle
- oracle 表空間 資料檔案 筆記Oracle筆記
- Oracle 表空間資料檔案遷移Oracle
- 對oracle資料表空間的計算Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 大資料匯入之MySql設計之空間換時間的設計變更大資料MySql
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- 表空間中有資料也可以壓縮表空間(資料檔案)大小
- 如何檢視Oracle資料庫表空間大小(空閒、已使用),是否要增加表空間的資料檔案...Oracle資料庫
- 資料庫和表空間資料移動資料庫
- oracle 普通表空間資料檔案壞塊Oracle
- oracle 回收表空間的資料檔案大小Oracle
- 誤刪oracle資料庫表空間檔案Oracle資料庫
- 12c 資料泵提取建表空間語句和建表語句
- oracle 資料泵解析Oracle
- oracle之資料泵Oracle
- 使用oracle外部表進行資料泵解除安裝資料Oracle
- 更改當前資料庫預設臨時表空間注意事項資料庫
- oracle的空間資料庫:Oracle資料庫
- 清理oracle資料庫空間Oracle資料庫
- Oracle使用資料泵匯出匯入表Oracle
- Oracle使用資料泵在異機之間匯出匯入表Oracle
- 檢視資料庫表空間資料庫
- 表空間的資料字典管理