listener和tnsnames
服务端开listener,侦听客户请求,转发到实例
客户端配tnsnames,给出服务的描述,连接到服务端的侦听
动态注册和静态注册
动态注册:客户端(sys用户)只能在远程数据库启动的情况下连接上,远程数据库关闭时客户端连接不上远程数据库。
动态注册是在instance启动的时候PMON进程根据init.ora中的instance_name和service_names两个参数将实例和服务动态注册到listener中。
注册到监听器中的实例值从init.ora文件中的instance_name参数取得。如果该参数没有设定值,那么它将取init.ora文件中的db_name的值。
注册到监听器中的服务值从init.ora文件中的参数service_names取得。如果该参数没有设定值,数据库将拼接init.ora文件中的db_name和db_domain的值来注册自己。如果选择提供service_names值,您可以使用完全限定的名称(比如 orcl.oracle.com)或缩写
的名称(比如orcl)。如果选择缩写的名称并设置了db_domain参数,注册到监听器中的服务将是 service_name值和db_domain值的拼接。
lsnrctl status查到的实例状态为ready或blocked为动态注册,unknown为静态注册。
静态注册:无论远程数据库处于开启还是关闭状态,客户端(sys用户)都可连接上。建议使用。
静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序。无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。
静态注册时,listener.ora中的GLOBAL_DBNAME向外提供服务名,listener.ora中的SID_NAME提供注册的实例名。
创建服务器动态监听
设置服务器监听程序。netca,下一步即可。
产生的listener.ora文件路径:/u01/app/oracle/product/11204/db_1/network/admin
listener.ora中的信息如下:
启动数据库后,服务器端使用本地监听登陆scott用户:
[oracle@ocp admin]$ sqlplus scott/Oracle11g@ocp:1521/orcl
连接方式解释:sqlplus username/password@host:port/sid
(sid为服务名,可通过lsnrctl status或 查看initSID.ora中的service_name参数值)。
此时监听状态为:
测试连接:
此时使用window客户端sql developer,通过SID orcl或service_name orcl均可连接成功。
配置动态注册监听对应客户端监听
netmgr,配置客户端监听。
产生的tnsnames.ora文件路径:/u01/app/oracle/product/11204/db_1/network/admin
连接方式解释:sqlplus username/password@net_service_name
创建服务器静态监听
netmgr,配置服务端静态监听
查看listener.ora中的新增内容。
启动listener1监听,并连接。
连接方式解释:sqlplus username/password@host:port/sid
(sid为服务名,可通过lsnrctl status或 查看listener.ora中的global_name参数值)。
此时使用window客户端sql developer,通过SID orcl或service_name s_orcl均可连接成功。
配置静态注册监听对应客户端监听
netmgr,配置客户端监听。
测试配置是否正确。
输入正确账号和密码。
测试成功后,close。
确认配置明细。
保持并退出客户端配置。
查看文件信息:
测试连接:
以上配置的动态和静态服务器监听和客户端配置关系如下: