日志文件的大小: 前面我们提到,当日志文件发生切换时(Log Switch),会触发一个检查点,那么日志文件的大小就和检查点的触发频率相关。更为频繁的检查点可以缩短数据库的恢复时间,但是过于频繁的检查点却会带来性能负担。所以如何合理地设置日志文件的大小也是数据库优化的一个重要内容。 而且必须考虑到的是,如果日志文件意外损坏或丢失,那么就会丢失数据,所以更大的日志文件可能意味着更多的数据损失风险。数据库的任何一个调整都是需要慎重的。下面让我们从Oracle不同版本的变化中,揣摩一下Oracle的心思。 在Oracle 8i之中,缺省的Redo Log file大小是1MB;在Oracle[......]
日志的块大小
日志的块大小: 初始化参数LOG_BUFFER决定了Redo Log Buffer的大小,虽然LOG_BUFFER中的Redo Entries的大小是以bytes为单位,但是LGWR仍然以Block为单位把Redo写入磁盘,Redo Block Size是Oracle源代码中固定的,与操作系统相关。 通常的操作系统都是以512bytes为单位,如Solaris、AIX、Windows NT/2000、Linux等。这个Log Size可以从Oracle的内部视图中获得: sys@TQGZS> select max(lebsz) from x$kccle;MAX(LEBSZ)----[......]
日志的状态
日志的状态: 可以通过v$log视图来查看日志文件的状态: sys@NEI> select group#,status,first_change# from v$log; GROUP# STATUS FIRST_CHANGE#---------- ---------------- ------------- 1 CURRENT [......]
commit做了什么?
commit做了什么? 当完成事务操作,发出commit命令之后,随后会收到一个反馈Commit complete。 dbtan@NEI> insert into emp select * from emp;128 rows created.dbtan@NEI> commit;Commit complete. 提交完成,这个提示意味着Oracle已经将此时间点之前的Redo写入重做日志文件件,这个日志写完成之后,Oracle可以释放用户去执行其他任务。如果此后发生数据库崩溃,那么Oracle可以从重做日志文件中恢复这些提交过的数据,从而保证提交成功的数据不会丢失。 解释:[......]
Redo Log Buffer的大小设置
Redo Log Buffer的大小设置: Redo Log Buffer的大小由初始化参数LOG_BUFFER定义,该参数的缺省值为Max(512KB,128KB*CPU_COUNT)。通常这一缺省值是足够的,从上篇日志可以知道,Redo Log Buffer的写出操作是相当频繁的,所以过大的Log Buffer设置通常是没有必要的;如果缺省值不能满足要求,一般来说3MB是一个较为合理的调整开端。 log_buffer参数的设置是否需要调整,可以从数据库的等待事件来判断: sys@NEI> select event#,name from v$event_name where na[......]