sqlplus登录是报错,ORA-12570: TNS: 包阅读程序失败

本文介绍了解决Oracle监听器日志listener.log文件过大的方法。当此日志文件超过4GB时,可能导致监听器崩溃,进而影响数据库连接。文章提供了在Windows和Linux环境下,如何通过关闭监听、删除或重命名日志文件来解决问题的步骤。

1、先定位问题是不是Oracle 监听器日志 listener.log文件过大

 

路径一般:C:\app\Administrator\diag\tnslsnr\主机名\listener\trace下面的 listener.log

db版本:11.2.0.1

os版本:windows2008

现象:

应用异常,无法连接数据库。登陆数据库服务器,查看监听已经断掉。尝试重启监听,重启失败。查看监听日志listener.log的大小已经超过4G。

解决方法:

1、关闭监听 

2、删除listener.log(删除前可以先做备份) 

3、然后重启监听,监听重启后会自动创建一个新的日志文件

<----------------------------------------------------以上为windows傻瓜式操作,下面可以用于linux----------------------------------------------->

补充:

在监听进程运行时,无法对listener.log做删除或者重命名操作。

如果不想重启监听,删除监听日志。可以按如下操作:

1.>lsnrctl set log_status off    # 先把日志状态停掉,这样就不会写监听器日志

2. 备份或者删除监听日志

3.>lsnrctl set log_status on    # 重新打开日志,开始记录监听器日志。该文件会自动创建

4.>lsnrctl status                    #检查监听状态

 

Linux下不要直接 cat /dev/null >  listener.log 除非在监听器关闭的情况下。否则,即便文件已经被清空,监听器还是无法执行写入日志的。

 

参考资料:

Bug 9497965 - Win: Listener Startup Fails Due to listener.log Size is Greater Than 4GB [ID 9497965.8]

 

<think>好的,我需要帮助用户解决在Linux环境下使用sqlplus连接Oracle数据库时遇到的ORA-12547错误。首先,我应该回顾一下用户提供的引用内容,看看有没有相关的线索。引用中提到这个错误可能与权限问题有关,例如libaio库的问题或者Oracle可执行文件的权限设置。 首先,我需要确认用户的环境。用户提到的是Linux Mint安装Oracle 12cR2时出现这个问题,以及DBCA报同样的错误。这说明问题可能出现在安装或配置过程中,而不仅仅是运行时的连接问题。不过用户现在的问题是在使用sqlplus连接时出现的,所以需要从连接的角度入手。 根据引用中的信息,权限问题是一个常见的因素。比如,Oracle的可执行文件(如sqlplusoracle)需要有正确的执行权限,并且所属用户和组正确。例如,引用[1]提到通过strace定位到权限问题,并修改了$ORACLE_HOME/bin/oracle文件的权限为6751,解决了问题。这可能涉及到setuid和setgid的权限设置,确保Oracle进程能够正确运行。 其次,libaio库的问题也被提到。在引用[2]中,用户怀疑libaio有问题,但可能没有正确安装或配置。需要确认libaio是否已安装,并且是32位还是64位版本,这取决于Oracle的安装版本。 另外,环境变量是否正确设置也是一个关键点。比如ORACLE_HOME、PATH、LD_LIBRARY_PATH等是否指向正确的路径,避免路径错误导致程序无法找到必要的库或文件。 接下来,可能的解决方案步骤应该括: 1. 检查Oracle相关文件的权限,特别是$ORACLE_HOME/bin/oracle文件,确保其权限设置为6751,所属用户和组正确。 2. 确认libaio库已正确安装,并且是适合系统架构的版本(如64位系统需要libaio1的64位版本)。 3. 检查环境变量是否正确配置,确保sqlplus能够找到所需的库和可执行文件。 4. 检查SELinux或AppArmor等安全模块是否阻止了Oracle进程的运行,必要时暂时禁用或配置策略。 5. 查看日志文件,如$ORACLE_HOME/install/make.log或alert日志,寻找更详细的错误信息。 此外,用户可能需要重新运行Oracle的安装脚本,如root.sh,以确保所有权限和配置正确应用。同时,如果问题出现在安装过程中,可能需要重新安装Oracle,并严格按照文档步骤操作,确保没有遗漏的依赖项或配置步骤。 在生成相关问题的时候,需要考虑用户可能进一步遇到的困难,比如如何检查文件权限,如何安装libaio,如何设置环境变量,或者如何处理SELinux的问题。因此,相关问题应该围绕这些可能的扩展点展开,帮助用户更全面地理解和解决问题。</think>### Linux环境下解决sqlplus ORA-12547错误的步骤 #### 1. **检查Oracle可执行文件权限** 确保`$ORACLE_HOME/bin/oracle`文件的权限正确,通常需设置为`6751`(含`setuid`和`setgid`权限): ```bash chmod 6751 $ORACLE_HOME/bin/oracle ``` 同时确认文件所属用户和组为`oracle:oinstall`: ```bash chown oracle:oinstall $ORACLE_HOME/bin/oracle ``` 权限问题是最常见的ORA-12547原因[^1][^4]。 #### 2. **验证libaio库安装** Oracle依赖`libaio`库进行异步I/O操作,未安装或版本不匹配会导致此错误。 - 对于Ubuntu/Debian系统: ```bash sudo apt-get install libaio1 ``` - 对于CentOS/RHEL系统: ```bash sudo yum install libaio ``` 确保安装与系统架构一致的版本(如64位系统需`libaio1:amd64`)[^2]。 #### 3. **检查环境变量配置** 确认`ORACLE_HOME`、`PATH`和`LD_LIBRARY_PATH`已正确设置: ```bash export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH ``` 可通过`echo $ORACLE_HOME`验证路径是否正确。 #### 4. **禁用SELinux/AppArmor** Linux安全模块可能阻止Oracle进程运行,临时禁用以排查问题: - **SELinux**: ```bash sudo setenforce 0 ``` - **AppArmor**: ```bash sudo systemctl stop apparmor ``` 若问题解决,需配置策略允许Oracle相关进程[^3]。 #### 5. **检查日志定位具体错误** - **安装日志**:查看`$ORACLE_HOME/install/make.log`中的编译错误。 - **数据库日志**:检查`$ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log`中的详细错误信息。 #### 6. **重新运行Oracle配置脚本** 以root用户执行`root.sh`修复权限问题: ```bash sudo $ORACLE_HOME/root.sh ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值