当前位置:  数据库>oracle

Oracle教程:用户管理的完全恢复

    来源: 互联网  发布时间:2017-04-08

    本文导语: adump一般是audit dumpbdump是background dumpudump是user dumpcdump是core dump 恢复的步骤1.还原数据文件2.应用redo3.数据库包含提交的和未提交的事务4.应用UNDO5.恢复完成的数据库 恢复:用操作系统命令还原文件,用SQL*PLUS recover命令恢复文件 ...

adump一般是audit dump
bdump是background dump
udump是user dump
cdump是core dump


恢复的步骤
1.还原数据文件
2.应用redo
3.数据库包含提交的和未提交的事务
4.应用UNDO
5.恢复完成的数据库




恢复:用操作系统命令还原文件,用SQL*PLUS recover命令恢复文件

非归档模式的恢复
必须还原所有的datafile和control files,也可以还原参数文件、redo log files和口令文件。
优点:操作容易,低错误风险,恢复时间为拷贝文件时间。
缺点:数据丢失时必须手动重应用,整个数据库只能恢复到上一次冷备的时间点。


冷备的linux下磁盘损坏与数据恢复
[Oracle@ora10g ubackup]$ cp /u01/oradate/orcl/* .  //先用操作系统命令备份文件
用虚拟机创建一个虚拟磁盘sdb
fdisk sdb格式磁盘
Command (m for help):n 增加新分区
Command (m for help):p  1  1  1044  w  // 增加主分区操作代码,p为主分区,1为分区数,1为第一个柱面数, 1044为该分区柱面数 w为写分区表到磁盘。
mkfs.ext3 sdb1 //在分区增加ext3文件系统
[oracle@ora10g oradata]$ mount /dev/sdb1 md //挂载到md文件夹
[oracle@ora10g oradata]$ chown -R oracle:oinstall md  //赋权
[oracle@ora10g md]$ cp /u01/ubackup/* .   //拷贝备份到md文件夹








SQL>create pfile from spfile //创建pfile
修改pfile里面的控制文件路径
SQL>create spfile from pfile;
SQL>startup mount
然后把控制文件里面的datafile目录修改
SQL>alter database rename file '/u01/oradata/morewood/system01.dbf' to '/u01/oradata/md/system01.dbf';
....(省略其他的修改操作)
再把控制文件里面的tempfile目录修改
SQL>alter database rename file '/u01/oradata/morewood/temp01.dbf' to '/u01/oradata/md/temp01.dbf';
再把控制文件里面的redo log file目录修改
SQL>alter database rename file '/u01/oradata/morewood/redo01.dbf' to '/u01/oradata/md/redo01.dbf';
...省略其他log目录修改










自动恢复redo  log file(没备份redo log)
1.shutdown实例
2.还原datafile和控制文件
3.执行可取消的恢复
4.open数据库with resetlogs选项
操作代码:
startup mount
recover database until cancel using backup controlfile;//模拟不完全恢复
cancel
alter database open resetlogs;









归档模式的恢复
1.完全恢复
确保要还原的datafile是离线状态
只还原丢失或损坏的datafile
不还原其他文件
恢复datafile
优点:只需还原丢失的文件、恢复所有的数据到出错时间、恢复时间为还原丢失文件和应用所有归档日志文件的时间。
缺点:必须包含所有的归档日志文件
v$recover_file:需恢复的datafile,该信息是控制文件的信息。
v$recovery_log:恢复时需要的归档日志文件
数据库MOUNT状态下
SQL>recover database或recover datafile '/oradata/orcl/xxwz_data.dbf'
数据库OPEN状态下
SQL>recover tablespace xxwz_data;或recover datafile '/oradata/orcl/xxwz_data.dbf'













1.1冷备(直接把文件拷贝到其他盘)+热备(先用alter tablespace xxwz_data begin backup)
  在不打开数据库情况下恢复(可以恢复系统表空间和UNDO表空间)
shutdown abort;//当数据库打开时datafile突然丢失,只有shutdown abort才能关闭数据库
拷贝冷备的datafile到原数据文件目录下;
startup mount;
select * from v$recover_file;//查看需要恢复的数据文件
set autorecovery off //关闭自动恢复
SQL>recover database或recover datafile 1;






  在打开数据库情况下数据突然丢失的恢复(丢失时数据库没意识到)
提示:数据文件突然丢失,数据库才有在alter system checkpoint后才能用select * from v$recover_file查到要恢复的文件。
alter database datafile 1 offline;
拷贝备份文件;
recover datafile 1;
alter database datafile 1 online;




  数据文件在关闭时已丢失,但要求在打开数据库实行恢复(丢失时数据库已意识到)
startup mount;
alter database datafile 1 offline;
alter database open;
拷贝备份文件;
recover datafile 1;
alter database datafile 1 online;





1.2 数据文件没备份(不能是SYSTEM表空间的数据文件,控制文件不能被重建)
前提:自数据文件创建后的所有的归档日志文件都有;控制文件包含丢失文件的名字。
alter database datafile 7 offline;
SQL>alter database create datafile 'd:oracleoradataxxwz_data.dbf'或alter database create datafile 'd:oracleoradataxxwz_data.dbf' AS 'e:oracleoradataxxwz_data.dbf';
recovery datafile 7;
alter database datafile 7 online;





控制文件的checkpoint的SCN小于数据文件的checkpoint的SCN,则会报控制文件太旧错误,相反则需要介质恢复。
查询数据文件的checkpoint的SCN
select file#,checkpoint_change# from v$datafile_header;
查询控制文件的checkpoint的SCN
select file#,checkpoint_change# from v$datafile;




控制文件的恢复
1.控制文件没有全部丢失
create pfile from spfile;
删除pfile中丢失的控制文件的路径
create spfile from pfile;

cp control02.ctl control01.ctl





2.控制文件全部丢失
丢失之前把控制文件备份成trace脚本
alter database backup controlfile to trace as 'd:c1.trc';
cp c1.trc c1.sql
修改sql脚本
执行sql脚本




或者
丢失之前把控制文件备份
alter database backup controlfile to 'd:c1.trc';
然后我又新建一个表空间并且插入数据;
丢失后
先把备份的控制文件拷贝到指定的目录并重命名
cp d:c1.trc control01.ctl
cp d:c1.trc control02.ctl
cp d:c1.trc control03.ctl
用控制文件恢复数据
recover database using backup controlfile;
数据可能在日志文件的其中一个当中,要一个一个试试
'd:oracleoradataorclredo01.log' // 指定用redo01日志文件进行数据恢复
由于备份的控制文件没有记录新的数据文件的路径,执行上面命令后,数据库会自动指定表空间对应的数据文件路径到其他地方,这个在执行下面的命令时会有提示。
recover database using backup controlfile;
这时我们要把控制文件中自动指定的路径改成我们数据文件的真实路径
alter database rename file 'xxxx' to 'd:oracleoradataorclxxwz_data1.dbf' //xxx是数据库指定的路径,后面的真实数据文件路径在第一次recover报错的时候有提示,也可以从alter_{sid}.log日志文件查到。
改完后执行恢复命令
recover database using backup controlfile until cancel;
然后继续一个一个试试redo文件。成功后输入
alter database open resetlogs;



















resetlogs:
resetlogs选项被需要在进行不完全恢复或者用备份控制文件进行恢复时。
resetlogs所做的事情:
1.归档当前的redo日志文件(如果他们可访问),然后清除redo日志文件的内容,重设log sequence number为1.(例如当前的日志文件sequence为1000和1001,重设为1和2)
2.如果redo日志文件不存在则重建他们。
3.重新初始化控制文件中online redo logs和redo thread的metadata。
4.更新所有当前的数据文件和联机重做日志文件和所有后来已归档的重做日志文件with a new resetlogs SCN and time stamp。





只读表空间的恢复:
只读表空间的控制文件trace脚本重构时先不装载该表空间,而是在恢复时通过rename file和alter online要实现。具体可以通过对比只读和普通表空间的控制文件trace脚本。

incarnation:对应物
归档日志命名格式%s为log sequence number,%t为thread number,%r为incarnation。
通过reset incarnation实现跨resetlogs的恢复 


    
 
 

您可能感兴趣的文章:

  • Oracle数据库恢复后心得
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • oracle drop table(表)数据恢复方法
  • Oracle数据库备份和恢复工具 RMan
  • oracle备份恢复的具体方法
  • oracle中误删除表后恢复语句(FLASHBACK)
  • oracle冷备份恢复和oracle异机恢复使用方法
  • 在Oracle 10gR2中设定指定的恢复点实现轻松闪回
  • Oracle重做日志文件损坏或丢失后的恢复
  • Oracle11g备份和恢复功能的提高
  • 实战Oracle数据库备份与恢复
  • Oracle数据库冷备份的异地恢复
  • oracle下实现恢复一个丢失的数据文件的代码
  • 详解通过Backup Exec来实施Oracle灾难恢复
  • Oracle的恢复管理器及DBMS_JOB包分析
  • Oracle数据库文件恢复以及备份思路
  • Oracle数据库备份恢复最佳实践
  • oracle如何恢复被覆盖的存储过程
  • rman恢复方案和oracle异机恢复
  • oracle数据库创建备份与恢复脚本整理
  • Oracle相关基础知识教程集锦
  • Oracle新手教程 手工创建数据库的全部脚本及说明
  • oracle与mysql的视频教程下载地址分享
  • VMware中linux环境下oracle安装图文教程(二)ORACLE 10.2.05版本的升级补丁安装
  • Oracle教程:浅析监听器安装/配置入门
  • 求ferdora15 上安装oracle11G详细教程
  • redhat 4中安装Oracle 10g图文教程
  • 全套OCP视频(Oracle认证专家)教程之一
  • [Oracle新手教程] 用PL/SQL画直方图
  • 基于Linux平台的Oracle RAC 10g集群教程:删除节点所需要的步骤
  • Oracle 11g2的监听器配置教程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • linux6.0下安装oracle11g, 新建用户后,在用户目录下为什么没有.bash_profile文件生成? 求教高手。谢谢!
  • Oracle一个用户如何访问其它用户的表应用指南
  • oracle用户口令丢了
  • 修改oracle用户的.bash_profile之后无法正常登陆
  • linux下如何查看是什么用户安装的oracle
  • oracle+jsp 多用户查询系统讨论:
  • ORACLE 中修改用户密码的方法
  • linux中定时任务 oracle用户该如何做?
  • 杀掉oracle在线用户脚本分享
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • Oracle exp 导出用户对象
  • oracle怎么删除用户提供解决方案
  • Oracle初始参数与当前用户
  • Oracle发布Oracle SQL Developer 1.2数据库开发工具 帮助用户简化开发工作
  • Oracle中查看当前用户的表
  • 怎样知道一个用户的主目录,也就是.bash_profile所在的目录?如/home/oracle
  • Linux下修改Oracle用户密码
  • Oracle创建用户权限的过程
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3