咨询微信: dbservice1234 7 x 24 在线支持!

Oracle ODM issues for Solaris

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

重启