65.Which two statements are true about checkpointing? (Choose two.)
A.The checkpoint frequency decreases with the smaller redo log file size.
B.It ensures that all committed data is written to the data files during normal shutdown.
C.The frequent full checkpoint in a database can cause the overall degradation of the database performance.
D.It prompts the Checkpoint (CKPT) process to write data to the data files and redo information to the online redo log files.
答案:BC
解析:参考63
参考:http://docs.oracle.com/cd/E11882_01/server.112/e40540/startup.htm#CNCPT89043
A checkpoint is a crucial mechanism in consistent database shutdowns, instance recovery, and Oracle Database operation generally.
checkpoint保障数据库一致性、实例恢复、数据库操作的关键的技术
目的:
1.减少恢复时间
2.确保缓冲区缓冲区中的脏缓冲区定期写入磁盘
3.确保在一个一致的关机过程中,所有提交的数据写入磁盘
所以B正确
CKPT来实现checkpoint,当数据库进行修改的时候,会写数据文件和日志文件,由于日志文件时顺序写,数据文件是分散写
因此为了提高效率,减少IO就将些数据文件这部分先放到缓存中(buffer cache),这个时候相当于写日志文件是同步的,写数据文件不同步
(这也就是当我们执行一个大数据量的时候比如update,时间特别长,而执行commit却时间很多,就是因为需要从数据文件中将数据缓存到buffer和redo中
而commit只是标记了下,并没有真正的开始写数据文件)
为了将buffer cache中的数据写入数据文件,就有ckpt了,ckpt执行后会出发dbrn进行将缓存中的脏数据写入数据文件,并且修改数据文件的
scn号码,同时修改控制文件的scn号码这样数据文件就和控制文件一致了,如果数据意外宕机,那么就造成了数据不一致的情况
这里其实主要是redo和数据文件及控制文件不一致,这就需要通过redo进行恢复,这个时候系统会判断数据文件的scn和redo的scn
然后将大于数据文件的scn这部分redo进行前滚,也就是写入数据文件,如果还没有提交事务,那么就会回滚也就是还没有写到redo中
由于ckpt不仅出发dbwn写数据文件,还会将校验点写入到所有相关的数据文件的文件头中,还要将校验点号码、重做日志序列号、归档日志名称和最低、最高scn号都会写入控制文件中
因此会产生大量的IO,因此频繁的ckpt是不合适的所以C正确
checkpoint执行的条件有下面几种情况
1.日志切换的时候(ALTER SYSTEM SWITCH LOGFILE)
2.发出checkpoint命令(ALTER SYSTEM checkpoint)
3.ALTER TABLESPACE/DATAFILE READ ONLY
4.SHUTDOWN
5.ALTER TABLESPACE TS_NAME BEGIN BACKUP/END BACKUP。
6.满足FAST_START_IO_TARGET/FAST_START_MTTR_TARGET/LOG_checkpoint_INTERVAL/LOG_checkpoint_TIMEOUT
A:说的是redo变小checkpoint频率就会变小,从上边可以看到当日志切换的时候也会触发checkpoint,因此如果redo文件小说明切换频率快,说明checkpoint也快,因此这个应该是说反了
D:说是会出发dbwn和LGWR,这里dbwn会触发,但是lgwr不会,因此也是错误的
A.The checkpoint frequency decreases with the smaller redo log file size.
B.It ensures that all committed data is written to the data files during normal shutdown.
C.The frequent full checkpoint in a database can cause the overall degradation of the database performance.
D.It prompts the Checkpoint (CKPT) process to write data to the data files and redo information to the online redo log files.
答案:BC
解析:参考63
参考:http://docs.oracle.com/cd/E11882_01/server.112/e40540/startup.htm#CNCPT89043
A checkpoint is a crucial mechanism in consistent database shutdowns, instance recovery, and Oracle Database operation generally.
checkpoint保障数据库一致性、实例恢复、数据库操作的关键的技术
目的:
1.减少恢复时间
2.确保缓冲区缓冲区中的脏缓冲区定期写入磁盘
3.确保在一个一致的关机过程中,所有提交的数据写入磁盘
所以B正确
CKPT来实现checkpoint,当数据库进行修改的时候,会写数据文件和日志文件,由于日志文件时顺序写,数据文件是分散写
因此为了提高效率,减少IO就将些数据文件这部分先放到缓存中(buffer cache),这个时候相当于写日志文件是同步的,写数据文件不同步
(这也就是当我们执行一个大数据量的时候比如update,时间特别长,而执行commit却时间很多,就是因为需要从数据文件中将数据缓存到buffer和redo中
而commit只是标记了下,并没有真正的开始写数据文件)
为了将buffer cache中的数据写入数据文件,就有ckpt了,ckpt执行后会出发dbrn进行将缓存中的脏数据写入数据文件,并且修改数据文件的
scn号码,同时修改控制文件的scn号码这样数据文件就和控制文件一致了,如果数据意外宕机,那么就造成了数据不一致的情况
这里其实主要是redo和数据文件及控制文件不一致,这就需要通过redo进行恢复,这个时候系统会判断数据文件的scn和redo的scn
然后将大于数据文件的scn这部分redo进行前滚,也就是写入数据文件,如果还没有提交事务,那么就会回滚也就是还没有写到redo中
由于ckpt不仅出发dbwn写数据文件,还会将校验点写入到所有相关的数据文件的文件头中,还要将校验点号码、重做日志序列号、归档日志名称和最低、最高scn号都会写入控制文件中
因此会产生大量的IO,因此频繁的ckpt是不合适的所以C正确
checkpoint执行的条件有下面几种情况
1.日志切换的时候(ALTER SYSTEM SWITCH LOGFILE)
2.发出checkpoint命令(ALTER SYSTEM checkpoint)
3.ALTER TABLESPACE/DATAFILE READ ONLY
4.SHUTDOWN
5.ALTER TABLESPACE TS_NAME BEGIN BACKUP/END BACKUP。
6.满足FAST_START_IO_TARGET/FAST_START_MTTR_TARGET/LOG_checkpoint_INTERVAL/LOG_checkpoint_TIMEOUT
A:说的是redo变小checkpoint频率就会变小,从上边可以看到当日志切换的时候也会触发checkpoint,因此如果redo文件小说明切换频率快,说明checkpoint也快,因此这个应该是说反了
D:说是会出发dbwn和LGWR,这里dbwn会触发,但是lgwr不会,因此也是错误的