• Oracle数据库中的几个名字及监听的配置问题


      学习数据库的时候,由于数据库只建了一个库,而且只是本机访问,所以没有对listener.ora与tnsname.ora这两个文件进行过多设置,但是实际中要区分客户端与服务器端,相互之间的访问就存在微妙的关系了,处理不好又是一件头疼的事情。。而且Oracle中的名字比较多。。

      首先要清楚listener.ora是存在于服务端的针对客户端访问数据库的,tnsnames.ora是针对于客户端的网络访问的,而且本地访问不需要监听器的。。

    1.本地连接不需要listener

    C:Windowssystem32>lsnrctl stop         //关闭监听
    
    LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 22:36:34
    
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.1)(PORT=1521)))
    The command completed successfully
    
    C:Windowssystem32>sqlplus root/root      //可以注意到这里是能够访问的
    
    SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 26 22:41:52 2016
    
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> exit
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    C:Windowssystem32>sqlplus root/root@wang     //但是@service_name后,就不走本地连接了,因为监听器没起,也起不来了
    
    SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 26 22:42:10 2016
    
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    
    ERROR:              
    ORA-12541: TNS:no listener        //报错 没有监听
    

      2.先看一下两个文件的部分内容

    listener.ora

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = e:oracleproduct11.2.0dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:e:oracleproduct11.2.0dbhome_1inoraclr11.dll")
        )
        #(SID_DESC =   #####这一部分是静态注册手动添加内容,比动态注册稳定,相对于网络访问比较稳定,建议配置
                            ###因为再刚起服务器的时候,由于延迟,数据库可能还没有连接监听器,造成客户端不能访问数据库。。。 # (SID_NAME = wang)#数据库实例名字 #(ORACLE_HOME = e:oracleproduct11.2.0dbhome_1) #(GLOBAL_DBNAME = wang)#数据库名 #) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521))#网络监听地址要对应于tnsnames中的地址 )

      tnsnames.ora

    WANG =   #网络服务域名,就是在root/root@后的字符串,这里可以随便起名不区分大小写,只要对应即可
      (DESCRIPTION =
        #(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.108)(PORT = 1521))
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521))
        #(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = wang)#网络服务名 这里不可以随便起名字,必须对应数据库中的service_names
        )
      )
    
    LISTENER_WANG =
      #(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.108)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521))
      #(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    
    
    ORACLR_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
        (CONNECT_DATA =
          (SID = CLRExtProc)
          (PRESENTATION = RO)
        )
      )
    

      再看一下数据库的各种名字

    Connected.
    SQL> show parameter name
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_file_name_convert                 string
    db_name                              string      wang  --数据库名字 对应于sid
    db_unique_name                       string      wang
    global_names                         boolean     FALSE
    instance_name                        string      wang  --库实例名
    lock_name_space                      string
    log_file_name_convert                string
    service_names                        string      wang  --网络服务名
    

     3.这里是刚刚启动监听服务

    C:Windowssystem32>lsnrctl start       ####启动监听服务
    
    LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 23:08:27
    
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    
    Starting tnslsnr: please wait...
    
    TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
    System parameter file is e:oracleproduct11.2.0dbhome_1
    etworkadminlistener.ora
    Log messages written to e:oraclediag	nslsnrxxlisteneralertlog.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.32.1)(PORT=1521)))
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.1)(PORT=1521)))
    STATUS of the LISTENER     ###监听服务现在的一些状态
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
    Start Date                26-MAR-2016 23:08:30
    Uptime                    0 days 0 hr. 0 min. 3 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   e:oracleproduct11.2.0dbhome_1
    etworkadminlistener.ora
    Listener Log File         e:oraclediag	nslsnrxxlisteneralertlog.xml
    Listening Endpoints Summary...   #######这里注意到 监听器还没有注册到wang数据库实例,所以静态注册实例是很有必要的,正如上方listener文件注释处
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.32.1)(PORT=1521)))
    Services Summary...
    Service "CLRExtProc" has 1 instance(s).
      Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    The command completed successfully
    
    C:WindowsSystem32drivers>sqlplus root/root@wang         ######可以注意到现在网络访问时出现问题,报错了,因为上边service_name还没有注册到监听器中
    
    SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 26 23:08:36 2016
    
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    
    ERROR:
    ORA-12514: TNS:listener does not currently know of service requested in connect
    descriptor
    
    
    Enter user-name:
    

      4.稍等一会,数据库才把实例信息注册到监听器,可以使用网路服务访问数据库了。。

    C:Windowssystem32>lsnrctl status   #####查看监听器的状态
    
    LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 23:18:58
    
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.1)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
    Start Date                26-MAR-2016 23:08:30
    Uptime                    0 days 0 hr. 10 min. 29 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   e:oracleproduct11.2.0dbhome_1
    etworkadminlistener.ora
    Listener Log File         e:oraclediag	nslsnrxxlisteneralertlog.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.32.1)(PORT=1521)))
    Services Summary...
    Service "CLRExtProc" has 1 instance(s).
      Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Service "wang" has 1 instance(s).  #####这里可以注意到数据库实例已经建立监听了
      Instance "wang", status READY, has 1 handler(s) for this service...
    Service "wangXDB" has 1 instance(s).
      Instance "wang", status READY, has 1 handler(s) for this service...
    The command completed successfully
    
    C:WindowsSystem32drivers>tnsping wang    ######而且tnsping也能ping通数据库了。。。。
    
    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 23:16:26
    
    Copyright (c) 1997, 2010, Oracle.  All rights reserved.
    
    Used parameter files:
    e:oracleproduct11.2.0dbhome_1
    etworkadminsqlnet.ora
    
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = wang)))
    OK (10 msec)
    

      总结一下

          第一尽量使用静态注册的方式

              

    ############类似于上方listener.ora添加这一段信息,稳定
    (SID_DESC =
          (SID_NAME = baiwang)
          (ORACLE_HOME = e:oracleproduct11.2.0dbhome_1)
          (GLOBAL_DBNAME = wang)
        )
    

          第二网络配置要一致,尽量使用ip,不要使用主机名,因为解析也需要时间;

          第三可以实现多ip地址配置,访问同一数据库

  • 相关阅读:
    [转]暴风电视开机卡死、闪屏怎么办
    暴风电视快速查询机器型号及平台
    暴风电视风行系统FUNOS插入U盘、移动硬盘不能写入文件。
    yum版本号前有:冒号 指的是依赖版本号,默认0不显示
    yum多个源repo安装指定版本docker
    [转]YUM的工作机制与配置
    yum!base仓库里的repo id(源标识)前有叹号
    Docker新旧版本号下载
    yum没有可用软件包 docker。错误:无须任何处理CentOS-Media.repo仓库
    【笔记整理】之 servlet
  • 原文地址:https://www.cnblogs.com/whytohow/p/5324529.html
Copyright © 2020-2023  润新知