oracle 归档模式

来源:互联网 发布:cs录屏软件 编辑:程序博客网 时间:2024/06/10 13:53
Oracle数据库可以运行在两种模式下:
   归档模式(archivelog)和非归档模式(noarchivelog).

归档模式&非归档模式区别
归档模式,可以在线|离线备份数据库,可以是全备份或者是部分备份(单个表空间|数据文件)
非归档模式,只能离线备份而且必须备份所有的数据文件,控制文件,日志文件
最大的区别是归档模式能够做到零数据丢失;当然归档会消耗一些存储和性能资源


归档模式工作方式:数据库有DML或其它事务处理时,日志写进程LGWR会把语句写入到日志文件LOG-A中, 然后数据库会把改的数据调到内存中,修改完成后(修改的事务也会被记录到LOG-A中),不知道在什么情况下,会把脏数据写回磁盘.
LOG-A写满后切换日志:CKPT被触发,告知控制文件有日志且换发生,CKPT工作完成,数据库继续工作,新产生的日志会被写到LOG-B中,等LOG-B也被写满,切换日志,归档进程被唤起,LOG-A中的数据copy到一个文件里面(我是这么想的,我不知道这个文件叫什么名字)然后数据库的事务日志又源源不断的写到LOG-A中,按照这种工作方式,你的数据库即使出现问题也会被回复到down机前的最后一刻的状态

非归档模式不保存旧日志,
LOG-A满后切换到LOG-B,LOG-B满后再切换回LOG-A,LOG-A中的旧数据会被覆盖.

检查归档模式命令:  SQL> archive log list
echo: Database log mode No Archive Mode;Automatic archival Disabled;Archive destination USE_DB_RECOVERY_FILE_DEST;Oldest online log sequence 15;Current log sequence 17
设置归档模式: SQL> shutdown immediate;
echo: Database closed. Database dismounted. ORACLE instance shut down.
SQL> startup mount
echo: ORACLE instance started. Total System Global Area 1258291200 bytes;Fixed Size 1219160 bytes;Variable Size 318768552 bytes;Database Buffers 922746880 bytes;Redo Buffers 15556608 bytes;Database mounted.
SQL> alter database archivelog;
echo: Database altered.
SQL> alter database open;
echo: Database altered.
SQL> archive log list;
echo: Database log mode Archive Mode;Automatic archival Enabled;Archive destination USE_DB_RECOVERY_FILE_DEST;Oldest online log sequence 15;Next log sequence to archive 17;Current log sequence 17


停止归档模式命令:  SQL>alter database noarchivelog
Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式.在pfile/spfile中设置如下参数:
log_archive_start = true

重启数据库此参数生效,此时数据库处于自动归档模式.也可以在数据库启动过程中,手工执行:
archive log start

使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式.10g使用db_recovery_file_dest来作为归档日志的存放地 
SQL> show parameter db_recovery;
NAME TYPE VALUE
db_recovery_file_dest        string         /home/oracle/ora10g/flash_recovery_area/
db_recovery_file_dest_size big integer 20G

可以修改db_recovery_file_dest_size参数的大小: alter system set db_recovery_file_dest_size=21474836480
原创粉丝点击