oracle 10g資料庫之表空間遷移詳細步驟

liqilin0429發表於2010-09-17

oracle 10g資料庫表空間遷移之詳細步驟
第一步:查詢源資料庫中存在那些表空間,確認要遷移的哪幾個表空間
       SQL> col tablespace_name for a10;     
       SQL> select tablespace_name ,file_name from dba_data_files;
第二步:核查源資料庫的版本資訊
       SQL> select * from v$version;
第三步:核對快的大小
        SQL> show parameter db_block_size
    第四步:在目標資料庫上核對版本資訊是否與源資料庫的版本資訊一直以及快的大小是否與源資料庫一直,
        如若不一直需要修改快的大小與源資料庫快(BLOCK_SIZE)的大小一直 修改db_block_size的值與目標資料庫的值一直(SQL> ALTER SYSTEM SET DB_32K_CACHE_SIZE =64M;)
第五步:將源資料庫中將要遷移的表空間至於只讀狀態
       SQL> ALTER TABLESPACE demo READ ONLY;
第六步:在源資料庫的OS上建立相應的目錄
       SQL> create or replace directory d_output as  '/home/oracle/qilin/d_output';
       SQL> grant read,write on directory d_output to qilin;
第七步:確定自包含表空間集合
       SQL> execute sys.dbms_tts.transport_set_check('demo',true)
       PL/SQL procedure successfully completed
       經分析沒有返回任何資訊,說明該表空間demo是自包含的:
第八步:匯出所要需要匯出的表空間
         expdp system/qilin@orcl directory=d_output dumpfile=demo.dmp transport_tablespaces=demo transport_full_check=y
         備註匯出表空間後立刻還原資料庫的表空間為寫狀態alter tablespace demo read write
第九步:在目標資料庫上建立建立使用者(該使用者必須是源資料庫的表空間上存在的使用者之一)並且授權
        SQL> create user demouser identified by qilin;
        SQL> grant connect,resource to demouser;
第十步:在目標資料庫的OS上建立相應的目錄
        create or replace directory saijuan as  '/u01/bak_data/qilin/saijuan';
        grant read,write on directory saijuan to demouser;
第十一步:把源資料庫上的表空間所在的資料庫檔案和匯出的資料檔案遷移到目標資料庫上,
          源資料庫的資料檔案放到目標資料庫存放資料檔案的目錄下,並且許可權具有ORACLE的許可權
          源資料庫匯出的檔案遷移到第十步建立好的目錄下,也就是說在目標資料庫/u01/bak_data/qilin/saijuan下必須有一個demo.dmp的檔案
檢視編碼方式是否一致:
SQL> col parameter for a30;
SQL> col value for a30;
SQL> select * from nls_database_parameters;

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               ZHS16GBK
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_RDBMS_VERSION              10.2.0.4.0

修改編碼的的方法:
shutdown  immediate
startupmount
alter system enable restricted session;
alter system se tJOB_QUEUE_PROCESSES=0;
alter system set AQ_TM_PROCESSES=0;
alter database open;
alter database character set internal_use ZHS16GBK;
shutdown immediate
startup
第十二步:匯入遷移到目標資料庫的的檔案
          impdp system/qilin directory=saijuan dumpfile=demo.dmp transport_datafiles='/home/bonson/oradata/demo1.dbf';
          impdp system/bonson directory=d_put dumpfile=bonsonxlocation.dmp transport_datafiles='/u01/app/oracle/oradata/mv_data/bonsonxlocation_data01.dbf',
                                                                           transport_datafiles='/u01/app/oracle/oradata/mv_data/BonsonxLocation_DATA.dbf';
第十三步:檢視被匯入表空間的讀寫狀態
           SQL> select TABLESPACE_NAME,status from dba_tablespaces;
第十四步:修改表空間的的讀寫狀態
          SQL> alter tablespace demo read write;
第十五步:使用第九步建立的使用者連線目標資料庫核對資料
          SQL> conn demouser/qilin
          SQL> select * from tab;
          SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'DEMO';

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

相關文章