一、配置文件说明

网络相关的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

命令执行成功
09-19 17:46