设为首页 收藏本站
查看: 1243|回复: 0

[经验分享] oracle 根据控制与参数文件恢复

[复制链接]

尚未签到

发表于 2018-9-13 09:43:28 | 显示全部楼层 |阅读模式
  技术原理:
  控制文件记录数据库的物理结构
  控制文件还记录了数据文件的元数据信息
  所以,可以根据控制文件,将这个损坏的数据文件重建;
  但是重建之后的数据文件,没有数据的记载;
  再根据日志(归档日志和在线重做日志)来recover这个数据文件;
  技术应用限制:
  1.数据文件创建之后,控制文件没有变化过;
  2.自数据文件创建之后的所有的日志文件,需要全部存在;
  3.数据库建库是就生成的数据文件不能应用这个技术;
  --新建一个表空间
  SYS@orcl11g> create tablespace tbs04
  2  datafile '/u01/app/oracle/oradata/orcl11g/tbs04.dbf'
  3  size 50m;
  Tablespace created.
  --在该表空间上存放数据
  SYS@orcl11g> alter user hr quota unlimited on tbs04;
  HR@orcl11g> create table e tablespace tbs04 as select * from hr.employees;
  HR@orcl11g> create table d tablespace tbs04 as select * from hr.departments;
  --切换日志
  SYS@orcl11g> archive log list;
  Database log mode              Archive Mode
  Automatic archival             Enabled
  Archive destination            /u01/app/oracle/arch
  Oldest online log sequence     78
  Next log sequence to archive   80
  Current log sequence           80
  SYS@orcl11g> alter system switch logfile;
  SYS@orcl11g> alter system switch logfile;
  --更新表空间上的数据
  SYS@orcl11g> update hr.e set salary=salary+1;
  SYS@orcl11g> commit;
  SYS@orcl11g> alter system switch logfile;
  SYS@orcl11g> update hr.d set department_id=department_id+1;
  SYS@orcl11g> commit;
  SYS@orcl11g> alter system switch logfile;
  --模拟破坏数据文件
  SYS@orcl11g> host cp /etc/passwd /u01/app/oracle/oradata/orcl11g/tbs04.dbf
  --让数据库发现数据文件损坏
  SYS@orcl11g> alter system flush buffer_cache; -- 清空缓冲区
  --因为ckpt进程,检查点无法完成,所以实例被中断;
  --重新启动,发现问题
  SYS@orcl11g> startup mount;
  ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
  ORACLE instance started.
  Total System Global Area  422670336 bytes
  Fixed Size                  1345380 bytes
  Variable Size             318769308 bytes
  Database Buffers           96468992 bytes
  Redo Buffers                6086656 bytes
  Database mounted.
  SYS@orcl11g> alter database open;
  alter database open
  *
  ERROR at line 1:
  ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
  ORA-01110: data file 10: '/u01/app/oracle/oradata/orcl11g/tbs04.dbf'
  SYS@orcl11g> col error for a20
  SYS@orcl11g> l
  1* select * from v$recover_file
  SYS@orcl11g> /
  FILE# ONLINE  ONLINE_ ERROR                   CHANGE# TIME
  ---------- ------- ------- -------------------- ---------- -------------------
  10 ONLINE  ONLINE  FILE NOT FOUND                0 (null)
  --根据控制文件的信息,创建一个新的数据文件
  SYS@orcl11g> alter database create datafile '/u01/app/oracle/oradata/orcl11g/tbs04.dbf'
  as '/u01/app/oracle/oradata/orcl11g/tbs04.dbf';
  SYS@orcl11g> select * from v$recover_file;
  FILE# ONLINE  ONLINE_ ERROR                   CHANGE# TIME
  ---------- ------- ------- -------------------- ---------- -------------------
  10 ONLINE  ONLINE  (null)                  1790076 2013-06-24 09:43:56
  SYS@orcl11g> select checkpoint_change#,last_change# from v$datafile
  2* where file#=10
  SYS@orcl11g> /
  CHECKPOINT_CHANGE# LAST_CHANGE#
  ------------------ ------------
  1790559 (null)
  SYS@orcl11g> select checkpoint_change# from v$datafile_header where file#=10
  SYS@orcl11g> /
  CHECKPOINT_CHANGE#
  ------------------
  1790076
  --文件的检查点信息比控制文件的检查点信息旧,需要提升数据文件的检查点状态
  --通过日志修复
  SYS@orcl11g> select * from v$recovery_log;
  THREAD#  SEQUENCE# TIME
  ---------- ---------- -------------------
  ARCHIVE_NAME
  --------------------------------------------------------------------------------
  1         80 2013-06-21 16:10:04
  /u01/app/oracle/arch/1_80_816622368.dbf
  1         81 2013-06-24 09:46:48
  /u01/app/oracle/arch/1_81_816622368.dbf
  --需要以上两个归档日志和在线重做日志
  SYS@orcl11g> recover datafile 10;
  ORA-00279: change 1790076 generated at 06/24/2013 09:43:56 needed for thread 1
  ORA-00289: suggestion : /u01/app/oracle/arch/1_80_816622368.dbf
  ORA-00280: change 1790076 for thread 1 is in sequence #80
  Specify log: {=suggested | filename | AUTO | CANCEL}
  auto
  ORA-00279: change 1790550 generated at 06/24/2013 09:46:48 needed for thread 1
  ORA-00289: suggestion : /u01/app/oracle/arch/1_81_816622368.dbf
  ORA-00280: change 1790550 for thread 1 is in sequence #81
  Log applied.
  Media recovery complete.
  --查看文件的状态
  SYS@orcl11g> select checkpoint_change# from v$datafile_header
  2  where file#=10;
  CHECKPOINT_CHANGE#
  ------------------
  1810656
  SYS@orcl11g> select checkpoint_change#,last_change# from v$datafile
  2  where file#=10;
  CHECKPOINT_CHANGE# LAST_CHANGE#
  ------------------ ------------
  1810656      1810656
  --打开数据库
  SYS@orcl11g> alter database open;
  Database altered.
  --检查数据情况


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-577445-1-1.html 上篇帖子: oracle清除归档日志 下篇帖子: oracle 无备份恢复数据文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表