ITPub博客

首页 > 数据库 > Oracle > Oracle监听配置(ora-12514错误)

Oracle监听配置(ora-12514错误)

原创 Oracle 作者:773281375 时间:2014-03-14 16:05:41 0 删除 编辑

1、客户端连接数据库流程:监听只在连接时候起到转发作用
①客户端→监听转发→数据库
②数据库→监听转发→客户端
③客户端→数据库
2、监听配置:用netca命令
lsnrctl stop/start/status   #监听停止、启动、查看状态命令
①服务端要配置两个文件:listener、tnsnames
listener文件:
LISTENER=            #监听名字
 (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
     (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.111)(PORT = 1521))  #服务器本地IP地址
   )
 )
tnsnames文件:
linuxorcl=    #连接时@后面的字符串,如sqlplus scott/tiger@linuxorcl
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.111)(PORT = 1521)) #服务器本地IP地址
   )
   (CONNECT_DATA =
     (SERVICE_NAME =orcl)    #服务器上数据库实例名字
   )
 )
②客户端要配置一个文件:tnsnames
tnsnames文件:
linuxorcl=   #连接时@后面的字符串,如sqlplus scott/tiger@linuxorcl
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.111)(PORT = 1521))#服务器IP地址
   )
   (CONNECT_DATA =
     (SERVICE_NAME =orcl)  #服务器上数据库实例名字
   )
 )
3、监听注册有两种方式:静态注册和动态注册
①如何查询某服务是静态监听注册还是动态监听注册可以使用命令lsnrctl status来查看服务,实例状态为UNKNOWN值时表明此服务是静态注册的设置。
②静态注册
所谓静态配置,就是在配置监听器时,就明确的告诉监听器某个数据库的信息,监听器在启动过程中就会加载这一部分信息。这个信息同样是记录在监听器的配置文件LISTENER.ORA中,下面就是使用静态配置LISTENER.ORA文件,注意其中SID_LIST_LISTENER部分就是静态配置内容:
SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (SID_NAME = PLSExtProc)
     (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
     (PROGRAM = extproc)
   )
(SID_DESC  =                                 
     (GLOBAL_NAME = orcl)         #GLOBAL_NAME数据服务名
     (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
     (SID_NAME = orcl)         #SID_NAME数据库实例名字
   )
 )
这个例子就是说,名字叫做LISTENER的监听器需要负责SID=ORCL的数据库的连接请求,静态配置的最大问题就是监听器无法知道数据库的真正状态。
③动态注册
动态注册是在instance启动的时候PMON进程根据init.ora中的INSTANCE_NAME,SERVICE_NAMES两个参数将实例和服务动态注册到listener中。要想使用动态注册功能,首先需要在数据库的初始化SERVICE_NAME和INSTANCE_NAME。如果没有定义SERVER_NAME参数,数据库会使用DB_NAME和DB_DOMAIN组成的一个全局数据库名称(Global Database Name)注册到监听器中。INSTANCE_NAME是实例名称,通常和SID值一样。只要数据库处于运行状态,PMON进程就会自动、定期的地向监听进程注册、更新信息,DBA也可以使用下面命令强制PMON立即向监听器注册:SQL>alert system register;
我在linux系统下就发生过ora-12514错误,检查了半天后来发现时系统里面的/etc/hosts里面的ip地址没有配成本地ip而是用127.0.0.1来代替

⑤监听解析一个登录命令流程如sqlplus scott/tiger@linuxorcl
首先监听会先去找tnsnames文件,解析里面是否有以linuxorcl开头的段如:
linuxorcl =    #连接时@后面的字符串,如sqlplus scott/tiger@linuxorcl
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))  #服务器本地IP地址
   )
   (CONNECT_DATA =
     (SERVICE_NAME = orcl)    #服务器上数据库实例名字
   )
 )
然后根据段里面的Host和service_name去解析数据库实例
最后把数据库实例注册到监听上(动态的或静态的)

数据库名:show parameter db_name;
数据库服务名:show parameter service_name;
数据库实例名:show parameter instance_name;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29489498/viewspace-1120439/,如需转载,请注明出处,否则将追究法律责任。

上一篇: SQL语言分类
请登录后发表评论 登录
全部评论

注册时间:2014-02-17

  • 博文量
    26
  • 访问量
    185329