首页 > 数据库 > Oracle > 正文

ORACLE在HP-UX下的系列问题处理(49)

2024-08-29 13:39:59
字体:
来源:转载
供稿:网友

  HP-UX: 在HP-UX 10.20上安装Oracle 7.3.3版时挂起。
  
  问题描述
  
  我使用运行HP-UX 10.20的9000/K,我试图在上面安装Oracle 7.3.3版,但安装挂起,我们找不到原因。
  
  是否能够为我提供帮助?
  
  配置信息
  
  操作系统 - HP-UX
  版本 - 10.20
  硬件系统 - HP9000
  系列 -
  
  解决方法
  
  问题是由于在PA8000系统上使用VxFS Direct IO和SHMEM_MAGIC时的死锁引起的。
  
  使用下面的方法禁用superpage exec():
  
   # adb -w /stand/vmunix
   allow_superpage_text?W 0
  
  这个规避方法应当可以解决这个问题。
  
  缺陷实际上在VxFS代码中。VX_DIRECT IO特性的设计只适用于用户IO (UIOSEG_USER),问题在于VxFS不检查UIOSEG_PAGEIN IO,然后有可能在保持区域RW锁定的同时,调用vx_dio_iovec()/vx_memiolock()及exec_superpage_text(),从而导致到达useracc()/pfault()/findPReg()/lock_write()时出现死锁:
   save+0x0
   _swtch+0x2e0
   real_sleep+0x2f4
   _sleep+0x14
   lock_write+0x2c8
   findpreg+0xb0 <<< 再次调用 reglock()!!!
   pfault+0x98
   lacc+0x68
   vx_memiolock+0x3c
   vx_dio_iovec+0x420
   vx_dio_rdwri+0x104
   vx_dio_readi+0x8c
   vx_read1+0x2e4 <<< 调用 vx_dio_check()
   vx_rdwr+0x16c
   vn_rdwr+0x8c <<< UIOSEG_PAGEIN
   exec_superpage_text+0x168 <<< 调用 reglock()
   getxfile+0x478
   execve+0xb70
   syscall+0x1a4
  
  解决方法是将vx_dio_check()中的EINVAL返回non-UIOSEG_USER段的IO,然后vx_read1()将返回标准IO通道,从而避免死锁。
  
  针对此问题的SR 1653223669已经打开。
  .........following with all English text ....
  A4747242 [A4747242/TRAK/English]
  HP-UX: Installation of Oracle release 7.3.3 hangs with HP-UX 10.20.
  
  Problem Description
  
  I have a 9000/K with HP-UX 10.20 on which I am trying to install Oracle release 7.3.3. The installation hangs and we cannot find the cause.
  
  Can you help?
  
  Configuration Info
  
  Operating System - HP-UX
  Version - 10.20
  Hardware System - HP9000
  Series -
  
  Solution
  
  The problem is caused by a deadlock when using VxFS Direct IO and SHMEM_MAGIC on PA8000 systems.
  
  Use this work-around to disable superpage exec():
  
   # adb -w /stand/vmunix
   allow_superpage_text?W 0
  
  The work-around should solve the problem.
  
  The defect is actually in the VxFS code. The VX_DIRECT IO feature is designed to work for user IOs only(UIOSEG_USER). The problem is that VxFS does not check for UIOSEG_PAGEIN IOs. It is then possible to call vx_dio_iovec()/vx_memiolock() along the exec_superpage_text()
  while holding the region RW lock, thus resulting in a deadlock when
  reaching useracc()/pfault()/findpreg()/lock_write():
   save+0x0
   _swtch+0x2e0
   real_sleep+0x2f4
   _sleep+0x14
   lock_write+0x2c8
   findpreg+0xb0 <<< calling reglock() again !
!!
   pfault+0x98
   lacc+0x68
   vx_memiolock+0x3c
   vx_dio_iovec+0x420
   vx_dio_rdwri+0x104
   vx_dio_readi+0x8c
   vx_read1+0x2e4 <<< called vx_dio_check()
   vx_rdwr+0x16c
   vn_rdwr+0x8c <<< UIOSEG_PAGEIN
   exec_superpage_text+0x168 <<< called reglock()
   getxfile+0x478
   execve+0xb70
   syscall+0x1a4
  
  The fix would be to return EINVAL in vx_dio_check() for IOs with non-UIOSEG_USER segments. Then vx_read1() would fall-back to the
  regular IO path and this would avoid the deadlock.
  
  SR 1653223669 has been opened for this problem.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表