您好,欢迎访问一九零五行业门户网

ORA-12547经典错误处理

ora-12547错误处理 今天,领导告知我,让我帮一同事将oracle安装下,他在安装的过程中出现了问题,报错,无法继续安装。 一
ora-12547错误处理
今天,领导告知我,让我帮一同事将oracle安装下,他在安装的过程中出现了问题,报错,无法继续安装。
一、由于nls_lang设置错误,导致ora-12547错误
我过去看了看,发现在aix5.3系统中使用dbca建库到最后一步点完成后立即就出现了ora-12547 tns lost connect  这个错误,当时感觉挺蹊跷的,随后对系统的环境做了详细检查,异步io是开启来的,host文件也是正常的,参数文件貌似也没有太大的问题,ulimit限制也都改成了-1; 也没有发现有明显的问题,安装日志里面是已经告诉说是操作系统环境不满足。当时实在是查不出来到底是什么原因导致就把之前安装的dbsoft给删除了,重新进行dbsoft的安装和建库,dbsoft的安装中没有报任何错,到最好还是一样的问题,只好再次进行再次的检查,发现了在oracle用户环境配置文件里[db:oracle]$cat~/.profile里发现了nls_lang=zhs16gbk这个参数,后面想想看这个参数并不是必须的,而且有可能会导致安装的时候报错,随即将其禁用掉,参数文件如下:$ cat .profile
path=/usr/bin:/etc:/usr/sbin:/usr/ucb:$home/bin:/usr/bin/x11:/sbin:.
export path
if [ -s $mail ]           # this is at shell startup.  in normal
then echo $mailmsg        # operation, the shell checks
fi                          # periodically.
oracle_base=/oracle
oracle_sid=orcl
oracle_home=$oracle_base/app/10.2.0/db_1
#nls_lang=zhs16gbk
path=$oracle_home/bin:$path:
export  oracle_base oracle_sid oracle_home  path
$
   将其禁用后,再次dbca建库,故障没有再重现,成功建库。
二、dbca建库出现这个问题,后面在网上搜索了下,基本上是由如下四种原因导致:
  1、异步io导致dbca报ora-12547
解决办法:
  aix:
  a、smitty chaio  (只有aix 5系列支持)
  b、把state to be configured at system restart 设置成available
  c、再次运行dbca创建成功
  hp-unix 可以参考(metalink note:139272.1)
a. 创建aio字符设备
   # /sbin/mknod /dev/async c 101 0x0
   # chown oracle:dba /dev/async
   # chmod 660 /dev/async
b.用sam调整内核参数
     -> kernel configuration
        -> drivers
           -> 选择'asyncdsk'
           -> actions>add driver to kernel. (此时pending state由out变为in状态)
      -> kernel configuration
        -> configurable parameters
           -> max_async_ports
              设置为初始化文件中的'processes'值+oracle后台进程数 (根据v$bgprocess,单实例后台进程数最多为78个)
c. 用sam设置aio_max_ops
     -> kernel configuration
        -> configurable parameters
           -> aio_max_ops
           -> 可设置为默认值2048
以上配置,主机需重构核心,,重启.   
  d. 设置oracle用户必须有mlock权限。
   a. 设定dba组的mlock的权限
      roolt#setprivgrp dba mlock
b. 避免重启后失效,需要设置:
       vi /etc/privgroup 添加如下行:
       dba mlock
  e.检查一下aio是否生效了
#fuser /dev/async
有进程列出来说明aio已经生效了。
2、ulimit默认值没有修改
解决办法:
  linux
  a、修改limits参数文件,添加如下内容
  vi /etc/security/limits.conf
  oracle soft nproc 2047
  oracle hard nproc 16384
  oracle soft nofile 1024
  oracle hard nofile 65536
  aix
  a、修改limits参数文件,在最后如下添加如下内容:(注:-1为无限制使用)
  vi /etc/security/limits
default:     
fsize = -1   
core = 2097151
cpu = -1     
data = 262144
rss = 65536  
stack = 65536
nofiles = 2000
root: 
daemon:
bin:  
sys:  
adm:  
uucp: 
guest:
nobody:
lpd:  
oracle:  
data = -1
stack = -1
3、linux 下selinux配置不正确,解决办法
  a、用root用户登录系统执行 setenforce 0   (不需要重启)
  b、修改/etc/selinux/config文件中的selinux= 为 disabled ,需要重启
   4、libaio(x86_64) is not installed(同aix一样,是开启异步io,在linux下打这个包)
解决办法:
a、插入操作系统安装光盘
b、root用户登录系统挂载操作系统安装光盘:
   #mount -t iso9660 /dev/cdrom /mnt
   #cd /mnt/server
c、检查并安装libaio包,执行如下命令
   #rpm -qa| grep -i ^libaio
   #rpm -ivh libaio-*.i386.rpm
   #rpm -ivh libaio-*.x86_64.rpm
d、检查刚才安装的包是否成功
   #rpm -qa | grep ^libaio
e、再次执行安装,问题解决
更多oracle相关信息见oracle 专题页面 ?tid=12
其它类似信息

推荐信息