博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

善待自己,切莫活在过去

上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。弗笑,不足以为道。是以建言有之,曰:明道若昧,进道若退,夷道若颡;上德若谷,广德若不足,建德若(女俞),质真芳渝;大白若辱,大方无隅,大器晚成,大音希 声,大象无形。道隐无名。夫唯道,善始且善成。 ---------出自《老子》第四十一章
  pvb1979.cublog.cn

关于作者
姓名:三国武将
职业:IT
年龄:属羊
位置:上海
个性介绍:生命是短暂的,博客是无限的。
不曾清贫难成人,不受打击老天真
|| << >> ||
我的分类


8i中可用到的TSPITR

(人民网络为人民)

基于表空间的时间点恢复:

适用环境:7×24的系统出现表被丢弃的现象,可以在不影响系统正常运行的情况下对此表空间上的表恢复到删除之前。

要求:1,版本要8i或者以上   2, 此表空间必须是自包含的   3,数据库运行在归档模式下

假设:表被误删除,客户要求在不影响现有应用的情况下恢复此表,此表所在的表空间可以脱机。

步骤:做clone数据库

     1,客户反映表被误删除,表空间假设为test,则 sql>alter tablespace test offline immediate;(这点很重要)

      2,sql>alter database backup controlfile to 'e:oradatabackupctl.ctl';

      3,拷贝系统数据文件,test表空间的数据文件,init参数,相应的归档日志,联机日志,还有2中的备份控制文件 到另一环境下;

      4,修改init参数

          首先修改控制文件,将控制文件修改成我们备份的backupctl.ctl,必须是备份控制文件。如果用非backup命令产生的控制文件在mount的时候将报控制文件为非clone控制文件。

        加入以下三行:

           db_file_name_convert = 'd:oracleoradatastudy','e:oradatastudy'  (将以前的数据文件路径修改成目前的新环境的路径)

           log_file_name_convert ='d:oracleoradatastudy,'e:oradatastudy'   (同上)                        

           lock_name_space=CLONE  (此参数允许如果实例名和先前的数据库的实例名不同的话,仍可以打开数据库)

       以上参数db_file_name_convert log_file_name_convert 如果不加的话,在mount数据库的时候要手动讲路径都rename一遍;lock_name_space=CLONE此参数不加的话,在打开数据库的时候会报无法用exclusive模式打开数据库的错误。

       5,用指定init启动到nomount   ,sql>startup nomount pfile=e:oradatainit.ora

        6,mount, sql>alter database mount clone database 这里和正常的mount有些区别,这里的数据文件这时的状态都是offline的,正常的mount都是online的。

        7,将系统表空间system,临时表空间temp,需要恢复的表空间test的数据文件online,如果你曾经创建了自己的临时表空间建议先删除,实验中发现创建的临时表空间时如果用的是临时文件在后面exp的时候会报错,可以先删除这样的临时表空间然后继续。

        8,恢复到表被删除的时间点,sql>alter database recover until time '2004-03-23:22:22:12';这期间可能可能要把联机日志应用一遍。

        9,将联机日志rename到目前新环境下的路径。open,sql>alter database open resetlogs;

        10,校验表空间的自包含性,sql>exec dbms_tts.transport_set_check('TEST',TRUE);

               然后sql >select * from ts_pitr_check where ts1_name='TEST';如果没有返回行证明是自包含的(对于非自包含的没有去实验,以后补上);

        11,cmd>exp 'sys/oracle as sysdba'  point_in_time_recover=y tablespaces=test file=e:tspitr.dmp log=e:tspitr.log

        12,连接到生产库上sql>alter tablespace test offline for recover;

        13,cmd>imp 'sys/oracle as sysdba' point_in_time_recovery=y file=e:tspitr.dmp

        14,sql>alter tablespace test online;

测试数据,完成。

 

发表于: 2007-11-01,修改于: 2007-11-01 14:39,已浏览675次,有评论0条 推荐 投诉


网友评论
 发表评论