3.5 运行时故障分析与解决
Oracle数据库服务器在运行过程中可能出现某些问题,其中,有的问题是致命的,必须重新安装数据库服务器系统,而有的问题只需进行简单的处理就可以解决。下面介绍在学习使用Oracle数据库的过程中经常出现的几个问题及对应的解决方法。
1. ORA-12541: TNS:无监听器程序
当通过企业管理器或其他工具登录数据库时,如果提示错误“ORA-12541: TNS:无监听程序”,这说明Oracle监听程序没有运行。
解决方法:选择“开始→控制面板→管理工具→服务”命令,打开“服务”对话框,在服务列表中启动名为OracleOraDb10g_home1TNSListener的服务。
2. ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
1)当通过企业管理器或其他工具登录数据库时,如果提示错误“ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务”,这可能是由于在系统服务中的Oracle实例服务没有启动。
解决方法:打开操作系统的“服务”对话框,将服务列表中名为OracleServiceORCL(ORCL为数据库实例名)的服务启动起来。
2)关闭数据库(SHUTDOWN IMMEDIATE)后,通过SQL Plus连接数据库时,提示错误“ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务”,通过重启服务的方式启动数据库,再次连接却能成功登录。这是由于在Oracle 11g中,后台进程PMON自动在监听器中注册系统中的服务名,而不需要在监听配置文件listener.ora中指定监听的服务名。但是,在数据库处于关闭状态下,如果PMON进程没有启动,也就不会自动在监听器中注册服务名,所以会出现上述错误提示。
解决方法1: 在监听配置文件\NETWORK\ADMIN\listener.ora的监听服务列表中添加特定服务注册信息。例如,添加一个服务名为ORCL的注册信息。
SID_LIST_LISTENER =
(SID_LIST =
…
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
)
解决方法2:打开如图3-36所示的Oracle Net Manager对话框,在左侧的列表中选中监听程序名称,如LISTENER,在右侧的下拉列表中选择“数据库服务”,然后单击“添加数据库”按钮,添加被监听的数据库信息,如图3-40所示。最后保存网络配置,并重启监听服务。
3.启动操作系统列表中的某个Oracle服务时,显示“系统找不到指定的路径”
在启动Oracle监听程序时,可能弹出“系统找不到指定的路径”对话框,其原因是注册表中与该服务对应的可执行文件的路径丢失了。
解决方法:选择“开始→运行”命令,打开“运行”对话框,输入regedit命令,打开操作系统的注册表编辑器。在注册表编辑器左侧的树状结构中选择“我的电脑→HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Services”,展开Services选项卡,找到相应的Oracle服务项并将其选中,如图3-41所示。在右侧对话框中单击鼠标右键,在弹出菜单中选择“新建→字符串值”,创建一个字符串,将其命名为ImagePath。双击新建的ImagePath字符串,弹出如图3-42所示的“编辑字符串”对话框。在“数值数据”编辑框中输入当前Oracle服务所对应的应用程序的路径与名称,然后单击“确定”按钮,关闭注册表编辑器。
注意 操作系统服务列表中的每个Oracle服务都与Oracle主目录中bin目录下的一个可执行程序相对应,例如,OracleOraDb10g_home1TNSListener服务与D:\app\Administrator\product\11.2.0\dbhome_1 \bin\ TNSLSNR.EXE文件相对应。
4.登录数据库时出现“ORA-12545:因目标主机或对象不存在,连接失败”
如果在登录数据库时产生“ORA-12545:因目标主机或对象不存在,连接失败”错误,其原因可能是安装完数据库服务器后计算机IP地址变化或计算机名称变化。
打开如图3-36所示的Oracle Net Manager对话框,分别选中左侧树状结构中的监听器和数据库,修改右侧对话框中的“主机名”为当前的计算机名。
5.通过IE启动企业管理器时,显示“无法显示网页”
在IE地址栏中输入企业管理器地址,按回车键后显示“无法显示网页”,其原因可能是网络故障或数据库服务器的OracleDBConsole服务没有启动。
解决方法:在确认不是网络故障的前提下,打开数据库服务器系统服务列表对话框,启动名为OracleDBConsole的服务。
6.无法启动OracleDBConsole服务
导致OracleDBConsole服务无法启动的原因有多种,可以在命令提示符界面执行EMCTL START DBCONSOLE命令启动OracleDBConsole服务,查看无法启动的原因。
(1)由于计算机网络适配器改变引起的OracleDBConsole服务无法启动
Oracle数据库服务器总是将系统中最后配置的网络适配器作为自己的网络适配器,因此当操作系统中新建了网络适配器或网络适配器绑定顺序发生变化时,都将导致OracleDBConsole服务无法启动,需要将安装Oracle数据库服务器时的网络适配器调整为系统主网络适配器。具体方法如下:
1)单击“开始”按钮,在“搜索程序和文件”文本框中输入ncpa.cpl命令,按回车键进入“网络连接”对话框。或者打开“控制面板→网络和Internet→网络和共享中心”后进入“网络和共享中心”对话框,单击此对话框左侧列表中的“更改适配器设置”链接,进入“网络连接”对话框。
2)打开“高级”菜单,选择“高级设置”命令进入图3-43所示的“高级设置”窗口,选择当初安装Oracle数据库服务器时的主网络适配器,如“网络连接2”,然后单击右侧的上调箭头按钮,将其调整到第一位即可。
(2)由于更改了主机IP地址或主机名引起的OracleDBConsole服务无法启动
此时可以按下列方法进行解决。
1)修改下列两个与主机IP或主机名相关的两个文件夹名。
两个文件夹分别为\SFD_orcl和\oc4j\j2ee \OC4J_DBConsole_SFD_orcl。其中,SFD为修改后的主机名或IP地址,ORCL为SID。
2)重建OEM的资料档案库。
C:\>EMCA-REPOS RECREATE
3)重新配置DBCONTROL。
C:\>EMCA-CONFIG DBCONTROL DB
4)启动OracleDBConsole服务。
C:\>EMCTL START DBCONSOLE