客户端连接服务器端常见问题排除方法要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端
监听配置一致),再根据错误提示解决。
1、下面列出几种常见的连接问题:
(1)ORA-12541:TNS:没有监听器显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:$lsnrctl start 或 C:lsnrctl start
(2)ORA-12500:TNS:监听程序无法启动专用服务器进程对于Windows而言,没有启动 Oracle实例服务。启动实例服务:C:oradim –startup -sid myoracle
(3)ORA-12535:TNS:操作超时出现这个问题的原因很多,但主要跟网络有关。解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。
(4)ORA-12154:TNS:无法处理服务名检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每项服务的首行服务名称前不能有空格。
(5)ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。
(6)ORA-12518:TNS:监听程序无法分发客户机连接。出现该报错有两个原因:在共享模式下是由于调度进程(dispatchers)太少,在独占模式下是由于进程数(proces ses)超过了数据库默认的最大进程数。
解决步骤:1、show parameter process查看数据库允许最大进程数
2、select count(*) from v$session;查看当前系统进程数如果进程数不够,可通过扩大 PGA来增大进程数:alter system set workarea_size_policy=auto scope=both;
alter system set pga_aggregate_target=512m scope=both;
3、show parameter dispatchers查看调度进程数量如果调度进程太少,则可执行:alter system set dispatchers = '(protocol=tcp)(dispatchers=3)(service=oracle10xdb)';
(1)ORA-12541:TNS:没有监听器显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:$lsnrctl start 或 C:lsnrctl start
(2)ORA-12500:TNS:监听程序无法启动专用服务器进程对于Windows而言,没有启动 Oracle实例服务。启动实例服务:C:oradim –startup -sid myoracle
(3)ORA-12535:TNS:操作超时出现这个问题的原因很多,但主要跟网络有关。解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。
(4)ORA-12154:TNS:无法处理服务名检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每项服务的首行服务名称前不能有空格。
(5)ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。
(6)ORA-12518:TNS:监听程序无法分发客户机连接。出现该报错有两个原因:在共享模式下是由于调度进程(dispatchers)太少,在独占模式下是由于进程数(proces ses)超过了数据库默认的最大进程数。
解决步骤:1、show parameter process查看数据库允许最大进程数
2、select count(*) from v$session;查看当前系统进程数如果进程数不够,可通过扩大 PGA来增大进程数:alter system set workarea_size_policy=auto scope=both;
alter system set pga_aggregate_target=512m scope=both;
3、show parameter dispatchers查看调度进程数量如果调度进程太少,则可执行:alter system set dispatchers = '(protocol=tcp)(dispatchers=3)(service=oracle10xdb)';
2、平时排错可能会用到的一些命令
(1)lsnrctlstatus查看服务器端listener进程的状态
LSNRCTL>help
LSNRCTL>status
LSNRCTL>services
(2)tnsping查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态
[oracle@dg1dbs]$tnsping orcl
(3)查看instance是否已经启动
SQL>selectinstance_name,host_name,statusfromv$instance;
(4)查看数据库是打开还是mount状态。
SQL>selectopen_modefromv$database
INSTANCE_NAME STATUS
------------- -----------------------------------------------------
orcl OPEN
(1)lsnrctlstatus查看服务器端listener进程的状态
LSNRCTL>help
LSNRCTL>status
LSNRCTL>services
(2)tnsping查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态
[oracle@dg1dbs]$tnsping orcl
(3)查看instance是否已经启动
SQL>selectinstance_name,host_name,statusfromv$instance;
(4)查看数据库是打开还是mount状态。
SQL>selectopen_modefromv$database
INSTANCE_NAME STATUS
------------- -----------------------------------------------------
orcl OPEN
转载于:https://blog.51cto.com/19880614/1150117