共计 2014 个字符,预计需要花费 6 分钟才能阅读完成。
1 查询隐含参数
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.inst_id = USERENV (‘Instance’)
AND y.inst_id = USERENV (‘Instance’)
AND x.indx = y.indx
AND x.ksppinm LIKE ‘%&par%’
2 _datafile_write_errors_crash_instance
11.2.0.2 新增,默认为 true,如果出现写错误,直接实例宕掉,以前为 offline;
3 _use_adaptive_log_file_sync
11.2.0.1 和 11.2.0.2 两个版本该参数默认是 false。
从 11.2.0.3 开始,这个参数默认值是 true,也就是开始启用“自适应日志同步机制”。
开启改参数后,日志同步机制会在 2 种方式中切换。
该参数决定了,foreground/user session 和 LGWR 进程通过什么方式获知 commit 操作已完成(也就是 redo 写 log file 完成)。
Post/wait, traditional method for posting completion of writes to redo log
传统方式,在 11.2.0.3 之前,user session 等待 LGWR 通知 redo 写入到 log file 完毕,被动方式。
优点:post/wait 方式,user session 几乎能立即发现 redo 已刷到磁盘。
Polling, a new method where the foreground process checks if the LGWR has completed the write.
新方式,主动监测 LGWR 是否完成写入,主动方式。这种方式比 Post/wait 方式响应速度慢,但是可以节约 CPU 资源。
优点:当 commit 完成后,LGWR 会把 commit 完成的消息通知给很多 user session,这个过程消耗大量 CPU。
Polling 方式采用朱勇监测 LGWR 释放写入 redo 完成,所以释放了 LGWR 占用的 CPU 资源。
4 _external_scn_rejection_threshold_hours
11.2.0.2 及以上版本的这个参数默认值是 24,其他版本默认值是 744。这样使 11.2.0.2 以下版本的数据库其 Headroom 的阈值增得较大。
5 _minimum_giga_scn
11.2.0.2 打上相关补丁后无效了;另 alter session set events’10015 trace name adjust_scn level XXX’也推不动 SCN 了,查看 SCN
推荐推进 SCN 的方法 1:
1、当数据块为 8k 的时候,控制文件大小为 16k
2、找到 Controlfile Checkpointed at scn,偏移量为第一个块的 60,比如 0×4060,然后具体位置在 0×4060 的第 9 至第 14 个 byte
3、找到第一个块的第一行,如 0×4000,将 offset 为 15 的 flag 由 0×04 改为 0×00,并同时将 checksum 值(offset 为 16、17)全部清零。
推荐推进 SCN 的方法 2:
“oradebug poke <address> <length> <value>”allows you to modify a given region of memory (length of memory is limited to size of scalar C types)
SQL> col current_scn for 99999999999;
SQL> select current_scn from v$database;
CURRENT_SCN
————
12414232664
SQL> select to_char(CHECKPOINT_CHANGE#,’XXXXXXXXXXXX’) from v$database;
TO_CHAR(CHECK
————-
2E3F154CE
SQL> oradebug dumpvar sga kcsgscn_
kcslf kcsgscn_ [5000C974, 5000C994) = 00000002 E3F243A0 05AC1DA5 00000000 00000000 00000000 00000000 5000C58C
SQL>oradebug poke 0x5000C974 4 0X300000000
SQL>select to_number(‘300000000′,’XXXXXXXXXXXXXX’) current_scn from dual;
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-10/147419.htm