近期自上海vpn庫至二期庫遷移資料小記

wisdomone1發表於2012-10-26
1,連線scott使用者
  conn scott/system
2,建表
  create table t_tablespace(a int);
3,查t_tablespace表的表空間
  select ut.tablespace_name from user_tables ut where ut.table_name=upper('t_tablespace');
  TABLESPACE_NAME
  ----------------
   USERS
4,修改t_tablespace的表空間
  alter table t_tablespace tablespace  新表空間;
  SQL> alter table t_tablespace tablespace shwt;
          alter table t_tablespace tablespace shwt
                                   *
          第 1 行出現錯誤:
          ORA-01735: 無效的 ALTER TABLE 選項
         
         
          SQL> alter table t_tablespace shwt;
          alter table t_tablespace shwt
                                   *
          第 1 行出現錯誤:
          ORA-01735: 無效的 ALTER TABLE 選項
5,上述的方法,採用如下方法,構建同使用者下不同表空間的表
  SQL> create table t_tablespace_new tablespace shwt as select *  from t_tablespace;

表已建立。       
5,查是否表空間變更成功
  select ut.tablespace_name from user_tables ut where ut.table_name=upper('t_tablespace_new');
   TABLESPACE_NAME
  ----------------
   SHWT
6,然後匯出t_tablespace_new,這樣源與目標庫的表空間就一樣了
7,最後匯入到目標庫中
8,在目標庫修改t_tablespace_new為t_tablespace
  alter table t_tablespace_new rename to t_tablespace;
9,小結:
    1,藉助中間庫,完成把源庫匯入到中間庫 
       2,在中間庫把源表完成表空間轉換
       3,對中間庫轉換後的表進行匯出
       4,把中間庫的轉換表進行匯入,可能中間庫與目標庫的使用者不同,要用fromuser和touser,這樣就要dba許可權
       5,所以要把中間庫的轉換表放在中目標庫同樣的使用者下
       6,這種流程太多
10,經分析
       1,直接在中間庫構建與源庫的表同樣的使用者和表空間
       2,把源庫的表匯入到中間庫,同源庫對應的使用者和表空間
       3,根據目標庫,在中間庫構建對應目標庫的使用者和表空間
       4,在中間庫以sysdba登陸,建立對應使用者和表空間的表 --或者在中間庫建立到目標庫的資料庫連結
         conn sys/system@orcl
         create table 對應目標庫的使用者.源庫的表 tablespace 對應目標庫的表空間 as select * from 中間庫的使用者.中間庫的表;
       5,匯出中間庫對應目標庫使用者和表空間的表 --直接在中間庫通過資料庫連結把中間庫的表匯入到目標庫create table 源庫的表@資料庫連結 as select * from 中間庫的表;
       6,匯入到目標庫
       7,如中間庫與目標庫互通,可省一個流程

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

相關文章