【转载】ALTER SYSTEM SWITCH LOGFILE 意义与作用及与ALTER SYSTEM ARCHIVE LOG CURRENT区别

一、ALTER SYSTEM 

SWITCH LOGFILE Clause

SWITCH LOGFILE 子句允许您明确强制 Oracle 开始写入新的重做日志文件组,而不管当前重做日志文件组中的文件是否已满。 当您强制进行日志切换时,Oracle 开始执行检查点,但会立即将控制权返回给您,而不是在检查点完成时返回。 要使用此子句,您的实例必须打开数据库。

alter  system switch logfile;

说明:

(1)在logfile switch的时候会触发arch进程,即通知归档进程说那个日志可以归档了。
(2)logfile switch的时候会触发ckpt进程。而ckpt进程又会触发dbwr进程。dbwr进程会把上一个redo中保护的储藏在buffer cache中的dirty buffer全部写回磁盘。然后,ckpt进程纪录scn到controlfile中,这时会把redo log的状态由active 变成inactive。
由此我们可以看出处于inactive状态的redo log对于instance recovery是没有用处了。但是它可能对于meda recovery还有用处,因为处于inactive状态的redo log可能已经归档,也可能没有归档。
出现 checkpoint not complete,unable to allocate new redo log file的错误,是因为lgwr要覆盖一个其上检查点过程没有结束的日志文件,lgwr会等待dbwr完成,同时出现此错误。出现这个错误的原因,大概有几点,一个是dbwr写出速度太慢,一个是buffer cache中的脏数据太多。即事务太频繁,另一个也可能是日志太小,或日志组太少导致的。

CURRENT Clause

指定 CURRENT 以手动归档指定线程的当前重做日志文件组,强制进行日志切换。 如果省略 THREAD 参数,则 Oracle 会归档所有启用线程的所有重做日志文件组,包括当前日志之前的日志。 您只能在数据库打开时指定 CURRENT。

alter system archive log current;

 

NOSWITCH

如果要手动归档当前重做日志文件组而不强制进行日志切换,请指定 NOSWITCH。 此设置主要用于备用数据库,以防止主数据库关闭时出现数据分歧。 分歧意味着在主数据库发生故障的情况下可能会丢失数据。
仅当您的实例已挂载数据库但未打开时,您才可以使用 NOSWITCH 子句。 如果数据库处于打开状态,则此操作会自动关闭数据库。 然后,您必须手动关闭数据库,然后才能重新打开它

ALTER SYSTEM ARCHIVE LOG CURRENT NOSWITCH;

 

 

二、备份恢复中用到的几个操作

 

alter system checkpoint;
alter system archive log all;
alter system archive log current

alter system switch logfile; 

 

1:alter system checkpoint; 

Specify CHECKPOINT to explicitly force Oracle to perform a checkpoint, ensuring that all changes made by committed transactions are written to datafiles on disk. You can specify this clause only when your instance has the database open. Oracle does not return control to you until the checkpoint is complete.

强迫oracle进行以次检查点,确保所有提交的事务的改变都被写到磁盘数据文件上。但此时数据库必须是打开的状态。

2: alter system archive log all;

手工归档所有的日志文件组 

3:alter system archive log current 

手工归档活动的日志文件组。
4: alter system switch logfile;
The SWITCH LOGFILE clause lets you explicitly force Oracle to begin writing to a new redo log file group, regardless of whether the files in the current redo log file group are full. When you force a log switch, Oracle begins to perform a checkpoint but returns control to you immediately rather than when the checkpoint is complete. To use this clause, your instance must have the database open.

开始写新的日志文件组。不管当前日志文件组是否满了。 

 

参考

http://blog.163.com/zengbo249tiancai@126/blog/static/108286622012101410102626/

            http://www.itpub.net/thread-287031-1-1.html

posted @ 2023-01-09 11:12  雪竹子  阅读(968)  评论(0编辑  收藏  举报