运行时故障分析与解决(1)
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的注册信息。
1. SID_LIST_LISTENER =
2. (SID_LIST =
3. …
4. (SID_DESC =
5. (GLOBAL_DBNAME = ORCL)
6. (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
7. (SID_NAME = ORCL)
8. )
9. )
解决方法2:打开如图3-36所示的Oracle Net Manager对话框,在左侧的列表中选中监听程序名称,如LISTENER,在右侧的下拉列表中选择“数据库服务”,然后单击“添加数据库”按钮,添加被监听的数据库信息,如图3-40所示。最后保存网络配置,并重启监听服务。
3.启动操作系统列表中的某个Oracle服务时,显示“系统找不到指定的路径”
在启动Oracle监听程序时,可能弹出“系统找不到指定的路径”对话框,其原因是注册表中与该服务对应的可执行文件的路径丢失了。
|
(点击查看大图)图3-40 为监听程序注册数据库服务 |
解决方法:选择“开始→运行”命令,打开“运行”对话框,输入regedit命令,打开操作系统的注册表编辑器。在注册表编辑器左侧的树状结构中选择“我的电脑→HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Services”,展开Services选项卡,找到相应的Oracle服务项并将其选中,如图3-41所示。在右侧对话框中单击鼠标右键,在弹出菜单中选择“新建→字符串值”,创建一个字符串,将其命名为ImagePath。双击新建的ImagePath字符串,弹出如图3-42所示的“编辑字符串”对话框。在“数值数据”编辑框中输入当前Oracle服务所对应的应用程序的路径与名称,然后单击“确定”按钮,关闭注册表编辑器。
|
(点击查看大图)图3-41 修改注册表对话框 |
|
图3-42 “编辑字符串”对话框 |
运行时故障分析与解决(2)
注意 操作系统服务列表中的每个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服务。
1. C:\>EMCTL START DBCONSOLE
2. 卸载Oracle 11g产品
如果Oracle数据库服务器出现故障无法恢复,或由于某些特殊原因需要卸载数据库服务器产品,可以按下面的步骤完全卸载数据库服务器产品。
1)停止所有Oracle相关的服务。
打开如图3-33所示的 Oracle相关服务对话框,选定想要停止的服务右击,在弹出的快捷菜单中选择“停止”选项即可。
2)卸载Oracle 11g数据库服务器组件。
选择“开始→所有程序→Oracle-OraDb11g_home1→Oracle 安装产品→Universal Installer”命令,在弹出的“欢迎使用”对话框中单击“卸装产品”按钮,出现卸载组件选择对话框。选择要删除的Oracle组件,然后单击“删除”按钮。
3)删除系统安装磁盘中的Program Files\Oracle 目录(如C:\Program Files\Oracle)。每次安装完Oracle产品后,相关信息都会记录在该目录中。如果忘记删除,则再次安装数据库时会出现错误。
4)手工删除注册表中与Oracle相关内容。
选择“开始→运行”命令,输入regedit,单击“确定”按钮,打开注册表编辑器。删除HKEY_LOCAL_MACHINE\SOFTWARE下的Oracle选项。删除HKEY_LOCAL_MACHINE \SYSTEM\ CurrentControlSet\Services下与Oracle服务相关选项。删除HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services \Eventlog\ Application下以Oracle开始的项,即删除事件日志。
5)删除Oracle环境变量。
右击“我的电脑”,选择“属性”命令进入“系统属性”对话框,选择“高级”标签,单击“环境变量”按钮,在弹出的“环境变量”对话框中先后选中“PATH”和“TEMP”变量,单击“编辑”按钮,弹出“编辑用户变量”对话框,分别删除PATH变量和TEMP变量中记录的Oracle相关路径。
6)选择“开始→所有程序”命令,查看是否存在Oracle程序组,如果存在,则将其删除。
7)关闭计算机,重新启动系统。
8)删除Oracle安装目录(如D:\Oracle)。
注意 从Oracle 11g的11.2.0.1版本开始,Oracle提供了一个用于卸载数据库产品的工具deinstall,它位于Oracle主目录的deinstall目录中(ORACLE_HOME\deinstall)。在Windows 7操作系统中,右击可执行程序deinstall.exe,在弹出的菜单中选择“以管理员身份运行”选项,运行该工具,可以完全卸载Oracle产品。