Oracle可傳輸表空間測試

exoduslichao發表於2011-03-31

備份恢復測試方案

一, 首先先把lnxh_v2的表空間中的業務資料表遷移出另外的表空間metarnet

二, 可以透過可傳輸的表空間把源資料庫表空間匯入到目標資料庫表空間。

[@more@]

備份恢復測試方案

一, 首先先把lnxh_v2的表空間中的業務資料表遷移出另外的表空間metarnet

二, 可以透過可傳輸的表空間把源資料庫表空間匯入到目標資料庫表空間。

三, 對於業務運營產生的新資料透過expdp匯出主庫metarnet,生成dmp檔案,再透過impdp的追加資料方式把dmp檔案匯入複製庫。

遷移lnxh_v2表空間中的業務資料到metarnet表空間

1create tablespace metarnet datafileY:oracleoradatametarnet.dbf’ size 1000m;

2, create user lnxh_v2 identified by lnxh_v2 default tablespace metarnet;

3, grant connet,resource to lnxh_v2;

具體遷移指令碼可參考lnxh.sql

一.環境:

1. 兩臺win2003 Enterprise edition:主機名si_vm_w2k3ip:192.168.2.204;備機名PC2 ip:192.168.2.205

2. si_vm_w2k3上和PC2上同時安裝oracle 10.2.0.1.0;

3. ORACLE_HOME=C:oracleproduct10.2.0db_1.ORADATA=C:oracleproduct10.2.0oradatalichao;

對於資料備份可以透過expdp工具匯出主庫metarnet表空間,再透過impdp匯入到複製庫裡面。

首先在源庫建立測試表空間及使用者

SQL>create tablespace ora1 datafile’Y:oracleoradataora1.dbf’ size 1000m;

SQL>Crant user metar identified by metar default tablespace ora1

SQL>Grant connectresource to metar

SQL>Conn metar/metar

建立測試表:

SQL>create table so tablespace ora1 as select*from dba_objets;

SQL>insert into so select*from dba_objects;

SQL>commit;

SQL> select count(*) from so;

COUNT(*)

----------

153795

檢查源資料庫的表空間是否是自包含的。sys使用者登入資料庫

使用dbms_tts.transport_set_check對待遷移表空間進行檢查,這裡待表空間的名字是ora1
SQL> exec dbms_tts.transport_set_check('ORA1',true);

PL/SQL procedure successfully completed.

透過transport_set_violations檢視檢視是否有違反自包含的內容,這裡顯示結果是沒有,所以可以對完成ora1表空間的遷移

SQL> select * from transport_set_violations;

no rows selected

檢視遷移平臺,源庫和目標庫都是windows平臺

SQL> select d.platform_name,endian_format from v$transportable_platform. tp,

2 v$database d where tp.platform_name=d.platform_name;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT

----------- ---------------------------------------- ---

7 Microsoft Windows IA (32-bit) Little

ora1表空間置為只讀表空間

Alter tablespace ora1 read only;

匯出源庫表空間:

C:Documents and SettingsAdministrator>exp userid=’sys/admin as sysdba’ file=’Y:tommetar.dmp’ transport_tablespace=y tablespaces=ora1

Export: Release 10.2.0.1.0 - Production on 星期日 1 23 10:03:15 2011

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 字符集和 AL16UTF16 NCHAR 字符集

: 將不匯出表資料 ()

即將匯出可傳輸的表空間後設資料...

對於表空間 ORA1....

.正在匯出簇定義

.正在匯出表定義

. . 正在匯出表 SO

. 正在匯出引用完整性約束條件

. 正在匯出觸發器

. 結束匯出可傳輸的表空間後設資料

成功終止匯出, 沒有出現警告。

切換到目標庫執行以下命令:

SQL>create user metar identified by metar

複製源庫的匯出檔案metar.dmp 到目標庫的相應目錄 Y:oracleoradata

複製源庫表空間ora1的資料檔案ora1.dbf到目標庫的相應目錄

Y:oracleoradata

在目標庫上執行匯入:

imp userid=’sys/admin as sysdba’ file=’Y:oracleoradatametar.dmp’ transport_tablespace=y datafiles=’Y:oracleoradataora1.db’

查詢確認:

SQL> select count(*) from so;

COUNT(*)

----------

153795

我們再回到源庫模擬業務資料增加或改變時,再把增加或改變的資料應用到目標庫的表空間上以保持業務資料的安全。

源庫上改變so表的資料進行測試

SQL> insert into so select*from dba_objects;

已建立51266行。

SQL> insert into so select*from dba_objects;

已建立51266行。

SQL> insert into so select*from dba_objects;

已建立51266行。

SQL> insert into so select*from dba_objects;

已建立51266行。

SQL> select count(*) from so;

COUNT(*)

----------

358862

匯出表空間:

C:Documents and SettingsAdministrator>expdp system/admin directory=data_pump_dir dumpfile=ora1.dmp tablespaces=ora1

執行成功:

複製匯出的dmp檔案到目標資料的data_dump_dir目錄。

在複製庫上進行匯入追加資料如下:

impdp system/manager DIRECTORY=data_pump_dir DUMPFILE=ora1.dmp SCHEMAS=metar TABLE_EXISTS_ACTION=append;

結果如下:

在目標庫上以metar使用者登入驗證恢復是否成功.

SQL> select count(*) from so;

COUNT(*)

----------

358862

綜上所述:此方案是可行的,在利用可傳輸的表空間功能將表空間恢復到目標庫上以後,對此表空間(ora1)業務資料的變化,我們只需要來定期的expdp,最好在expdp之前能夠把cache中的資料寫入到資料檔案。在利用impdp追加資料的操作來把資料匯入到目標庫的表空間。

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

相關文章