利用TRANSPORT_TABLESPACE特性在同一db下不同使用者之間遷移資料!

warehouse發表於2007-01-09

參考文件:

http://www.itpub.net/showthread.php?s=&threadid=700445&perpage=10&pagenumber=2

SQL> select username , default_tablespace from dba_users where username='XYS';

USERNAME DEFAULT_TABLESPACE
------------------------------ --------------------
XYS USERS

SQL> select file_name , tablespace_name from dba_data_files;

FILE_NAME TABLESPACE_NAME
-------------------------------------------------- --------------------
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSTEM01.DBF SYSTEM
E:ORACLEPRODUCT10.2.0ORADATAUTFUNDOTBS01.DBF UNDOTBS1
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSAUX01.DBF SYSAUX
E:ORACLEPRODUCT10.2.0ORADATAUTFTEST.DBF TEST
E:ORACLEPRODUCT10.2.0ORADATAUTFUSERS01.DBF USERS

SQL> CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE TEST;

使用者已建立。

SQL> GRANT DBA , CONNECT , RESOURCE TO TEST;

授權成功。

SQL> CONNECT XYS/MANAGER
已連線。
SQL> SELECT TABLE_NAME FROM USER_TABLES;

未選定行

SQL> CREATE TABLE T(ID INT) TABLESPACE USERS;

表已建立。

SQL> CREATE TABLE TT TABLESPACE USERS AS SELECT * FROM DBA_OBJECTS;

表已建立。

SQL> ALTER DATABASE DATAFILE 5 AUTOEXTEND ON;

資料庫已更改。

SQL> ALTER TABLESPACE USERS READ ONLY;

表空間已更改。
SQL> HOST EXP 'SYS/SYSTEM AS SYSDBA' TRANSPORT_TABLESPACE=Y TABLESPACES=USERS FI
LE=C:TEST.DMP

Export: Release 10.2.0.1.0 - Production on 星期二 1月 9 21:12:34 2007

Copyright (c) 1982, 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
已匯出 ZHS16GBK 字符集和 UTF8 NCHAR 字符集
伺服器使用 UTF8 字符集 (可能的字符集轉換)
注: 將不匯出表資料 (行)
即將匯出可傳輸的表空間後設資料...
對於表空間 USERS...
. 正在匯出簇定義
. 正在匯出表定義
. . 正在匯出表 T
. . 正在匯出表 TT
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 結束匯出可傳輸的表空間後設資料
成功終止匯出, 沒有出現警告。

SQL> DRPO TABLESPACE INCLUDING CONTENTS;
SP2-0734: 未知的命令開頭 "DRPO TABLE..." - 忽略了剩餘的行。
SQL> DRPO TABLESPACE USERS INCLUDING CONTENTS;
SP2-0734: 未知的命令開頭 "DRPO TABLE..." - 忽略了剩餘的行。
SQL> drop TABLESPACE USERS INCLUDING CONTENTS;
drop TABLESPACE USERS INCLUDING CONTENTS
*
第 1 行出現錯誤:
ORA-12919: 不能刪除預設永久表空間


SQL> alter database default tablespace test;

資料庫已更改。

SQL> drop TABLESPACE USERS INCLUDING CONTENTS;

表空間已刪除。

SQL> host imp 'sys/system as sysdba' transport_tablespace=y file=c:test.dmp fr
omuser=xys touser=test datafiles='E:oracleproduct10.2.0oradataUTFusers01.d
bf'

Import: Release 10.2.0.1.0 - Production on 星期二 1月 9 21:21:59 2007

Copyright (c) 1982, 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

經由常規路徑由 EXPORT:V10.02.01 建立的匯出檔案
即將匯入可傳輸的表空間後設資料...
已經完成 ZHS16GBK 字符集和 UTF8 NCHAR 字符集中的匯入
匯入伺服器使用 UTF8 字符集 (可能的字符集轉換)
. 正在將 XYS 的物件匯入到 TEST
. . 正在匯入表 "T"
. . 正在匯入表 "TT"
成功終止匯入, 沒有出現警告。

SQL> show user
USER 為 "SYS"
SQL> connect test/test
已連線。
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------------------------------------
TT
T

SQL> col tablespace_name format a20
SQL> select file_name , tablespace_name from dba_data_files;

FILE_NAME TABLESPACE_NAME
-------------------------------------------------- --------------------
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSTEM01.DBF SYSTEM
E:ORACLEPRODUCT10.2.0ORADATAUTFUNDOTBS01.DBF UNDOTBS1
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSAUX01.DBF SYSAUX
E:ORACLEPRODUCT10.2.0ORADATAUTFTEST.DBF TEST
E:ORACLEPRODUCT10.2.0ORADATAUTFUSERS01.DBF USERS

SQL>

結論:我們看到使用者xys下的表t,tt透過傳輸表空間的方式已經匯入到了test下!感覺很不錯!


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

相關文章