设为首页 收藏本站
查看: 911|回复: 6

[经验分享] Oracle—用户管理的完全恢复(二)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-8-4 10:46:50 | 显示全部楼层 |阅读模式

在用户管理的完全恢复(一)中说明了在非归档模式下的完全恢复,下面说明在归档模式下的完全恢复。



一.在归档模式下的完全恢复

1.在归档模式下的完全恢复中,先是通过备份文件进行还原,然会通过日志文件(联机重做日志和归档日志文件)进行恢复。



2.在归档模式下的完全恢复中,哪个数据文件损坏,那么只要还原恢复这个文件即可,其它文件不受干扰继续运行,这点与非归档模式不同。



3.还原恢复一个数据文件,这个文件必须处于offline状态。





二.完全恢复的方式


1.在数据库打开的状态时,数据文件丢失或者损坏,需要关闭数据库来恢复。——主要是应对于当系统表空间和undo表空间有问题时。



2.在在数据库打开的状态时,数据文件丢失或者损坏(非系统表空间和undo表空间里的文件),在数据库打开时怎么恢复。



3.数据库在关闭状态文件损坏(不能是系统表空间中的文件),业务需求要先打开数据库,再进行恢复。



4.数据文件没有备份,但是丢失了,怎么使用联机重做日志和归档日志文件进行恢复。




三.准备工作



    下面主要实验上面说明的四种情况,先做一下准备工作,为了方便不备份整个数据库了,改为备份一个表空间。需要做的如下,


一个表空间app1,一个用户Dave,一个表(测试表),一个冷备份,一个热备份。



1.创建一个表空间app1,命令如下,



SQL> create tablespace app1 datafile '/u01/oradata/wilson/app1_01.dbf' size 100M  

  2  extent management local uniform

  3  segment space management  auto;


Tablespace created.




2.创建一个用户



SQL> create  user Dave identified by Dave_12345

  2  default tablespace app1;


User created.



SQL> grant connect,resource to  Dave;


Grant succeeded.





3.打开另一个会话,以用户Dave登录,创建表,插入数据




SQL> create table t(id int,name varchar2(10));


Table created.



SQL> insert into t values(0,'Dave.Sun');


1 row created.



SQL> commit;


Commit complete.





4.冷备份和热备份


在目录/u01/ubackup下创建两个文件夹cold和hot。


冷备份,命令如下,


[oracle@oracle11g cold]$ cp   /u01/oradata/wilson/*  /u01/ubackup/cold/






热备份,以用户Dave登录,再插入一行数据,


SQL> insert into t values(1,'sunshine');


1 row created.




开始热备份,以sys用户登录,命令如下,


SQL> alter tablespace app1 begin backup;


Tablespace altered.



SQL> !cp  /u01/oradata/wilson/app1_01.dbf  /u01/ubackup/hot



SQL> alter tablespace app1 end  backup;


Tablespace altered.




5.在表Dave.t下,插入一条数据让它存放在归档日志中,但是它没有备份;


在用户Dave下,


SQL> insert into t values(2,'sunny');


1 row created.



SQL> commit;


Commit complete.



SQL> select * from t;


        ID NAME

---------- ----------

         0 Dave.Sun

         1 sunshine

         2 sunny



这条数据存放在联机重做日志中了,



在用户sys下,


SQL> alter system switch logfile;


System altered.



即将这条数据存放在归档日志中了。





总结一下,在冷备份下有一行数据在数据文件app1_01.dbf中,在热备下有两行数据在该数据文件下,在归档日志文件中有三行数据。






四.实验一 20130803094527531.jpg


   在数据库打开的状态时,数据文件丢失或者损坏,需要关闭数据库来恢复。——主要是应对于系统表空间和undo表空间有问题时。在系统文件有损坏时,数据库不能打开,必须关闭数据库来恢复。




1.打开数据库,删除/u01/oradata/wilson下的app1_01.dbf数据文件和系统文件system01.dbf(模拟文件损坏或丢失),命令如下,


[oracle@oracle11g wilson]$ rm  -f    /u01/oradata/wilson/ app1_01.dbf


[oracle@oracle11g wilson]$ rm  -f    /u01/oradata/wilson/ system01.dbf


关闭数据库。




2.把冷备份的数据文件复制到/u01/oradata/wilson/的目录中,



[oracle@oracle11g wilson]$ cp   /u01/ubackup/cold/app1_01.dbf  /u01/oradata/wilson/


[oracle@oracle11g wilson]$ cp   /u01/ubackup/cold/system01.dbf  /u01/oradata/wilson/



这个时候还原回来的数据文件和控制文件是不一致的,所以打开数据库时只会进入mount状态。





3.查看视图v$recover_file,



SQL> select *  from v$recover_file;


     FILE# ONLINE  ONLINE_ ERROR        CHANGE# TIME

          ---------- ------- ------- ------------------ ---------- ---------

         1 ONLINE  ONLINE                3003034 30-AUG-13

        12 ONLINE  ONLINE                3003034 30-AUG-13






这个动态性能视图给出了哪些数据文件需要,可以看到文件号。




4.使用recover命令来恢复文件,



SQL> recover datafile 1;

Media recovery complete.


SQL> recover datafile 12;

Media recovery complete.



或者使用recover database;



可以再查看一下 视图v$recover_file已经没有内容了,


SQL> select *  from v$recover_file;


no rows selected




5.打开数据库,查看表Dave.t的内容是否恢复,



SQL> alter database open;


Database altered.



SQL> select *  from Dave.t;


        ID NAME

       ---------- ----------

         0 Dave.Sun

         1 sunshine

         2 sunny


可以看到表Dave.t中的数据已经恢复回来了。








五.实验二

在数据库打开的状态时,数据文件丢失或者损坏(非系统表空间和undo表空间里的文件),在数据库打开时怎么恢复。



1.在表Dave.t中插入一行数据,备份中是不含有这条记录的,1如下,



SQL> insert into t values(3,'wound');


1 row created.



SQL> commit;


Commit complete.


切换日志,可以将内存中的数据写入数据文件中和把当前联机重做日志文件进行归档。


SQL> alter system  switch logfile;


System altered.




2.将数据文件app1_01.dbf 删除,然后查看视图v$recover_file,



[oracle@oracle11g wilson]$ rm   -f   app1_01.dbf



SQL> select *  from v$recover_file;



     FILE# ONLINE  ONLINE_ ERROR     CHANGE# TIME

     ---------- ------- ------- ------------------ ---------- ---------

        12 OFFLINE OFFLINE FILE NOT FOUND          0



可以看到12号文件已经not found了,关于12号文件的文件名是什么,可以查看视图v$datafile;


SQL> select file#,name from v$datafile;


     FILE# NAME

---------- -----------------------------------

         1 /u01/oradata/wilson/system01.dbf

         2 /u01/oradata/wilson/sysaux01.dbf

         3 /u01/oradata/wilson/undotbs01.dbf

         4 /u01/oradata/wilson/users01.dbf

         5 /u01/oradata/wilson/example01.dbf

         8 /u01/oradata/wilson/smallundo1.dbf

        12 /u01/oradata/wilson/app1_01.dbf


7 rows selected.




3.恢复数据文件,因为正在打开数据库的状态下,所以先要将有问题的数据文件offline。



SQL> alter database  datafile 12 offline;


Database altered.


或者使用文件名也行。




4.将备份的数据文件复制到/u01/oradata/wilson下(还原数据文件),



[oracle@oracle11g wilson]$ cp /u01/ubackup/hot/app1_01.dbf  /u01/oradata/wilson/


如果是复制到新的目录下,那么还需要如下命令,

alter database rename file ‘........’ to ‘.........’;来修改控制文件。




5.恢复数据文件,将其状态改为online,



SQL> recover datafile 12;

Media recovery complete.



SQL> alter database datafile 12 online;


Database altered.



6.查看表Dave.t中的数据是否恢复,



SQL> select *  from  Dave.t order by 1;


        ID NAME

---------- ----------

         0 Dave.Sun

         1 sunshine

         2 sunny

         3 wound

可以看到数据已经恢复了。




六.实验三

   数据库在关闭状态文件损坏(不能是系统表空间中的文件),业务需求要先打开数据库,再进行恢复。



1.先打开数据库,在表Dave.t中添加一行数据,新添加的数据在原先备份中是没有的,把这些数据放到归档日志文件或者联机重做日志文件中,最后查看是否恢复了。



SQL> insert into t values(4,'mm');


1 row created.



SQL> commit;


Commit complete.



把当前联机重做日志文件归档,

SQL> alter system archive log  current;


System altered.





2.关闭数据库,模拟损坏app1_01.dbf文件,



[oracle@oracle11g wilson]$ rm  -f   app1_01.dbf (模拟损坏文件)




这个时候可以在数据库关闭的情况下恢复这个数据文件,但是现在因为业务要求,需要先打开数据库,




3.打开数据库,自动进入了mount状态了,查看视图v$recover_file,



SQL> select  * from v$recover_file;


     FILE# ONLINE  ONLINE_ ERROR                 CHANGE# TIME

---------- ------- ------- ------------------ ---------- ---------

        12 ONLINE  ONLINE  FILE NOT FOUND              0



可以看到12号文件是not found了,同样也可以查看视图v$datafile来找到文件名。




4.先将12号文件offline,然后直接打开数据库




SQL> alter database datafile 12 offline;


Database altered.



SQL> alter database open;


Database altered.



现在数据库可以使用了,但是不能访问有损坏的数据文件。




5.恢复数据文件,查看表Dave.t中的数据是否恢复,



还原数据文件

[oracle@oracle11g wilson]$ cp /u01/ubackup/cold/app1_01.dbf  /u01/oradata/wilson/



恢复数据文件

SQL> recover datafile 12;

Media recovery complete.



把数据文件状态改为online,

SQL> alter database datafile 12 online;


Database altered.



查看表Dave.t中的数据,
SQL> select *  from  Dave.t order by 1;


        ID NAME

---------- ----------

         0 Dave.Sun

         1 sunshine

         2 sunny

         3 wound

         4 mm


可以看到在备份中的数据和在联机重做日志文件或者归档日志文件中的数据都已经恢复了。








七.实验四


     数据文件没有备份,但是丢失了,怎么使用联机重做日志和归档日志文件进行恢复。

这样的情况下,有几个条件需要满足才能完成恢复:



(1)数据文件不能是系统表空间中的文件,因为重做日志不能应用于它。


(2)在这个数据文件创建之后,所有的归档日志文件都在。


(3)在数据文件损坏后,控制文件没有重新创建,还包含着被损坏文件的文件名。




1.先创建个表空间和数据文件,然后在用户Dave下创建表和插入数据,



SQL> create tablespace app2 datafile '/u01/oradata/wilson/app2_01.dbf' size 10m;


Tablespace created.



在Dave用户下,

SQL> create table t2 (id int,name char(10))  tablespace app2;


Table created.



SQL> insert into t2 values(0,'Dave');


1 row created.


SQL> commit;


Commit complete.




让内存中的数据写到数据文件中,

SQL> alter system checkpoint;


System altered.



即表t2中的数据写到了app2_01.dbf数据文件上。





2.删除app2_01.dbf数据文件,模拟文件损坏,



[oracle@oracle11g wilson]$ rm   -f    app2_01.dbf


查看视图v$recover_file会看到没有记录,怎么回事?


SQL> select * from  v$recover_file;


no rows selected



这是因为数据库还没有发现有文件丢失,等到要使用这个数据文件时才能发现。



等一会发现,

SQL> select * from v$recover_file;


     FILE# ONLINE  ONLINE_ ERROR      CHANGE# TIME

           ---------- ------- ------- ------------------ ---------- ---------

         6 OFFLINE OFFLINE FILE NOT FOUND              0



再通过视图v$datafile可以看到6号文件对应的数据文件名。




3.将有问题的数据文件offline,然后从新创建一个,


SQL> alter  database datafile 6 offline;


Database altered.



新建个app2_01.dbf数据文件,这个时候这个文件还是空的,

SQL> alter database create datafile '/u01/oradata/wilson/app2_01.dbf';


Database altered.




4.恢复文件,查看结果



SQL> recover datafile 6;

Media recovery complete.



SQL> alter database datafile 6 online;


Database altered.




SQL> select * from Dave.t2;


        ID NAME

---------- -----------------------------------

         0 Dave


可以看到完成了数据恢复。



运维网声明 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-8036-1-1.html 上篇帖子: Oracle—用户管理的完全恢复(一) 下篇帖子: Oracle—用户管理的完全恢复(三) Oracle 用户

尚未签到

发表于 2013-8-11 20:30:14 | 显示全部楼层
女,喜甜食,甚胖!该女有一癖好:痛恨蚂蚁,见必杀之。问其故曰:这小东西,那么爱吃甜食,腰还那么细!

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

尚未签到

发表于 2013-8-21 09:43:04 | 显示全部楼层
看尽天下A片,心中自然无码~

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

尚未签到

发表于 2013-9-1 16:48:04 | 显示全部楼层
我的id是假冒的,大家不要相信我是骗子。

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

尚未签到

发表于 2013-10-3 21:00:14 | 显示全部楼层
过来看看的

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

尚未签到

发表于 2013-11-15 05:30:28 | 显示全部楼层
为中华而努力读书!一包中华好多钱啊~~~

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

尚未签到

发表于 2013-12-20 21:46:09 | 显示全部楼层
忘记遗忘消失这是我对你最后想说的话。

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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