oracle實驗記錄 (transport tablespace(EXPDP/IMPDP))

fufuh2o發表於2009-09-23

使用EXPDP/IMPDP(EXP/IMP)方式
oracle 10g 允許在不同平臺 transport tablespace
SQL> desc v$transportable_platform;
 名稱                                      是否為空? 型別
 ----------------------------------------- -------- ----------------------------
 PLATFORM_ID                                        NUMBER
 PLATFORM_NAME                                      VARCHAR2(101)
 ENDIAN_FORMAT                                      VARCHAR2(14)

SQL> select platform_name from v$transportable_platform;

PLATFORM_NAME
--------------------------------------------------------------------------------
Solaris[tm] OE (32-bit)
Solaris[tm] OE (64-bit)
Microsoft Windows IA (32-bit)
Linux IA (32-bit)
AIX-Based Systems (64-bit)
HP-UX (64-bit)
HP Tru64 UNIX
HP-UX IA (64-bit)
Linux IA (64-bit)
HP Open VMS
Microsoft Windows IA (64-bit)

PLATFORM_NAME
--------------------------------------------------------------------------------
IBM zSeries Based Linux
Linux 64-bit for AMD
Apple Mac OS
Microsoft Windows 64-bit for AMD
Solaris Operating System (x86)
IBM Power Based Linux

已選擇17行
以上是oracle所支援的平臺


有些限制條件
1.source db 與target DB 有相同的字符集,nls_database_parameters 中NLS_CHARACTERSET,NLS_NCHAR_CHARACTERSET必須一樣
2.不能有同名tablespace,不過 10G 可用alter tablespace rename解決
3.SYSTEM TABLESPACE 不能transport,sys物件在的tablespace不能transport
4.是不是自包含的(用TRANSPORT_FULL_CHECK可以解決 )不過匯出INDEX TABLESPACE 沒匯出依賴的表tablespace還是會報錯,分割槽表沒全部包含,表lob列所在tablespace沒包含 都會報錯
C:\>expdp  system/a831115@xh directory=expdpt dumpfile=e.dmp transport_tablespaces=
system

Export: Release 10.2.0.1.0 - Production on 星期三, 23 9月, 2009 12:12:14

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-39134: 不能包含作為可傳輸表空間的 "SYSTEM" 表空間~~~~~~~~~~~~SYSTEM 不行

SQL> conn / as sysdba
已連線。
SQL> create table t6 (a int) tablespace testxh;

表已建立。


SQL> alter tablespace testxh read only(使用RMAN TRANSPORT TABLESPACE 不用read only)
  2  ;

表空間已更改。
C:\>expdp  system/a831115@xh directory=expdpt dumpfile=e.dmp transport_tablespaces=
testxh

Export: Release 10.2.0.1.0 - Production on 星期三, 23 9月, 2009 12:13:39

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
啟動 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/********@xh directory=expdpt d
umpfile=e.dmp transport_tablespaces=testxh
ORA-39123: 資料泵可傳輸的表空間作業中止
ORA-29341: 可傳送集不是自包含的~~~~~~~~~~~~~~~~~~~中含有SYS物件不行

 

表已刪除。

SQL> conn / as sysdba
已連線。
SQL> execute dbms_tts.transport_set_check('testxh',true);檢查下時候可以transport

SQL> select * from transport_set_violations;

VIOLATIONS
--------------------------------------------------------------------------------
Sys owned object  T6 in tablespace TESTXH not allowed in pluggable set

有內容就是有錯誤,解決相關問題
SQL> alter table t6 move tablespace users;

表已更改。


SQL> execute dbms_tts.transport_set_check('testxh',true);

PL/SQL 過程已成功完成。

SQL> select * from transport_set_violations;

未選定行~~~~~~~~~~~~~可以transport 該tablespace了

另外對於
dbms_tts.transport_set_check 有以下引數
引數名稱                       型別                    輸入/輸出預設值?
------------------------------ ----------------------- ------ --------
 TS_LIST                        CLOB                    IN
 INCL_CONSTRAINTS               BOOLEAN                 IN     DEFAULT
 FULL_CHECK                     BOOLEAN                 IN     DEFAULT

不指定FULL_CHECK DEFAULT n 不會檢查tablespace是否是自包含的
SQL> conn xh/a123
已連線。
SQL> select count(*) from t1;

  COUNT(*)
----------
         1

SQL> alter table t1 move tablespace testxh;

表已更改。

SQL> create index t1_ind on t1(a);

索引已建立。

SQL> select tablespace_name from user_indexes where index_name='T1_IND';

TABLESPACE_NAME
------------------------------
USERS

SQL> select tablespace_name from user_tables where table_name='T1';

TABLESPACE_NAME
------------------------------
TESTXH

上面可以看到index與table不在同一tablespace
SQL> conn / as sysdba
已連線。
SQL> execute dbms_tts.transport_set_check('testxh',true);

PL/SQL 過程已成功完成。

SQL> select * from transport_set_violations;

未選定行~~~~~~~~~~~~~~~~~~~沒檢查出來INDEX 與table不在同一tablespace

SQL> execute dbms_tts.transport_set_check('testxh',true,true);

PL/SQL 過程已成功完成。

SQL> select * from transport_set_violations;

VIOLATIONS
--------------------------------------------------------------------------------
Index XH.T1_IND in tablespace USERS points to table XH.T1 in tablespace TESTXH
檢查出來了 INDEX 與table不在同一tablespace
SQL> conn xh/a123
已連線。


SQL> alter index t1_ind rebuild tablespace testxh; 解決

索引已更改。


SQL> conn / as sysdba
已連線。
SQL> execute dbms_tts.transport_set_check('testxh',true,true);

PL/SQL 過程已成功完成。

SQL> select * from transport_set_violations;

未選定行


SQL> alter tablespace testxh read only;

表空間已更改。

C:\>expdp  system/a831115@xh directory=expdpt dumpfile=e.dmp transport_tablespaces=
testxh

Export: Release 10.2.0.1.0 - Production on 星期三, 23 9月, 2009 13:33:19

 

SQL> host copy d:\xhdatafile\testxh.dbf e:\orcldatafile\testxh.dbf
已複製         1 個檔案。

SQL> host copy D:\expdp\e.dmp e:\test\e.dmp
已複製         1 個檔案
DMP檔案和DATAFILE 都複製過去


SET ORACLE_SID=ORCL
C:\>sqlplus / as sysdba
SQL> create directory dumplist as 'e:\test';

目錄已建立。
C:\>impdp  system/a831115 directory=dumplist dumpfile=e.dmp transport_datafiles=e:\
orcldatafile\testxh.dbf remap_schema=xh:system
作業 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 已於 13:48:18 成功完成


SQL> select tablespace_name from  dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TEST
RMAN_TS
TESTXH~~~~~~~~~~orcl db多了這個  tablespace

已選擇9行。
SQL> conn system/a831115
已連線。
SQL> select count(*) from t1; TESTXH TABLESPACE 中物件也給了 ORCL DB  SYSTEM USER

  COUNT(*)
----------
         1

SQL> col tablespace_name format a10
SQL> col file_name format a30


SQL> select tablespace_name,file_name from  dba_data_files;

TABLESPACE FILE_NAME
---------- ------------------------------
SYSTEM     E:\SYSDATAFILE2.DBF
TEST       D:\TEST.DBF
EXAMPLE    E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\EXAMPLE01.DBF

USERS      E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\USERS01.DBF

SYSAUX     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSAUX01.DBF


TABLESPACE FILE_NAME
---------- ------------------------------
UNDOTBS1   E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\UNDOTBS01.DBF

SYSTEM     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSTEM01.DBF

RMAN_TS    D:\RMAN_TS.DBF
TESTXH     E:\ORCLDATAFILE\TESTXH.DBF~~~~~~~~~~~~~~~~~~~~~~

已選擇9行。

 

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

相關文章