用dbms_streams_tablespace_adm表空間的遷移(3)
這次遷移的表空間由於儲存在異地,因此無法透過PULL過程來實現,比如分成CLONE和ATTACH兩個階段。且由於當前的表空間包含多個資料檔案,因此不能使用SIMPLE方法,只能透過CLONE_TABLESPACES或DETACH_TABLESPACES過程來實現。又因為源資料庫表空間不打算刪除,因此使用CLONE_TABLESPACES過程來實現遷移。[@more@]資料庫版本、資料塊大小、以及字符集和自包含的檢查都跳過
源資料庫:
需先建立存放dump file的目錄
SQL> CREATE OR REPLACE DIRECTORY D_TRANS AS '/u01/trans';
Directory created.
SQL> grant read,write on directory D_TRANS to system;
Grant succeeded.
SQL> select * from dba_directories where directory_name like 'D_DATAFILE%'
2 union all
3 select * from dba_directories where directory_name like 'D_TRANS';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ --------------- --------------------------------------------------
SYS D_DATAFILE /u01/app/oracle/oradata/orcl
SYS D_DATAFILE_2 /u02/app/oracle/oradata/orcl
SYS D_TRANS /u01/trans
下面就可以執行CLONE_TABLESPACES過程了,需要注意,這個過程的輸入引數包括了索引組織表型別和記錄,因此需要透過建立一個
PL/SQL匿名塊來完成呼叫,注意輸入引數變數的宣告需要用DBMS_STREAMS_TABLESPACE_ADM包中的型別進行宣告,否則呼叫會報錯:
SQL> SET SERVEROUT ON SIZE 1000000
SQL> DECLARE
2 V_JOB_NAME VARCHAR2(30) := 'MY_CLONE_TABLESPACES';
3 V_TABLESPACE_NAME DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET;
4 V_DIRECTORY_NAME DBMS_STREAMS_TABLESPACE_ADM.DIRECTORY_OBJECT_SET;
5 V_DUMPFILE DBMS_STREAMS_TABLESPACE_ADM.FILE;
6 V_LOGFILE DBMS_STREAMS_TABLESPACE_ADM.FILE;
7 V_DATAFILES DBMS_STREAMS_TABLESPACE_ADM.FILE_SET;
8 BEGIN
9 V_TABLESPACE_NAME(1) := 'NADSPACE';
10 V_DIRECTORY_NAME(1) := 'D_TRANS';
10 V_DUMPFILE.DIRECTORY_OBJECT := 'D_TRANS';
12 V_DUMPFILE.FILE_NAME := 'NADSPACE_091027.dp';
13 V_LOGFILE.DIRECTORY_OBJECT := 'D_TRANS';
14 V_LOGFILE.FILE_NAME := 'NADSPACE_091027.log';
15 DBMS_STREAMS_TABLESPACE_ADM.CLONE_TABLESPACES(V_JOB_NAME,
16 V_TABLESPACE_NAME,
17 V_DUMPFILE,
18 V_DIRECTORY_NAME,
19 NULL,
20 V_LOGFILE,
21 V_DATAFILES);
22 FOR I IN 1..V_DATAFILES.COUNT LOOP
23 DBMS_OUTPUT.PUT_LINE(V_DATAFILES(I).FILE_NAME);
24 END LOOP;
25 END;
26 /
NADSPACE001.dbf
NADSPACE002.dbf
NADSPACE003.dbf
NADSPACE004.dbf
PL/SQL procedure successfully completed.
[oracle@rhel130 trans]$ pwd
/u01/trans
[oracle@rhel130 trans]$ ls
NADSPACE001.dbf NADSPACE003.dbf NADSPACE_091027.dp
NADSPACE002.dbf NADSPACE004.dbf NADSPACE_091027.log
可以看到在directory裡除生成了NADSPACE_091027.dp和NADSPACE_091027.log外,還把此表空間的datafile都copy到這個目錄,這個對
於磁碟空間有限的系統會有點問題。
看一下日誌檔案:
[oracle@rhel130 trans]$ cat NADSPACE_091027.log
Starting "SYSTEM"."MY_CLONE_TABLESPACES":
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/INDEX
Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "SYSTEM"."MY_CLONE_TABLESPACES" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.MY_CLONE_TABLESPACES is:
/u01/trans/NADSPACE_091027.dp
Job "SYSTEM"."MY_CLONE_TABLESPACES" successfully completed at 17:45:40
至此CLONE_TABLESPACES的過程完成。
源資料庫:
需先建立存放dump file的目錄
SQL> CREATE OR REPLACE DIRECTORY D_TRANS AS '/u01/trans';
Directory created.
SQL> grant read,write on directory D_TRANS to system;
Grant succeeded.
SQL> select * from dba_directories where directory_name like 'D_DATAFILE%'
2 union all
3 select * from dba_directories where directory_name like 'D_TRANS';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ --------------- --------------------------------------------------
SYS D_DATAFILE /u01/app/oracle/oradata/orcl
SYS D_DATAFILE_2 /u02/app/oracle/oradata/orcl
SYS D_TRANS /u01/trans
下面就可以執行CLONE_TABLESPACES過程了,需要注意,這個過程的輸入引數包括了索引組織表型別和記錄,因此需要透過建立一個
PL/SQL匿名塊來完成呼叫,注意輸入引數變數的宣告需要用DBMS_STREAMS_TABLESPACE_ADM包中的型別進行宣告,否則呼叫會報錯:
SQL> SET SERVEROUT ON SIZE 1000000
SQL> DECLARE
2 V_JOB_NAME VARCHAR2(30) := 'MY_CLONE_TABLESPACES';
3 V_TABLESPACE_NAME DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET;
4 V_DIRECTORY_NAME DBMS_STREAMS_TABLESPACE_ADM.DIRECTORY_OBJECT_SET;
5 V_DUMPFILE DBMS_STREAMS_TABLESPACE_ADM.FILE;
6 V_LOGFILE DBMS_STREAMS_TABLESPACE_ADM.FILE;
7 V_DATAFILES DBMS_STREAMS_TABLESPACE_ADM.FILE_SET;
8 BEGIN
9 V_TABLESPACE_NAME(1) := 'NADSPACE';
10 V_DIRECTORY_NAME(1) := 'D_TRANS';
10 V_DUMPFILE.DIRECTORY_OBJECT := 'D_TRANS';
12 V_DUMPFILE.FILE_NAME := 'NADSPACE_091027.dp';
13 V_LOGFILE.DIRECTORY_OBJECT := 'D_TRANS';
14 V_LOGFILE.FILE_NAME := 'NADSPACE_091027.log';
15 DBMS_STREAMS_TABLESPACE_ADM.CLONE_TABLESPACES(V_JOB_NAME,
16 V_TABLESPACE_NAME,
17 V_DUMPFILE,
18 V_DIRECTORY_NAME,
19 NULL,
20 V_LOGFILE,
21 V_DATAFILES);
22 FOR I IN 1..V_DATAFILES.COUNT LOOP
23 DBMS_OUTPUT.PUT_LINE(V_DATAFILES(I).FILE_NAME);
24 END LOOP;
25 END;
26 /
NADSPACE001.dbf
NADSPACE002.dbf
NADSPACE003.dbf
NADSPACE004.dbf
PL/SQL procedure successfully completed.
[oracle@rhel130 trans]$ pwd
/u01/trans
[oracle@rhel130 trans]$ ls
NADSPACE001.dbf NADSPACE003.dbf NADSPACE_091027.dp
NADSPACE002.dbf NADSPACE004.dbf NADSPACE_091027.log
可以看到在directory裡除生成了NADSPACE_091027.dp和NADSPACE_091027.log外,還把此表空間的datafile都copy到這個目錄,這個對
於磁碟空間有限的系統會有點問題。
看一下日誌檔案:
[oracle@rhel130 trans]$ cat NADSPACE_091027.log
Starting "SYSTEM"."MY_CLONE_TABLESPACES":
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/INDEX
Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "SYSTEM"."MY_CLONE_TABLESPACES" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.MY_CLONE_TABLESPACES is:
/u01/trans/NADSPACE_091027.dp
Job "SYSTEM"."MY_CLONE_TABLESPACES" successfully completed at 17:45:40
至此CLONE_TABLESPACES的過程完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1028181/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用dbms_streams_tablespace_adm表空間的遷移(4)
- 用dbms_streams_tablespace_adm來表空間的遷移(2)
- 用dbms_streams_tablespace_adm來表空間的遷移(1)
- 表空間遷移
- 遷移表空間
- 【遷移】表空間transport
- RMAN遷移表空間
- 遷移表到新的表空間
- ORACLE表批量遷移表空間Oracle
- 遷移SYSTEM表空間為本地管理表空間
- 基於可傳輸表空間的表空間遷移
- expdp/impdp 遷移表空間
- 跨平臺表空間遷移(傳輸表空間)
- Oracle中表空間、表、索引的遷移Oracle索引
- table/index/LOBINDEX遷移表空間Index
- lob欄位表空間遷移
- Oracle 不同平臺間表空間遷移Oracle
- MySQL 遷移表空間,備份單表MySql
- 表、索引遷移表空間alter table move索引
- 空間遷移
- 分割槽表對應的表空間遷移案例
- 表空間遷移辦法補充
- 使用RMAN簡單遷移表空間
- 資料庫物件遷移表空間資料庫物件
- 【資料遷移】使用傳輸表空間遷移資料
- 用傳輸表空間跨平臺遷移資料
- 利用PLSQL實現表空間的遷移(一)SQL
- 利用PLSQL實現表空間的遷移(二)SQL
- 利用PLSQL實現表空間的遷移(四)SQL
- 利用PLSQL實現表空間的遷移(三)SQL
- 利用PLSQL實現表空間的遷移(五)SQL
- 線上遷移表空間資料檔案
- 不同使用者,不同表空間遷移
- Oracle 表空間資料檔案遷移Oracle
- 手工段管理表空間遷移後的調整
- 利用RMAN遷移表空間碰到的問題(五)
- 利用RMAN遷移表空間碰到的問題(四)
- 利用RMAN遷移表空間碰到的問題(三)