不同的default tablespace資料遷移(二)

zhanglei_itput發表於2009-07-17

 

    前段時間做過不同default tablespace的測試,在imp時,首先imp到使用者的default tablespace(無論與exp資料庫伺服器中的tablespace是否一致),當沒有指定使用者表空間的時候,10g會自動imp到user表空間。

     測試詳細過程見連結:http://space.itpub.net/9252210/viewspace-567223

     但是最近發現有時候imp會報錯,報錯:ORA-00959: tablespace 'xx' does not exist,詳細資訊如下:
     導致錯誤資訊的原因為:
     1.  分割槽表
     2.  表中含有blob,clob欄位

    
     測試結果如下:

1. 第一個資料庫建立表空間及使用者
SQL>CREATE  TABLESPACE "TEST1" DATAFILE '/oracle/oradata/test/test02.bdf' SIZE 5M

SQL> create user ecc_test1 identified by edd default tablespace test1;
User created.

SQL> grant connect,resource to ecc_test1;
Grant succeeded.


2. 第二個資料庫建立表空間及使用者
SQL>CREATE  TABLESPACE "TEST2" DATAFILE '/oracle/oradata/dupt/test02.bdf' SIZE 5M ;

SQL> create user ecc_test2 identified by edd default tablespace test2;
User created.

SQL> grant connect,resource to ecc_test2;
Grant succeeded.


3. 使用者ecc_test1建立4個table(不指定表空間,指定表空間,含有lob欄位,分割槽表)
SQL> conn
Connected.
a. 不顯式指定物件表空間
SQL> create table t1_notb (id varchar(1));
Table created.

b.顯式指定物件表空間
SQL> create table t2_tb  (id varchar(1))  tablespace test1;
Table created.

c. 含有lob欄位
SQL> create table t3_lob  (id varchar(1), id_lob blob);
Table created.

d. 分割槽表
create table t4_par
(
  id  number,
  id2 number
)
partition by range (id)
(
  partition id11 values less than (2),
  partition id22 values less than (4)
 
)

e. 查詢物件表空間
SQL> select table_name, tablespace_name from user_tables;

TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
T1_NOTB                        TEST1
T2_TB                          TEST1
T3_LOB                         TEST1
T4_PAR

4. exp 使用者 ecc_test1
C:\Users\Atao>exp file=c:\ecc_test.dmp
Export: Release 10.2.0.1.0 - Production on 星期五 7月 17 18:53:42 2009
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
. 正在匯出 pre-schema 過程物件和操作
. 正在匯出使用者 ECC_TEST1 的外部函式庫名
. 匯出 PUBLIC 型別同義詞
. 正在匯出專用型別同義詞
. 正在匯出使用者 ECC_TEST1 的物件型別定義
即將匯出 ECC_TEST1 的物件...
. 正在匯出資料庫連結
. 正在匯出序號
. 正在匯出簇定義
. 即將匯出 ECC_TEST1 的表透過常規路徑...
. . 正在匯出表                         T1_NOTB匯出了           3 行
. . 正在匯出表                           T2_TB匯出了           4 行
. . 正在匯出表                          T3_LOB匯出了           1 行
. . 正在匯出表                          T4_PAR
. . 正在匯出分割槽                            ID11匯出了           0 行
. . 正在匯出分割槽                            ID22匯出了           0 行
. 正在匯出同義詞
. 正在匯出檢視
. 正在匯出儲存過程
. 正在匯出運算子
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 正在匯出索引型別
. 正在匯出點陣圖, 功能性索引和可擴充套件索引
. 正在匯出後期表活動
. 正在匯出實體化檢視
. 正在匯出快照日誌
. 正在匯出作業佇列
. 正在匯出重新整理組和子組
. 正在匯出維
. 正在匯出 post-schema 過程物件和操作
. 正在匯出統計資訊
成功終止匯出, 沒有出現警告。

5.imp使用者ecc_test2
C:\Users\Atao>imp file=c:\ecc_test.dmp full=y
Import: Release 10.2.0.1.0 - Production on 星期五 7月 17 18:57:39 2009
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
經由常規路徑由 EXPORT:V10.02.01 建立的匯出檔案
警告: 這些物件由 ECC_TEST1 匯出, 而不是當前使用者
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. 正在將 ECC_TEST1 的物件匯入到 ECC_TEST2
. . 正在匯入表                       "T1_NOTB"匯入了           3 行
. . 正在匯入表                         "T2_TB"匯入了           4 行
IMP-00017: 由於 ORACLE 錯誤 959, 以下語句失敗:
 "CREATE TABLE "T3_LOB" ("ID" VARCHAR2(1), "ID_LOB" BLOB)  PCTFREE 10 PCTUSED"
 " 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROU"
 "PS 1 BUFFER_POOL DEFAULT) TABLESPACE "TEST1" LOGGING NOCOMPRESS LOB ("ID_LO"
 "B") STORE AS  (TABLESPACE "TEST1" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSI"
 "ON 10 NOCACHE LOGGING  STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 "
 "BUFFER_POOL DEFAULT))"
IMP-00003: 遇到 ORACLE 錯誤 959
ORA-00959: tablespace 'TEST1' does not exist
IMP-00017: 由於 ORACLE 錯誤 959, 以下語句失敗:
 "CREATE TABLE "T4_PAR" ("ID" NUMBER, "ID2" NUMBER)  PCTFREE 10 PCTUSED 40 IN"
 "ITRANS 1 MAXTRANS 255 TABLESPACE "TEST1" LOGGING PARTITION BY RANGE ("ID" )"
 "  (PARTITION "ID11" VALUES LESS THAN (2)  PCTFREE 10 PCTUSED 40 INITRANS 1 "
 "MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POO"
 "L DEFAULT) TABLESPACE "TEST1" LOGGING NOCOMPRESS, PARTITION "ID22" VALUES L"
 "ESS THAN (4)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL"
 " 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TEST1"
 "" LOGGING NOCOMPRESS )"
IMP-00003: 遇到 ORACLE 錯誤 959
ORA-00959: tablespace 'TEST1' does not exist
成功終止匯入, 但出現警告。


SQL> select table_name, tablespace_name from user_tables;
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
T2_TB                          TEST2
T1_NOTB                        TEST2

 

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

相關文章