ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 用户管理的完全恢复 笔记1-非归档模式下的恢复

用户管理的完全恢复 笔记1-非归档模式下的恢复

原创 Linux操作系统 作者:mslucy 时间:2010-11-06 22:26:27 0 删除 编辑

用户管理的完全恢复 笔记1-非归档模式下的恢复

用户管理的完全恢复
备份不是目的 是手段 目的是为了恢复,没法恢复,备份就是垃圾


分类:
完全恢复  数据没有丢失
不完全恢复  恢复只能恢复到发生问题的那个时间点


学习目标:
1、知道什么是介质恢复并且可以描述介质恢复
2、在非归档模式下进行数据的恢复  非归档没有完全恢复 会丢失备份到发生问题的时间之间的数据
3、在归档模式下进行完全恢复
4、恢复数据文件到不同的路径下 新的磁盘上
5、使用redo 日志进行表空间的恢复
6、只读表空间的恢复


区别两个术语
restore  还原  拷贝文件
recover  恢复  跑归档日志和联机重做日志


介质恢复:
如果数据文件或者控制文件损坏可以对其进行恢复,要求dba进行人工介入。

需要的操作
从备份文件中把文件还原
在文件上应用更新归档日志文件和练级日志文件


恢复的步骤:
1 restore 文件
2 apply 日志  前滚
3 数据库此时包含提交和未提交的数据
4 将未提交的数据应用undo  后滚
5 恢复好的数据库

前滚和后滚和实例恢复的原理一样

restore 属于操作系统的命令
recovery 属于sqlplus的命令

恢复的时候考虑归档模式和非归档模式两种
非归档:
干净的关掉 拷贝所有问及那
归档:
可以热备

由于非归档的备份是干净的备份,所以只需要拷贝做restore就可以。
非归档模式下,如果一个文件发生损坏必须恢复所有的文件,为什么?因为恢复的时候没有办法恢复到发生问题的时间点,只能恢复到备份时间点,那么如果只恢复一个文件,那么这个文件和别的文件就不一致了。

非归档模式不用备份联机重做日志,因为干净的关闭会将其中内容同步到数据文件。
优点是 很容易操作,不容易出错
恢复的时间就是拷贝数据文件的时间。
缺点:只能恢复到上次冷备的状态,数据会丢失必须重新手工应用。

非归档模式需要用到online redo log 的情况:
假设数据库系统scn=144的时候进行了冷备份,有三组联机重做日志,那么日志写到146的时候数据文件丢失,那么现存的联机重做日志是144,145,146,我们就可以使用当时冷备的文件加上当前的日志进行完全恢复了,恢复到当前的状态,但是如果日志组被重写 覆盖了很多次,就没有办法进行完全恢复了。联机重做日志是不断覆盖重写的,一般这种情况比较少见。
也就是说备份完立即出现错误就可以恢复。

需要注意的是:如果说当时的数据文件的磁盘损坏,我们就没有办法把备份拷贝到原来的目录,需要指定另外一个目录去恢复,才能正常打开数据库。


操作步骤:假设原先的磁盘损坏,不能在原先的路径恢复
1、查看和调整数据库的归档和非归档模式,假设实验是非归档模式。
start mount;
archive log list;
alter database no archivelog;
alter database archivelog;
alter database open;
2、干净关闭数据库 所以都是一致性的恢复
3、建立备份目录 使用另外一个磁盘 /tmp/backuo,
4、备份 copy 所有文件到备份路径下
5、建立恢复目录,使用另外一个新的路径恢复/tmp/newdata
6、模拟数据文件损坏在数据库的数据路径下 rm -fr *.ctl
7、 将冷备的所有文件 拷贝到新的路径下(操作系统下注意权限,备份恢复最好使用oracle用户,注意需要的文件是什么?)
8、 查看初始化参数文件 中控制文件 路径,仍然还是以前的,先将数据库起到nolog状态,生成pfile文件
9、修改新的pfile文件中控制文件路径为新的路径
10、使用修改过的pfile启动
11、链接数据库 create spfile from pfile
12、startup mount;修改控制文件-->V$DATAFILE中显示所有数据文件路径,是从控制文件中读取的;命令是
alter database rename file 'oldpath' to new 'path';
(控制文件包含有数据文件和日志文件的路径,也要修改过来)
13、一个一个修改路径后重新查看是否更改正确
select file#,name from v$datafile;
14、还有临时文件 读取自v$tempfile和日志文件 读取自v$logfile
alter database rename file `oldpath` to 'newpath';
15、由于修改的比较多,可以使用脚本进行更改。修改完后可以strings 控制文件查看是否所有需要更改的路径都已经成功更改了。
16、alter database open;
17、检测 查询一个普通的表,可以查询,没有问题。


总结:当要更改恢复后的目录的时候,需要改两个文件,初始化参数文件和控制文件。


如果没有备份redo log怎么办?
1 干净关闭数据库
2 从最近的备份集中恢复数据文件和控制文件
3 执行基于cancel的恢复
4 以resetlogs的选项打开数据库

联机重做日志丢失 使用以下两个命令恢复出来
recovery database until cancel using backup controlfile;
alter database open resetlogs;

resetlogs模拟不完全恢复,生成新的日志组。

数据会出现丢失的情况,会丢失备份以来到发生故障之间的数据。

 

 


 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24799772/viewspace-677653/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2010-10-22

  • 博文量
    32
  • 访问量
    42842