监听可分为静态监听和动态监听两种。
对于 Tnsname.ora文件。客户端为了连接ORACLE数据库服务器,需要安装客户端软件,并在客户端配置网络服务名文件,tnsnames.ora,这是连接ORACLE的一种常用的方法,当然还有其它方法。tnsnames.ora只是四种解析方式之一。准确地说是Local Naming。第二种是Easy Connect Naming,基于10G以上的应用,如果客户端与服务器端有同一SERVICE_NAME且均使用TCP/IP协议,那么无论服务名是什么,只要知道SID_NAME和IP就可以连接了。还有两种是类似于DNS服务的设定,暂时不了解。
配置tnsnames.ora主要是指定服务名与实例的对应关系,包括PROTOCOL\HOST\PORT。SERVICE_NAME。
这个配置可以做tnsping连通性测试的。
在没有TNSNAMES.ORA文件的情况下,ORACLE支持SLQ*Plus直连远程数据库,但这实际上是把参数信息给写到连接语句里去了。
对于Listener.ora文件。
监听器文件主要包括两个部分
第一部分LISTENER信息,这部分包含了监听的协议、地址以及端口等信息。LISTENER的信息包括两部分:一是监听器的位置,二是已静态注册到监听的服务。
第二部分SID_LIST_LISTENER信息,这部分信息用于提供对外的数据库服务列表。第一个SID_DESC部分(SID_NAME=PLSExtProc)是数据库缺省就包含的对外部分存储过程提供的本地监听,此外两个SID_DESC部分就是对数据库的两个SERVICE_NAMES所设置的监听服务,对于同一个SID对应的数据库,可以对外提供多个服务名供客户端访问。
设置服务名的参数为GLOBAL_DBNAME,当处理客户端连接请求时,监听器首先尝试将GLOBAL_DBNAME和客户端请求中的SERVICE_NAME相匹配;如果客户端连接请求的就是SID信息,则Oracle不检查GLOBAL_DBNAME设置,而是对监听器中设置的SID_NAME进行匹配。
启动这个监听器后,可以看到对于不同服务名Oracle所启动的监听信息。首先输出的信息显示了监听器文件地址以及监听日志文件位置(监听器日志在诊断数据库异常或攻击信息时非常有用)