7 x 24 在线支持!
Oracle ODM issues for Solaris
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
oerr ora 1243 01243, 00000, "system tablespace file suffered media failure" // *Cause: A system tablespace file was detected as inaccessible due to // media failure. // *Action: Restore accessibility to the file mentioned in the error stack // and restart the instance.
症状
在操作系统从Solaris 8 迁移到 Solaris 10 ,以及内存从 Veritas 4.0 迁移到 Veritas 5.0之后, 数据库启动后,在alert.log文件中会出现以下错误.
…
ORA-01243: 系统表空间文件遭受介质故障
ORA-01114: IO error writing block to file 1 (block # 27467)
ORA-01110: data file 1: ‘/orabase02/oradata/CH005/system/system_1.dbf’
ORA-17500: ODM err:ODM ERROR V-41-4-1-253-12 Not enough space
只有在使用ora_dism的Solaris 平台上才可能出现这种问题。
变化
Ora DISM, Sun Solaris release 10 and Veritas relase 5.0.
原因
ora_dism 守护进程似乎正确内存锁定其DISM段所要求的区域,但下面的问题是显而易见的:
如果ora_dism守护进程无法启动,会打印一个警告消息,尽管ora_dism守护进程不在,Oracle实例将成功启动。
如果ora_dism守护进程因为任何原因挂掉,oracle实例也不会崩溃,尽管没有ora_dism 守护进程,它也会继续下去。
– Sun 已经承认他们的Solaris存在,其中ENOMEM 被DISM segment driver 意外返回,但他们也强调DISM的设计要求该段内存锁定,如果 DISM段内存锁定正确,ENOMEM问题将不会发生。
– Oracle有一个内存锁定 DISM 段的守护进程,但如果该守护进程因为某些原因缺席,而DISM段的 i/o 正被执行,则对于这种情况没有任何防备.
这种问题发生的原因是,SUN bug <6603296> – “多重写入DISM段减少了可用的交换” 被设为 Sun bug <6559612> – “multiple softlocks on a DISM segment should decrement availrmem just once”的副本。
解决方案
下面就是Sun所提的他们用到的解决方案:
CR 6559612 – “multiple softlocks on a DISM segment should decrement availrmem just once” 在开发版本 snv_91中通过 CR 6423097已经被修复
此修复程序并没有向后移植到Solaris 10,因此没有出现在 Solaris 10 KJP 120011-14 或以下修复的bug列表中.
Update: The fix for 6559612 was released with kernel patch 141444-09 or greater or Solaris 10 update 8 or later.
set max_uheap_lpsize = 0x2000
set max_ustack_lpsize = 0x2000
set max_privmap_lpsize = 0x2000
set size_t max_shm_lpsize = 0x2000
set use_brk_lpg = 0
set use_stk_lpg = 0
然后重启.
对于S10U3 和更早的 S10 版本,解决方法是添加到 /etc/system:
set exec_lpg_disable = 1
set use_brk_lpg = 0
set use_stk_lpg = 0
set use_zmap_lpg = 0
重启