网络相关的3个配置文件,分别为listener.ora、tnsname.ora、sqlnet.ora,windows目录在ORACLE_HOME/dbhome_1/NETWORK/ADMIN文件夹下
其中listener.ora是服务器端的配置,如果数据库要让远程客户端访问就必须配置该文件;tnsname.ora是客户端的配置,如果客户端要连接某服务器就必须配置该配置文件;sqlnet.ora决定客户端如何查找连接字符串。sqlnet.ora的配置如下
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)
tnsname.ora目录中有如下配置
lala =
(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.7.31)(PORT = 1522)
)
)
(CONNECT_DATA=
(SERVER = SHARED)
(SERVICE_NAME = orcl)
)
)
如果通过sqlplus连接数据库
C:\ >sqlplus sys/oracle@lala as sysdba
首先该操作数据库首先会查找tnsname.ora配置文件中是否有lala的配置记录如果tnsname.ora没有改配置记录,那么就会把lala当做是主机名。
如果sqlnet.ora的配置如下
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么sqlplus就只会查找tname.ora的配置。
二、服务端(listener.ora)配置文件
动态注册:
配置如下
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.31)(PORT = 1521))
)
)
如果需要配置多个监听器只需要增加类似配置文件
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.31)(PORT = 1521))
)
)
LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.31)(PORT = 1522))
)
)
动态监听,数据库必须指定local_listener参数的值,登录数据库修改参数
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.7.31)(PORT = 1522)))'
说明数据库会动态注册到LISTENER1监听器,然后注册监听
SQL> alter system register;
静态注册:
配置如下
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.31)(PORT = 1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME= orcl)
(ORACLE_HOME=C:\app\oracle\product\11.2.0\dbhome_1)
(GLOBAL_DBNAME=orcl)
)
)
查看监听状态是会不管orcl实例有没有启动会有orcl的记录,但是都是UNKNOWN状态。
三、客户端(tnsname.ora)配置文件
如果服务器配置有共享连接,那么客户端可以使用共享方式连接,也可以设置专用连接。客户端的连接默认按照服务器端的连接方式。配置文件如下
#共享连接方式
orcl_shared =
(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.7.31)(PORT = 1521)
)
)
(CONNECT_DATA=
(SERVER = SHARED)
(SERVICE_NAME = orcl)
)
)
#专用连接方式
orcl_dedicated =
(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.7.31)(PORT = 1521)
)
)
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
现在可以测试客户端连接的状态,首先查看服务器监听器的状态
C:\Users\dkzx>lsnrctl service aa
LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 13-2月 -2014 20:46:10
Copyright (c) 1991, 2010, Oracle. All rights reserved.
正在连接到
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.7.31)(PORT=1521)))
服务摘要..
服务 "orcl" 包含 1 个实例。
实例 "orcl", 状态 READY, 包含此服务的 7 个处理程序...
处理程序:
"D005" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60195))
"D004" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60194))
"D003" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60193))
"D002" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60192))
"D001" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60191))
"D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60190))
"DEDICATED" 已建立:0 已拒绝:0 状态:ready
LOCAL SERVER
命令执行成功
如图,共享连接方式(D00x)和专用连接方式(DEDICATED)目前都没有建立连接,现在用共享连接方式连接数据库。
C:\ >sqlplus sys/oracle@orcl_shared as sysdba
再次查看服务器监听状态,发现已经建立一条共享连接方式(D000),专用连接方式(DEDICATED)没有建立连接。
C:\Users\dkzx>lsnrctl service aa
LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 13-2月 -2014 20:50:06
Copyright (c) 1991, 2010, Oracle. All rights reserved.
正在连接到
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.7.31)(PORT=1521)))
服务摘要..
服务 "orcl" 包含1 个实例。
实例 "orcl", 状态 READY, 包含此服务的 7 个处理程序...
处理程序:
"D005" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60195))
"D004" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60194))
"D003" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60193))
"D002" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60192))
"D001" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60191))
"D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60190))
"DEDICATED" 已建立:0 已拒绝:0 状态:ready
LOCAL SERVER
命令执行成功
下面使用专用连接登陆数据库
C:\ >sqlplus sys/oracle@orcl_dedicated as sysdba
查看服务端监听状态,发现专用连接方式(DEDICATED)也有一个连接
C:\Users\dkzx>lsnrctl service aa
LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 13-2月 -2014 20:53:15
Copyright (c) 1991, 2010, Oracle. All rights reserved.
正在连接到
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.7.31)(PORT=1521)))
服务摘要..
服务 "orcl" 包含 1 个实例。
实例 "orcl", 状态 READY, 包含此服务的 7 个处理程序...
处理程序:
"D005" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60195))
"D004" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60194))
"D003" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60193))
"D002" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60192))
"D001" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60191))
"D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1022 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=dkzx-PC)(PORT=60190))
"DEDICATED" 已建立:1 已拒绝:0 状态:ready
LOCAL SERVER
命令执行成功