zoukankan      html  css  js  c++  java
  • Oracle—网络配置文件

    Oracle网络配置文件详解
        三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下。

    1、sqlnet.ora-----通过这个文件来决定怎么样找一个连接中出现的连接字符串。
    例如我们客户端输入

    sqlplus sys/oracle@ora 
    

    假如我的sqlnet.ora是下面这个样子

    SQLNET.AUTHENTICATION_SERVICES= (NTS) 
    NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME,EZCONNECT) 
    

    那么,客户端就会首先在tnsnames.ora文件中找ora的记录.如果没有相应的记录则尝试把ora当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=ora这个实例,当然我这里ora并不是一个主机名

    EZCONNECT表示:可以使用简单的方式连接Oracle例如:

    1 CONNECT username/password@host[:port][/service_name][/instance_name]  
    2 CONNECT username/password@host[:port][/service_name]  
    3 sqlplus / as sysdba  
    4 sqlplus sys as sysdba/sys@127.0.0.1:1521
    

    如果我是这个样子

    NAMES.DIRECTORY_PATH= (TNSNAMES) 
    

    那么客户端就只会从tnsnames.ora查找ora的记录,括号中还有其他选项,如LDAP等并不常用。

    2、tnsnames.ora------这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应。
    只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。
    例子:

    ORA_TEST = 
        (DESCRIPTION = 
           (ADDRESS_LIST = 
              (ADDRESS = (PROTOCOL = TCP)(HOST = LXL)(PORT = 1521)) 
           ) 
          (CONNECT_DATA = 
             (SERVER = DEDICATED) 
             (SERVICE_NAME = ora) 
          ) 
        ) 
    

    ORA_TEST:客户端连接服务器端使用的服务别名。注意一定要顶行书写,否则会无法识别服务别名。
    PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。
    HOST:ORACLE服务器端IP地址或者hostname。确保服务器端的监听启动正常。
    PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。
    SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令查看。

    3、listener.ora------listener监听器进程的配置文件
    关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
    例子:

    #listener.ora Network Configuration File: #E:/oracle/product/10.1.0/Db_2/NETWORK/ADMIN/listener.ora 
    # Generated by Oracle configuration tools. 
    SID_LIST_LISTENER = 
        (SID_LIST = 
             (SID_DESC = 
                 (GLOBAL_DBNAME = ora) 
                 (ORACLE_HOME = E:/oracle/product/10.1.0/Db_2) 
                 (SID_NAME = ora) 
             ) 
        )
    
    LISTENER = 
        (DESCRIPTION = 
            (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) 
        )
    

    LISTENER :监听名称,可以配置多个监听,多个监听的端口号要区分开来。
    GLOBAL_DBNAME :全局数据库名。通过select * from global_name; 查询得出
    ORACLE_HOME :oracle软件的跟目录
    SID_NAME :服务器端(本机)的SID
    PROTOCOL:监听协议,一般都使用TCP
    HOST:本机IP地址,双机时候使用浮动IP
    PORT:监听的端口号,使用netstat –an 检查该端口不被占用。

    4、sqlplus运行基本机理
    当你输入sqlplus sys/oracle@orcl的时候
    (1)查询sqlnet.ora看看名称的解析方式,发现是TNSNAME
    (2)则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name
    (3)如果listener进程没有问题的话,建立与listener进程的连接。
    (4)根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。
    (5)这时候网络连接已经建立,listener进程的历史使命也就完成了。
    注:

    在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,
    即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/manager@test.server.com ,然后再到tnsnames.ora文件中找test.server.com网络服务名,
    这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如 #NAMES.DEFAULT_DOMAIN = server.com。
    假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找 test网络服务名,然后取出其中的host ,port,tcp,service_name,
    利用这些信息将连接请求发送到正确的数据库服务器上。
    

    5、文件模板
    (1)sqlnet.ora模板

    # sqlnet.ora Network Configuration File: E:appAdministratorproduct11.2.0dbhome_1
    etworkadminsqlnet.ora  
    # Generated by Oracle configuration tools.  
     
    # This file is actually generated by netca. But if customers choose to   
    # install "Software Only", this file wont exist and without the native   
    # authentication, they will not be able to connect to the database on NT.  
     
    SQLNET.AUTHENTICATION_SERVICES= (NTS)  
      
    NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, EZCONNECT) 
    

    (2)tnsnames.ora模板

    # tnsnames.ora Network Configuration File: E:appAdministratorproduct11.2.0dbhome_1NETWORKADMIN	nsnames.ora  
    # Generated by Oracle configuration tools.  
       
    LISTENER_ORCL =  
           (ADDRESS = (PROTOCOL = TCP)(HOST = LXL)(PORT = 1521))  
         ORCL =  
           (DESCRIPTION =  
             (ADDRESS_LIST =  
               (ADDRESS = (PROTOCOL = TCP)(HOST = LXL)(PORT = 1521))  
            )  
            (CONNECT_DATA =  
              (SID = ORCL)  
            )  
          )  
    

    (3)listener.ora模板

    # listener.ora Network Configuration File: E:appAdministratorproduct11.2.0dbhome_1NETWORKADMINlistener.ora  
    # Generated by Oracle configuration tools.  
       
     SID_LIST_LISTENER =  
       (SID_LIST =  
         (SID_DESC =  
           (SID_NAME = CLRExtProc)  
           (ORACLE_HOME = E:appAdministratorproduct11.2.0dbhome_1)  
           (PROGRAM = extproc)  
           (ENVS = "EXTPROC_DLLS=ONLY:E:appAdministratorproduct11.2.0dbhome_1inoraclr11.dll")  
         )  
       )  
       
     LISTENER =  
       (DESCRIPTION =  
         (ADDRESS = (PROTOCOL = TCP)(HOST = LXL)(PORT = 1521))  
       )  
    

    6、常用命令

    #启动监听器
    lsnrctl start <监听器的名字>
    // 启动名为LISTENER的监听器
    lsnrctl start LISTENER
    
    #关闭监听器
    lsnrctl stop <监听器的名字>
    // 关闭名为LISTENER的监听器
    lsnrctl stop LISTENER
    
    #查看监听器的状态
    lsnrctl status <监听器的名字>
    // 查看名为LISTENER的监听器的运行状态
    lsnrctl status LISTENER
    
    #使用tnsping命令
    tnsping <客户端配置的别名>
    // 判断是否连通db_alias别名对应服务器上的数据库
    tnsping db_alias
    




    参考博客:
    [1]listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
    [2]Oracle配置监听(listener.ora配置)

  • 相关阅读:
    MTV和MVC的区别
    django权限之二级菜单
    Python PEP8代码书写规范
    form表单
    forms组件
    Django的用户认证组件
    Django的分页
    cookie session
    文件上传
    ORM多表操作上
  • 原文地址:https://www.cnblogs.com/shujk/p/13946686.html
Copyright © 2011-2022 走看看