oracle 体系结构及内存管理 02_监听及网络配置

1、Oracle监听
    监听具有独立性:与数据库的启动顺序无关先后,监听知道数据库的位置与端口,与数据库没有常连接。
    连接建立流程:客户端连接监听,监听将客户端连接转发给数据库实例,数据库实例专门为连接启动一个
server process,同时将SP的地址告诉监听,监听再转告客户端,客户端直接对SP发起连接请求,SP校验通过
用户名密码后正式建立连接。监听只在建立连接时启作用,与数据库没有常连接,连接建立后,监听关闭不影
响会话正常执行SQL。
    当连接时有@网络服务名,客户端会自动调用tnsname.ora文件,解析成IP,端口,连的服务名

listener.ora文件:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
        )
        -- 静态连接配置,静态注册在查询监听状态时会有UNKNOWN状态的服务,静态连接稳定,数据库将服务名注册到监听
        (SID_DESC =
          (GLOBAL_DBNAME =ipems)      --服务名
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          ( SID_NAME = ipems)         --实例名
        )
      )    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))
        )
      )    
-- 同一listener中配置一动态一静态监听
    LSNR2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1526))
        )
      )    
    SID_LIST_LSNR2 =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
        )
      )    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))
        )
      )    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = ipems)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (GLOBAL_DBNAME = ipems)
        )
      )       
tnsnames.ora文件
    ipems =                           --网络服务名
     (DESCRIPTION =
       (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))
        )
       (CONNECT_DATA =
          (SERVER= DEDICATED)        --服务器模式
          (SERVICE_NAME = ipems)     --服务名
        )
      ) 
    lsnr2 =                          --网络服务名
     (DESCRIPTION =
       (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1526))
        )
       (CONNECT_DATA =
          (SERVER= DEDICATED)        --服务器模式 dedicated,shared
          (SERVICE_NAME = ipems)     --服务名
        )
      )    
rac tnsnames.ora
racdb=
 (DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=1521))   --vip
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.11)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=racdb)))      
-- 非默认的动态listener可以正常起来需要在initSID.ora中配置local_listener='lsnr2';    --动态网络服务名

2、Oracle数据库的几个名字
    show parameter name
    数据库名:select dbid,name from v$database;
    实例名:  show parameter instance
              select INSTANCE_NUMBER,INSTANCE_NAME from v$instance;
    服务名:  show parameter service
    主机名:数据库IP地址
    网络服务名:随便启,最好与实例名相同
3、netca 配置监听程序和本地Net服务
    [root@redhat7 ~]# xhost +
    [root@redhat7 ~]# export DISPLAY=192.168.0.1:0.0 --将图形界面映射到本地
    [root@redhat7 ~]# su - oracle
    [oracle@redhat7 ~]$ netca
    lsnrctl start| status| stop      --监听的启动关闭状态查询
    tnsping ipems                    --tnsping网络服务名,测试是否可以ping通,能ping通不一定能连上
    netstat -tulnp|grep 1521         --监听是否正常启动
    alter system register;           --手动注册,pmon注册数据库service name到监听里
4、几种连接方式
    sqlplus hr/hr                               --不走监听,本地连
    sqlplus / as sysdba                         --不走监听
    sqlplus hr/hr@ipems                         --走监听
    sqlplus hr/hr@192.168.0.100:1521/ipems      --走监听,没有走tnsname.ora
    连接时oracle发现有@字符串,会利用tnsnames.ora解析为主机IP和端口号,通过这两找到监听,监听再根据service_name
找到具体实例。
5、双监听:双IP或者双端口
    遗留,双网卡,负载均衡。
6、oracle的监听日志
查找日志:
    # find /u01/app/ -name listener.log
    lsnrctl status
oracle监听日志解析
    监听日志记录监听器的工作过程,因为一些32bitOS自带的文件系统不支持2GB以上的文件,导致监听服务进程
(tnslsnr)append write日志文件出错关于“LISTENER.LOG日志大小不能超过2GB,超过会导致LISTENER监听器无
法处理新的连接。
清理监听日志:
    lsnrctl set log_status off
    mv listener.log listener.yyyymmdd
    lsnrctl set log_status on
lsnrctl status显示信息解析
    UNKNOWN,READY状态说明其目前有一个静态注册和一个动态注册
    SID_XPT服务:为DG准备的服务,DB BROKER会用到,如果不用DG可以删掉。
    SID:启动数据库实例的服务
    SIDXDB:高效处理XML数据的服务,默认会占用8080端口。
    PLSExtProc:PL/SQL调用外部接口(C、JAVA编写的过程)的服务,可以从listerner.ora中移除该项,在监听
启动时不再启动PLSExtProc服务。
7、sqlnet.ora用来决定oracle怎么解析一个连接中出现的字符串。在域用户即非系统管理员用户安装oracle
创建数据库实例时会报错,可以将用户添加到DBA组或者删掉sqlnet.ora文件。

8、涉及IP地址有关的文件
    Oracle默认会在..\product\10.2.0\db_1下面创建一个名为“当前IP或机器名_SID”的目录,该目录存储
的是SID实例的配置等信息;
    同时Oracle默认在..\product\10.2.0\db_1\oc4j\j2ee目录下创建一个名为“OC4J_DBConsole_当前IP或机器名_SID”
的目录,存放的是OracleDBConsole服务的相关配置等信息;
    Oracle 监听文件listener.ora,本地网络服务tnsnames.ora中的HOST设为当前IP地址;
数据库迁移或修改IP后只用关注第三种情况,对应修改即可。

参考资料:
http://www.cnblogs.com/kerrycode/p/4227579.html
http://blog.itpub.net/17203031/viewspace-701017
http://www.ha97.com/4785.html

转载于:https://my.oschina.net/peakfang/blog/2244944

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值