作者: Maclean Liu, post on December 31st, 2011 一套HP-UX上的10.2.0.4 RAC系统,其中一个节点出现大量的latch free:SQL memory manager latch等待事件, 相关ADDM性能信息:
SELECT KSMCHCLS CLASS, COUNT(KSMCHCLS) NUM, SUM(KSMCHSIZ) SIZ, To_char( ((SUM(KSMCHSIZ)/COUNT(KSMCHCLS)/1024)),’999,999.00′)||’k’ “AVG SIZE” FROM X$KSMSP GROUP BY KSMCHCLS; CLASS NUM SIZ AVG SIZE ——– ———- ———- ———— R-freea 927 9481080 9.99k freeabl 1037478 2001975328 1.88k R-free 593 170107192 280.14k recr 515080 595805056 1.13k R-perm 498 35345056 69.31k R-recr 2 . . . → Read More: latch free:SQL memory manager latch
作者: Maclean Liu, post on October 31st, 2011
这是一套Exadata 上的11.2.0.1 四节点RAC 系统,从今年初开始频繁地因为LMS后台进程出现内部错误ORA-600[kjbmprlst:shadow]而导致实例意外终止, 虽然是4节点RAC 保证了其高可用性, 但是仍因为 实例经常意外终止 导致应用程序交易失败。
实际我在7月份已经分析过该问题了, 详见<Oracle RAC内部错误:ORA-00600[kjbmprlst:shadow]一例>一文 , kjbmprlst:shadow内部函数用以管理kjbm shadow锁(/libserver10.a/kjbm.o )信息,存在某个已关闭的lock没有及时message给master node的代码漏洞。 实际上当时我已经给出了禁用DRM 可能可以避免该ORA-600[kjbmprlst:shadow] 的看法 ,但是 翻阅MOS 上所有现有的ORA-600[kjbmprlst:shadow] case均没有提及disable DRM可以是一种workaround的途径, 提交SR 也没有得到Oracle GCS关于该看法的 肯定回答, 此外还考虑到 核心的产品环境 使用11.2.0.1 这个bug 较多的版本确实不合适, 升级到 11.2.0.2 已修复该Bug 10121589 的bundle Patch 也算是一种不错的方案 ,所以也就没有深究下去。
之后就一直在做升级Exadata到11.2.0.2 的一些准备工作, 但是用户最后考虑到升级Exadata的步骤过于复杂, 很多步骤是不可回退的, 而且在国内升级的案例目前也不多, 推翻了 升级的方案, 于是有了下面的这一段故障分析
故障特征
如上面所说的这是一套Exadata上的4节点 . . . → Read More: 一次Exadata上的ORA-600[kjbmprlst:shadow]故障分析
作者: Maclean Liu, post on September 9th, 2011 有网友反映windows 2003 上的10.2.0.4数据库,MMON的Slave后台进程报带有NEWLEN: MESSAGES的相关日志,如:
*** ACTION NAME:(Auto ADDM Slave Action) 2011-09-09 18:00:12.053 *** MODULE NAME:(MMON_SLAVE) 2011-09-09 18:00:12.053 *** SERVICE NAME:(SYS$BACKGROUND) 2011-09-09 18:00:12.053 *** SESSION ID:(797.606) 2011-09-09 18:00:12.053 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: newlen: 0 [kdl_trim]: . . . → Read More: MMON Slave日志[KDL_TRIM]: NEWLEN: MESSAGES
作者: Maclean Liu, post on September 8th, 2011 某套数据库以dba组用户登录正常,但以非dba组用户登录时出现LIBCLNTSH.SO: WRONG ELF CLASS: ELFCLASS32错误,如下例子:
su – maclean sqlplus ld.so.1: sqlplus: fatal: /s01/orabase/product/10.2.0/dbhome_1/lib32/libclntsh.so.10.1 : wrong ELF class: ELFCLASS32
这里可以看到引起wrong ELF class的库文件(libclntsh.so.10.1)位于lib32目录下,说明该库文件是32位的。
一般来说只有安装了64位oracle软件时会同时出现lib和lib32 这2个存放库文件的目录, 当安装了32位oracle软件时则只会显示lib一个目录。 这也是判断所安装的Oracle数据库软件是64 bit 还是 32 bit的一种方法。
以上问题一般是由于设置了不正确的LD_LIBRARY_PATH 环境变量 , 或者 lib 目录、libclntsh.so.10.1权限不正确引起的。
建议通过以下步骤排查问题:
1. 检查 sqlplus 命令相关的so共享库文件 [oracle@vrh1 ~]$ ldd `which sqlplus` linux-vdso.so.1 => (0x00007fff0bbfd000) libsqlplus.so => /s01/orabase/product/10.2.0/dbhome_1/lib/libsqlplus.so (0x00002b450f6b4000) libclntsh.so.10.1 => /s01/orabase/product/10.2.0/dbhome_1/lib/libclntsh.so.10.1 . . . → Read More: LIBCLNTSH.SO: WRONG ELF CLASS: ELFCLASS32错误一例
作者: Maclean Liu, post on August 24th, 2011 SYSDATE是我们在Oracle开发中经常要用到的一种单行函数(single row function),该函数用以返回当前的日期与时间,常和DUAL伪表一起合作。SYSDATE实际上指的是SYSDATE()函数,但是因为这个函数没有参量,所以这里可以省略()圆括号。另外SYSDATE函数是用于获取数据库所在的操作系统的当前时间值的,所以它和数据库或会话的时区没有关系。
我们可以使用NLS_DATE_FORMAT参数或者TO_CHAR函数来获得我们想要的SYSDATE日期格式,具体的格式代码如下:
Format Code Explanation YEAR Year, spelled out YYYY 4-digit year MM Month (01-12; JAN = 01). MON Abbreviated name of month. MONTH Name of month, padded with blanks to length of 9 characters. D Day of week (1-7). DAY Name of day. DD Day of month (1-31). DDD Day of year . . . → Read More: 了解SYSDATE函数
作者: Maclean Liu, post on July 10th, 2011 KJC: Wait for msg sends to complete是一种只会发生在RAC环境中的等待事件,目前对于该等待事件已知的信息不多。 KJ意为Kernel Lock Management Layer,Messaging Enhancements (KJC)。 猜测该等待事件为global enqueue message的网络传输等待,前台进程和后台进程如LMS、LMD均可能发生该等待事件。
select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name like ‘%KJC%’; NAME PARAMETER1 —————————————————————- —————————————————————- PARAMETER2 PARAMETER3 —————————————————————- —————————————————————- WAIT_CLASS —————————————————————- KJC: Wait for msg sends to complete msg dest|rcvr mtype Other SQL> select * from gV$system_Event where event like ‘%KJC%’; . . . → Read More: Oracle等待事件KJC:Wait for msg sends to complete
作者: Maclean Liu, post on June 12th, 2011 SMON的作用还包括维护col_usage$列监控统计信息基表。
最早在9i中引入了col_usage$字典基表,其目的在于监控column在SQL语句作为predicate的情况,col_usage$的出现完善了CBO中柱状图自动收集的机制。
create table col_usage$ ( obj# number, /* object number */ intcol# number, /* internal column number */ equality_preds number, /* equality predicates */ equijoin_preds number, /* equijoin predicates */ nonequijoin_preds number, /* nonequijoin predicates */ range_preds number, /* range predicates */ like_preds number, /* (not) like predicates */ null_preds number, /* (not) null . . . → Read More: 了解你所不知道的SMON功能(四):维护col_usage$字典基表
作者: Maclean Liu, post on June 11th, 2011 这周和同事讨论技术问题时,他告诉我客户的一套11.1.0.6的数据库中某个本地管理表空间上存在大量的Extents Fragment区间碎片,这些连续的Extents没有正常合并为一个大的Extent,他怀疑这是由于11.1.0.6上的bug造成了LMT上存在大量碎片。
同事判断该表空间上有碎片的依据是从dba_free_space视图中查询到大量连续的Free Extents:
SQL> select tablespace_name,EXTENT_MANAGEMENT,ALLOCATION_TYPE from dba_tablespaces where tablespace_name=’FRAGMENT’; TABLESPACE_NAME EXTENT_MAN ALLOCATIO —————————— ———- ——— FRAGMENT LOCAL SYSTEM SQL> select block_id,blocks from dba_free_space where tablespace_name=’FRAGMENT’ and rownum<10; BLOCK_ID BLOCKS ———- ———- 40009 222136 25 8 9 8 17 8 33 8 41 8 49 8 57 8 65 8 ………….. SQL> select count(*),blocks . . . → Read More: Too many fragmentation in LMT?
|
|
最新评论