最近在学习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
四 心得:
Oracle 联机重做日志(ONLINE REDO LOG FILE)主要用于数据库的介质恢复,比如数据文件的损坏。
归档日志(ARCHIVED LOG FILE)其实就是对在线日志的备份,毕竟在线日志空间有限而仅能保存一定时间的重做日志数据。
归档日志与全库备份文件的结合恢复效果更好。