最近在学习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 中
指定日志: {=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)其实就是对在线日志的备份,毕竟在线日志空间有限而仅能保存一定时间的重做日志数据。
归档日志与全库备份文件的结合恢复效果更好。
-------------------------
present by dylan.