首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【DB笔试面试532】在Oracle中,什么是检查点?如何调优检查点?

在Oracle数据库系统中,写日志和写数据文件是数据库中消耗I/O较大的两种操作。在这两种操作中,写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性能和数据的安全,通常数据库都是在提交(COMMIT)完成之前要先保证Redo日志条目都被写入到日志文件中,才会给用户反馈提交完成的通知(Commit complete.),而保存在Buffer Cache中的脏块会不定期地、分批地写入到数据文件中。也就是说,日志写入和提交操作是同步的,而数据写入和提交操作是不同步的,修改的数据并不是在用户提交后就立马写入数据文件中。这样就存在一个问题,当数据库崩溃的时候并不能保证Buffer Cache里面的脏数据全部写入到数据文件中,那么在实例启动的时候就要使用日志文件进行恢复操作,将数据库恢复到崩溃之前的状态,从而保证数据的一致性。那怎么确定该从何时、从哪里开始恢复呢,Oracle使用了检查点(Checkpoint)来进行确定。

02

在Oracle中,什么是检查点?如何调优检查点?

在Oracle数据库系统中,写日志和写数据文件是数据库中消耗I/O较大的两种操作。在这两种操作中,写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性能和数据的安全,通常数据库都是在提交(COMMIT)完成之前要先保证Redo日志条目都被写入到日志文件中,才会给用户反馈提交完成的通知(Commit complete.),而保存在Buffer Cache中的脏块会不定期地、分批地写入到数据文件中。也就是说,日志写入和提交操作是同步的,而数据写入和提交操作是不同步的,修改的数据并不是在用户提交后就立马写入数据文件中。这样就存在一个问题,当数据库崩溃的时候并不能保证Buffer Cache里面的脏数据全部写入到数据文件中,那么在实例启动的时候就要使用日志文件进行恢复操作,将数据库恢复到崩溃之前的状态,从而保证数据的一致性。那怎么确定该从何时、从哪里开始恢复呢,Oracle使用了检查点(Checkpoint)来进行确定。

05

检查两个数据库里的表名、字段是否一致的一种方法

不知道大家有没有遇到过这种情况。 程序已经给客户安装上了,并且客户已经录入了一些信息,然后程序还需要作比较大的变动(修改功能、增加模块等),数据库就不可避免要做一些改动。 但是这时候已经不能把客户的数据库删掉,换上新的数据库了。只能用添表、添字段的方式了。 如果修改程序的时候做了详细的文档的话,那么就可以按照文档来修改数据库了,但是如果没有文档,或者文档记录的不全,或者修改完成之后想检查一下有没有“漏网之鱼”。那么这时候应该怎么办呢?难道要一个一个的检查?! 我们可以使用两个视图和几个SQL

08
领券