网络配备

网络配置

一、客户端与服务端建立网络连接过程:


网络配备

二、专用连接的网络配置


参考官方文档:Books => NET => Net Services Reference => 7 Listener Parameters (listener.ora)

 1、监听器的启用与配置(listener.ora)

 (1)动态监听与静态监听

 ①默认listener动态注册

   a.协议必须为TCP

  b.端口必须为1521

  c.对于监听的名称无要求

 

 ②  非默认listener动态注册(端口非1521)

  A、配置listener.ora

LSNR =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST =ocm)(PORT = 1522))

    )

  )

 

  B、alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST =10.2.60.43)(PORT = 1522))';

 

   C、alter systemregister;

   --或着在tnsnames.ora中添加如下内容

   --LISTENERS_ORADB =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.132)(PORT = 1522))

--alter systemset local_listener='LISTENERS_ORADB'

 

 ③  态监听

  A、 配置listener.ora

LSNR2=

  (DESCRIPTION=

    (ADDRESS_LIST=

     (ADDRESS=(PROTOCOL=tcp)(HOST=ocm)(PORT=1521))

      ))

 SID_LIST_LSNR2=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=oca)

     (ORACLE_HOME=/u01/app/oracle/product/11.2.0)

      (SID_NAME=ocm))

     )

 

  B、 启动监听LSNR2

  lsnrctl start lsnr2

     

 (2)动态监听和静态监听的区别

    ①动态注册的为readly,静态注册的状态为unknow

    ②动态是由PMON进程将服务注册到监听中:service_names/instance_name,

     静态注册是将服务写入listener.ora文件中global_dbname/sid_name

  ③动态修改不需要重启,静态每次修改都要重启监听

  ④动态重启不能马上注册服务,静态重启马上注册服务

  ⑤动态有相关的视图v$service_event/v$service_stats可以查等待事件及物理读逻辑读,而静态监听不能

   

 (3)既然有动态监听为什么还要静态监听呢?原因如下:

  ①监听器不是最早启动,oracle实例先启动

  ②监听器重启

  ③ oracle实例没有open

 

2、客户端连接方式

参考官方文档:Books => NET => Net Services Reference =>6 Local Naming Parameters (tnsnames.ora)

 (1)简易连接命名(EasyConnect):使用TCP/IP连接字符串

    ①sqlplus gyj/gyj@192.168.0.100:1521/test  --(sqlnet.ora:EZCONNECT)在windows下能看到密码

    ②sqlplusgyj@192.168.0.100:1521/test   --这种方法不行

    ③sqlpus gyj

     口令:gyj@192.168.0.100:1521/test     --用这个可以

 

(2)本地命名(Local Naming):使用本地命名配置,将网络服务名称保存在tnsnames.ora文件中

  ①sqlplus gyj/gyj@asm                  (sqlnet.ora:TNSNAMES)--在windows下能看到密码

    ②sqlplusgyj@asm 

     口令:gyj

 

从客户端到服务器端连接配置:

网络配备

(4)目录命名(Directory Naming):使用符合LDAP的集中式目录服务器

   ①需要加载了OracleNet名称解析信息的LDAP:

      Oracle Internet Directory

      Microsoft Active Directory Services

     ②支持所有OracleNet协义

     ③支持高级连接选项

     ④Oracle Net配置文件

     ②  conn hr/hr@orcl

 

(5)外部命名(External Naming Method):使用支持的非Oracle命名服务

    ①网络信息服务(NIS)外部命名

    ②分布计算环境(DCE)单元目录服务(CDS)

     LISTENER.ORA和TNSNAMES.ORA

 

 

3、sqlnet.ora

 参考官方文档:Books=> NET => Net Services Reference => 5 Profile Parameters (sqlnet.ora)

  (1)认证方式

  (2)连接方式

    

三、共享服务器


1、共享服务器的工作方式

专用服务器进程中,每一个客户连接,都要开启一个专用的服务器进程,来为客户程序完成各种数据库请求。如果现在连接数据库的客户端比较多,而服务器上的内存等硬件资源已经达到了限制。这时,我们就可以考虑使用共享服务器模式,让一个服务器进程,能为多个客户程序提供服务。共享服务器模式的工作方式如下:

网络配备

2、共享服务器的配置

gyj@OCM> alter system setshared_server_sessions =10;

 

System altered.

 

gyj@OCM> alter system set shared_servers=3;

 

System altered.

 

gyj@OCM> alter system setmax_shared_servers=10;

 

System altered.

 

gyj@OCM> alter system setdispatchers='(PROTOCOL=TCP)(DISPATCHERS=3)';

 

System altered.

 

gyj@OCM> alter system set max_dispatchers=5;

 

System altered.

 

oca =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = ocm)(PORT = 1521))

    )

   (CONNECT_DATA =

      (SERVER = SHARED)

     (SERVICE_NAME = ocm)

    )

  )

 

注意:共享服务模式客户端要连动态监听 ,如连静态监听会报这个报错:

gyj@OCM> conn gyj/gyj@oca;

ERROR:

ORA-12523: TNS:listener could not findinstance appropriate for the client connection

 

3、共享服务器相关视图

 v$shared_server

 v$shared_server_monitor

 v$dispatcher

 

四、排错流程

1、  可以用LINUX的Strace命令跟踪监听的整个连接过程。

(1)[oracle@ocm~]$ ps -ef |grep tns

  oracle   10169     1  015:17 ?        00:00:00/u01/app/oracle/product/11.2.0/bin/tnslsnr lsnr2 -inherit

(2)strace -rf-o /gyj/lsnr.log –p 10169

 (3)gyj@OCM>conn gyj/gyj@ocp

 Connected.

(4)gyj@OCM>exit

(5)分析/gyj/lsnr.log跟踪日志

 

2、常用的排错命令

 ping

 tnsping

 lsnrctl

 netstat -atulnp|grep 1521

 listener.ora

 tnsnames.ora

 sqlnet.ora

 show parameter service_names