为一客户进行服务器虚拟化改造时,将物理服务器进行虚拟化转换后,发现该服务器中的Oracle数据库无法连接,显示需要打开Oracle审计功能,依次操作后,又相继出现几个错误,因要求业务中断时间限制,所以将过程简单记录一下。
远程连接Orl数据库打开Oracle审计的方法
客户主要使用自研的.net系统远程连接Oracle数据库,为了能够定位问题,我们先使用Navicat for Oracle 进行远程连接测试,如果连接测试正常,则网页调用也就没问题了。在使用Navicat连接Oracle数据库时,显示无法连接,需要打开Oracle 审计功能。
Navicat for Oracle 11.1.13企业版,绿色直接使用。
1、首先通过sqlplus登录,查看是否启用审计功能:
sqlplus: system pwd:*******
sql>show parameter audit_trail;
如果显示value的值为DB;则就是启用审计模式。如果为none;则要做以下几步。
sql>alter system set audit_trail=db scope=spfile;
系统已更改
sql>@ D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\cataudit.sql
上面的路径要根据自己的Oracle安装位置输入。
sql>exit
2、重启以下服务:
OracleOraDb10g_home17NSListener
OracleServiceORCL (对应你Oracle实例名称)
重启后再查看审计是否启用。
OEA-12541:TNS :no listener 错误解决方法
重启后,审计已启用,但仍然无法连接:显示OEA-12541:TNS :no listener
这是因为物理机服务器转换成虚拟机后,计算机的名更改了,造成Oracle配置文件中的Listener不一致。
将D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora文件中HOST后面的参数改为当前机器的计算机名。
更改后,在services.msc服务器列表中,再次启动listener服务,即启动OracleOraDb10g_home17NSListener。
ORA-12505:TNS listener does not currently know of SID given is connect descripter.
错误解决方法
再次使用Navicate for oracle 连接数据库,弹出如下错误:ORA-12505:TNS listener does not currently know of SID given is connect descripter.
于是修改D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora文件,也改成对应的计算机名。
改完成后,navicater还是显示错误。
3,配置navicater 选项中的OCI位置,指定SQLplus位置。再次登录,就正常了。
4、使用.net开发的网页连接Oracle时显示错误:
System.data.oracleClient 需要Oracle客户端软件8.1.7或更高版本
该问题原因是安装Oracle数据库的操作系统Network Service用户无权限读取和执行NTFS格式下的Oracle的bin文件夹,该文件夹包含了Oracle的数据库操作命令。
解决方法:在安装Oracle数据库的服务器上,找到Oracle安装路径下bin文件夹,右键选择“属性”—“安全”,添加Network Service,配置权限为读取和执行,或者“完全控制”。
再次点击远程访问Oracle数据库的页面,就可以正常显示数据页面了。