支持数据库版本:10gR2、11gR2
1. 自动注册的监听
1-1. 数据库实例自动注册监听
$ cat $ORACLE_HOME/network/log/listener.log
17-JUL-2012 15:36:24 * service_register * insname * 0
# 其中 insname 是数据库初始化参数的 instance_name 的值
# 数据库启动后, 由 PMON 进程自动注册, 需要 1 分钟左右的时间
1-2. 自动注册后监听器状态
$ lsnrctl status
Service "dbname.mydomain" has 1 instance(s).
Instance "insname", status READY, has 1 handler(s) for this service...
# dbname.mydomain 是监听对外提供的服务名, 要设置成全局数据库名或参数 service_names 的值
# dbname 是数据库初始化参数 db_name 的值
# mydomain 是数据库初始化参数的 db_domain 的值
# insname 是数据库初始化参数的 instance_name 的值
# READY 状态表示是自动注册的监听
$ cat $ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
1-3. 客户端 tnsname.ora
$ cat $ORACLE_HOME/network/admin/tnsnames.ora
MY_TNS_NAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = srvname)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbname.mydomain)
)
)
# HOST 是数据库服务器主机名或 IP 地址, 在服务器上可通过 netstat -tulnp|grep 1521 查看
# MY_TNS_NAME 是连接数据库时的连接字符串别名
# SERVICE_NAME 与 1-2 中监听对外提供的服务名相同
1-4. 连接
1-4-1. 本地连接, 不经过监听器
sqlplus hr/hr
1-4-2. 经过监听器并使用客户端 tnsname.ora 文件解析
sqlplus hr/hr@my_tns_name
1-4-3. 简易连接方式, 经过监听但不使用客户端 tnsname.ora 文件
sqlplus hr/hr@srvname:1521/dbname.mydomain
2. 静态注册的监听
# 为了解决动态注册不稳定的情况
2-1. 配置监听器并重启监听
$ cat $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(global_dbname = dbname.mydomain)
(oracle_home = D:\oracle\product\10.2.0\db_1)
(sid_name = go)
)
)
# global_dbname 设置为全局数据库名, 或参数 service_names 的值
# sid_name 设置为参数 instance_name 的值
2-2. 监听器状态
$ lsnrctl status
Service "dbname.mydomain" has 1 instance(s).
Instance "insname", status UNKNOWN, has 1 handler(s) for this service...
2-3. 客户端设置
# 与动态注册监听时设置相同
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22558114/viewspace-1122420/
,如需转载,请注明出处,否则将追究法律责任。