日期:2014-05-16  浏览次数:20516 次

实验说明Oracle重做日志与归档日志的作用

最近在学习Oracle 归档日志模式的管理, 特撰写一下学习心得,不足之处还望指出!!!

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

一 系统环境: 


1、操作系统:Windows xp sp3
2、数据库: Oracle 10g 


二 Oracle 重做日志的作用: [模拟介质恢复]

1. 关闭数据库归档模式:

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  608174080 bytes
Fixed Size                  1250404 bytes
Variable Size             159386524 bytes
Database Buffers          440401920 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> alter database noarchivelog;

数据库已更改。
  

2.创建测试表空间:

create tablespace test datafile
'e:\oradata\test.ora' size 5M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
default storage (initial 128K next 1M pctincrease 0);

3.创建测试用户与测试表:

drop user test cascade;
create user test identified by test default tablespace test;
grant connect,resource to test;
conn test/test

create table a(a number);
 begin
   for i in 1..100000 loop
    insert into a values(i);
   end loop;
 end;

commit;

4. 拷贝test.ora为test1.ora文件。

5. insert into a select * from a;    --20万条

6.关闭数据库
  shutdown immediate

7. 将文件test1.ora与test.ora名称互换。

8. 再次启动数据库
   startup


9. 进行介质恢复:

 

三 Oracle 归档日志作用: [模拟重做日志丢失]

  1.  紧接着实验二 第9步, 我们开启归档日志:

SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

  2. 删除a表部分数据:

SQL> conn test/test
已连接。
SQL> delete from a where rownum<=100000;

已删除100000行。

SQL> commit;

提交完成。

  3. 做重做日志归档操作,并清空当前在线日志文件:

SQL> select group#, members, archived, status from v$log;

    GROUP#    MEMBERS ARC STATUS
---------- ---------- --- ----------------
         1          1 NO  CURRENT
         2          1 YES INACTIVE
         3          1 YES ACTIVE

SQL> alter system switch logfile;

系统已更改。
SQL> alter system checkpoint;

系统已更改。

SQL> alter database clear logfile group 1;

数据库已更改。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  608174080 bytes
Fixed Size                  1250404 bytes
Variable Size             176163740 bytes
Database Buffers          423624704 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01113: 文件 11 需要介质恢复
ORA-01110: 数据文件 11: 'E:\ORADATA\TEST.ORA'


SQL> recover database
ORA-00279: 更改 3455649 (在 11/21/2012 13:23:53 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2012_11_21\O1_MF_1_212_%U_.ARC
ORA-00280: 更改 3455649 (用于线程 1) 在序列 #212 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

已应用的日志。
完成介质恢复。
SQL> alter database open;

数据库已更改。



4. 以test用户登录查看a表中数据是否还原:

SQL> select count(1) from a;

  COUNT(1)
----------
    100000