ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle10g可传输表空间备份与恢复测试

oracle10g可传输表空间备份与恢复测试

原创 Linux操作系统 作者:Coast_lichao 时间:2011-01-24 09:00:36 0 删除 编辑

备份恢复测试方案

 

一,      首先先把lnxh_v2的表空间中的业务数据表迁移出另外的表空间metarnet

二,      可以通过可传输的表空间把源数据库表空间导入到目标数据库表空间。

三,      对于业务运营产生的新数据通过expdp导出主库metarnet,生成dmp文件,再通过impdp的追加数据方式把dmp文件导入复制库。

迁移lnxh_v2表空间中的业务数据到metarnet表空间

1create tablespace metarnet datafileY:\oracle\oradata\metarnet.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:\oracle\product\10.2.0\db_1.ORADATA=C:\oracle\product\10.2.0\oradata\lichao;

对于数据备份可以通过expdp工具导出主库metarnet表空间,再通过impdp导入到复制库里面。

首先在源库建立测试表空间及用户

SQL>create tablespace ora1 datafile’Y:\oracle\oradata\ora1.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 Settings\Administrator>exp userid=’sys/admin as sysdba’ file=’Y:\tom\metar.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:\oracle\oradata\

复制源库表空间ora1的数据文件ora1.dbf到目标库的相应目录

Y:\oracle\oradata\

在目标库上执行导入:

imp userid=’sys/admin as sysdba’ file=’Y:\oracle\oradata\metar.dmp’ transport_tablespace=y datafiles=’Y:\oracle\oradata\ora1.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 Settings\Administrator>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/21496237/viewspace-684526/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-26

  • 博文量
    19
  • 访问量
    67052