1、你这个是数据仓库系统,产生的redo ,大多都是没有用的。所以不用很大的redo。 2、但是,你产生的redo很多,势必会引起IO繁忙,条件允许的情况所以建议将数据和redo放到不同的高速存储上;如果条件不允许,放到不同的raid,使用不同控制器,但是不需要做条带化,因为redo是顺序写的,对与条带化不条带化都是没啥大的分别的。 3、对于你的挂起,是到底什么情况下挂起,是执行1条,还是10条,又或者是1w条。没有描述清楚。 4、日志组大了会有的风险,会导致实例恢复的时间很长。另外在极端倒霉的情况下,如果在数据恢复过程中,实例再次down掉,比如掉电,那会导致数据丢失。这个对于OLTP数据库是致命的。 |
我这生产库上一跑数据日志组一分钟一组啊,各位老师有什么解决方案? |
你发起提交只是把log buffer的数据写到redo文件,db buffer的数据还不一定写,当将来出问题的时候,通过日志可以把数据恢复回来 |
1、commit会触发lgwr , 将log buffer的日志写到redo log,redo就是硬盘上的文件。你的当前redo是50M,你修改一条数据产生的日志,还不足以让日志切换。 2、INACTIVE 状态,说明对应的buffer cache脏块已经写到磁盘。 3、ckpt会更新控制文件中的LRBA地址。另外对与ckpt和lgwr可以说他们有间接关系,ckpt进程,发现当checkpoit队列过长时,IO也不是很繁忙的时候,会适当的触发dbwr将最早脏的块写入磁盘,从而缩短检查点队列。在dbwr触发将脏块写入磁盘时,那么对应的log buffer中的日志一定确认是写到redo中,这也是官方文档中,lgwr触发的最后一个条件(如下)。 When do the LGWR writes to the online redo logs? • At commit • When one-third full • When there is 1 MB ofredo • Every three seconds • Before DBWn writes 希望可以帮到你。 |