众所周知,我们的核心生产数据库通常都是在归档模式下运行的,更不用说还配置DG环境的了。开启归档,并保证所有归档不丢失,就能保证我们对数据库所做的任何修改不会丢失,归档日志可谓是恢复的根本,如果丢失归档,那么即使RMAN功能再强大,也无法对丢失的数据进行恢复。所以我们通常配置的RMAN策略就是全备+归档+控制文件自动备份。这里的归档不是指数据库创建以来生成的归档(那量也太大了),而是当进行RMAN非一致性备份时新产生的那部分归档日志,用来保证数据库可以前推到一致性状态,这样才能顺利open数据库。以下的测试只是想说明归档日志对恢复数据的重要性,并没有用到RMAN来进行恢复。--------------------------------------分割线 --------------------------------------Oracle 11G RAC 修改归档模式 http://www.linuxidc.com/Linux/2013-07/87704.htmOracle手工完全恢复案例(归档模式) http://www.linuxidc.com/Linux/2013-06/86719.htmOracle手工恢复案例(非归档模式) http://www.linuxidc.com/Linux/2013-06/86718.htmOracle归档模式设置的相关指令与简要说明 http://www.linuxidc.com/Linux/2013-04/82512.htmOracle 10g 归档模式下备份脚本 http://www.linuxidc.com/Linux/2012-10/73045.htmOracle 归档模式与非归档模式的切换 http://www.linuxidc.com/Linux/2013-12/94535.htm--------------------------------------分割线 --------------------------------------
测试一:归档日志健全未丢失 --连接到Oracle,确保是运行在归档模式下[oracle@ora10g ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 8 13:46:53 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options SQL> archive log listDatabase log mode Archive Mode --归档模式Automatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 172Next log sequence to archive 174Current log sequence 174SQL> set lin 130 pages 130SQL> col name for a45SQL> select file#,name from v$datafile; FILE# NAME---------- --------------------------------------------- 1 /u01/app/oracle/oradata/ora10g/system01.dbf 2 /u01/app/oracle/oradata/ora10g/undotbs01.dbf 3 /u01/app/oracle/oradata/ora10g/sysaux01.dbf 4 /u01/app/oracle/oradata/ora10g/users01.dbf 5 /u01/app/oracle/oradata/ora10g/example01.dbf
--创建测试表空间、用户、表SQL> create tablespace zlm_test datafile "/u01/app/oracle/oradata/ora10g/zlm01.dbf" size 50m; Tablespace created. SQL> create user zlm identified by zlm default tablespace zlm_test; User created. SQL> grant connect,resource to zlm; --赋权限 Grant succeeded. SQL> select file#,name from v$datafile; FILE# NAME---------- --------------------------------------------- 1 /u01/app/oracle/oradata/ora10g/system01.dbf 2 /u01/app/oracle/oradata/ora10g/undotbs01.dbf 3 /u01/app/oracle/oradata/ora10g/sysaux01.dbf 4 /u01/app/oracle/oradata/ora10g/users01.dbf 5 /u01/app/oracle/oradata/ora10g/example01.dbf 6 /u01/app/oracle/oradata/ora10g/zlm01.dbf --新增了6号文件作为测试表存放的物理介质 6 rows selected. SQL> create table zlm.test1 as select rownum as id,object_name from dba_objects where rownum<=5; Table created. SQL> col object_name for a15
SQL> select * from zlm.test1; ID OBJECT_NAME---------- --------------- 1 ICOL$ 2 I_USER1 3 CON$ 4 UNDO$ 5 C_COBJ#
--查看当前online日志文件状态SQL> select group#,status,archived from v$log; GROUP# STATUS ARC---------- ---------------- --- 1 INACTIVE YES 2 INACTIVE YES 3 CURRENT NO --当前日志组为3,未归档
--归档当前日志(多次)SQL> alter system archive log current; System altered. SQL> alter system archive log current; System altered. SQL> alter system archive log current; System altered. 这里进行了3次归档当前日志文件的操作,目的是使online日志被刷新,强制其归档,写到归档日志中去,因为我们要测试的是归档,否则恢复文件时,会自动去online日志中查找,即便是非归档模式,只要online日志还未被刷新,依旧是可以恢复的
SQL> select group#,status,archived from v$log; GROUP# STATUS ARC---------- ---------------- --- 1 INACTIVE YES 2 INACTIVE YES 3 CURRENT NO --虽然看起来和刚才上一步一致,但此时其实已经把第3组online日志刷新掉了
--保险起见,再归档一次(可选)SQL> alter system archive log current; System altered. SQL> select group#,status,archived from v$log; GROUP# STATUS ARC---------- ---------------- --- 1 CURRENT NO 2 INACTIVE YES 3 ACTIVE YES --现在新一轮的第3组的日志也已经归档了
--一致性关闭数据库,在OS级别删除测试文件datafile 6SQL> shutdown immediate
Database closed.Database dismounted.ORACLE instance shut down.SQL> ![oracle@ora10g ~]$ cd $ORACLE_BASE/oradata/ora10g[oracle@ora10g ora10g]$ ll -lrthtotal 1.7G-rw-r----- 1 oracle oinstall 51M Sep 5 10:13 test02.dbf-rw-r----- 1 oracle oinstall 301M Sep 5 10:13 test01.dbf-rw-r----- 1 oracle oinstall 201M Sep 16 16:56 temp01.dbf-rw-r----- 1 oracle oinstall 51M Sep 18 13:49 redo02.log-rw-r----- 1 oracle oinstall 51M Sep 18 13:51 redo03.log-rw-r----- 1 oracle oinstall 51M Sep 18 13:51 zlm01.dbf-rw-r----- 1 oracle oinstall 31M Sep 18 13:51 users01.dbf-rw-r----- 1 oracle oinstall 166M Sep 18 13:51 undotbs01.dbf-rw-r----- 1 oracle oinstall 561M Sep 18 13:51 system01.dbf-rw-r----- 1 oracle oinstall 271M Sep 18 13:51 sysaux01.dbf-rw-r----- 1 oracle oinstall 51M Sep 18 13:51 redo01.log-rw-r----- 1 oracle oinstall 101M Sep 18 13:51 example01.dbf-rw-r----- 1 oracle oinstall 7.2M Sep 18 13:52 control03.ctl-rw-r----- 1 oracle oinstall 7.2M Sep 18 13:52 control02.ctl-rw-r----- 1 oracle oinstall 7.2M Sep 18 13:52 control01.ctl[oracle@ora10g ora10g]$ rm -f zlm01.dbf [oracle@ora10g ora10g]$ exitexit
--重启数据库SQL> startupORACLE instance started. Total System Global Area 285212672 bytesFixed Size 1218992 bytesVariable Size 88082000 bytesDatabase Buffers 192937984 bytesRedo Buffers 2973696 bytesDatabase mounted.ORA-01157: cannot identify/lock data file 6 - see DBWR trace fileORA-01110: data file 6: "/u01/app/oracle/oradata/ora10g/zlm01.dbf" 可以看到,此时是无法open数据库的,因为数据库文件物理上已经不存在,而在控制文件中是有记录的,这里提示的是“cannot identify/lock data file 6”,而当如果仅仅是物理上存在,数据文件头中的信息与控制文件中记录的数据文件头信息不一致时,会提示xxx文件需要恢复
--手动创建一个datafile 6SQL> alter database create datafile 6; Database altered. 注意,此时仅仅是创建了一个不一致的datafile 6而已,也可以通过RMAN的restore datafile 6;命令来实现,作用是一样的
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-09/106883p2.htm
MySQL表的锁等待SQLyog客户端无法连接MySQL服务器案例分析相关资讯 Oracle归档模式 Oracle归档
- 归档模式下四种完全恢复的场景 (07/27/2015 17:52:18)
- alter system archive log current (11/26/2014 11:09:24)
- Oracle 10g/11g RAC 启停归档模式 (07/22/2014 10:17:32)
| - Oracle归档模式下恢复一个被 (02/21/2015 11:02:47)
- 如何启动或关闭Oracle的归档( (10/16/2014 18:39:19)
- Oracle 归档错误案例 (05/22/2014 10:49:48)
|
本文评论 查看全部评论 (0)