首页 > 数据库 >Oracle的网络三大配置文件sqlnet.ora、tnsnames.ora、listener.ora

Oracle的网络三大配置文件sqlnet.ora、tnsnames.ora、listener.ora

时间:2022-12-16 15:11:12浏览次数:51  
标签:配置文件 数据库 sqlnet listener tnsnames 服务器 ora 客户端

1.说明

为了使得外部进程能够访问Oracle 数据库则必须配置Oracle 网络服务器环境配置, Oracle 网络服务器环境是通过配置listener.ora、sqlnet.ora 和 tnsnames.ora 共三个文件来进行的。由于oracle数据库是一个客户端服务器的软件,所以,首先需要接收来自客户端的连接请求,服务器就必须配置监听器;其次,客户端要连接到某个制定的服务器,就必须配置到服务器的tns服务名。

有关oracle的三个网络配置文件分别为 listener.ora、sqlnet.ora、tnsnames.ora ,无论linux还是windows下,都是放在$ORACLE_HOME\network\admin目录下。

2  sqlnet.ora
sqlnet.ora 用在oracle client端,用于配置连接服务端oracle的相关参数。

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

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)

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

如果我是这个样子

NAMES.DIRECTORY_PATH= (TNSNAMES)

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

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
如果对tnsnames.ora文件没有做充分的配置,也可以使用Oracle的Easy Connect Naming Method方法测试数据库是否可以访问。

3.listener.ora
tnslsnr进程是监听、并接受远程连接数据库请求的监听进程。listener.ora是tnslsnr进程的配置文件,监听的参数都是从该配置文件中读取,该文件位于服务端。如果你只需要在本地连接数据库,不接受远程连接,那么也不需要启动tnslsnr进程,也不需要去维护listener.ora文件。
4. tnsnames.ora

tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数,就像系统中的hosts文件一样。提供了客户端连接某个数据库的详细信息,主机地址,端口,数据库实例名等。

BRPTPRD =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.23.92.61)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = RPTDB)
    )
)

PROTOCOL参数一般是TCP,可以根据服务器情况选择一种配置方式。

HOST 一般是ip地址,如果是主机名,则应该在客户端系统的host文件上配好主机名和ip地址的映射关系。

PORT 标准是1521,根据服务器端的监听端口而定。

SERVICE_NAME 就是数据库的服务名。

当我们配置tnsnames.ora时发现有个server = dedicated的参数,如果你的数据库配置不是MTS,那所有的连接都是DEDICATED,如果你的数据库配置是MTS,不指定DEDICATED,就是SHARED模式:意味着为你这个客户端服务的server进程和为其他客户端服务的server进程是共享的。

DEDICATED:意味着你这个客户端锁对应服务的server进程只为你这个客户端服务。

PS:

1.配置名顶格写,不能有空格

2.只有第一对括号可以顶格,其他都不可以。

3. tnsnames连接过程

当你输入sqlplus sys/oracle@orcl 的时候

1. 查询sqlnet.ora看看名称的解析方式,发现是 TNSNAME

2. 则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和 service_name

3. 如果listener进程没有问题的话,建立与listener 进程的连接。

4. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process 。

5. 这时候网络连接已经建立,listener 进程的历史使命也就完成了。

4.补充说明 

1、在win系统中使用nts,linux中不写该参数或者采用ALL值 

2、当不存在sqlnet.ora文件时,linux中可以正常登录,win中不能

配置过程TNS-03505名称无法解析错误:

 

 问题分析:
出现该问题的原因通常有两个:1、名称不存在 2、tns配置文件不存在。

经检查名称写的不统一,因此配置时要细心。

 

标签:配置文件,数据库,sqlnet,listener,tnsnames,服务器,ora,客户端
From: https://www.cnblogs.com/bellin124/p/16987414.html

相关文章

  • SpringBoot(六):配置文件的位置以及优先级
    SpringApplication 从以下位置的 application.properties 文件中加载属性(properties),并将它们添加到Spring Environment 中:项目目录的 /config 子目录项目目录的......
  • oracle设置UNIQUE唯一约束
    目录oracle设置UNIQUE唯一约束1、命名规范2、语法3、增加约束4、删除约束oracle设置UNIQUE唯一约束对一个变的多个列的数据看成唯一。1、命名规范unq_+约束名,长度最长5......
  • 查看oracle中执行计划
    Oracle六种方法查看执行计划 目录:(一)六种执行计划 (1)explainplanfor (2)setautotraceon (3)statistics_level=all (4)dbms_xplan.display_cursor获取 (5)事......
  • Ubuntu 22.04‘Temporary failure resolving‘ 解决方案
    1、在ubuntu中使用 sudoapt-getupdate 时会提示以下错误    2、解决方案修改/etc/resolv.conf文件将nameservier修改为8.8.8.8  此时就可以了但......
  • 使用EFcore连接Oracle数据时出现的错误及解决方案(Oracle版本指定错误)
    使用EFcore连接Oracle数据时出现的错误及解决方案(Oracle版本指定错误)程序环境1,DotNet版本.net6.02,EFcore版本:Microsoft.EntityFrameWorkCore6.0.11Microsof......
  • Microsoft.Practices.EnterpriseLibrary连接Oracle
    icrosoftEnterpriseLibrary用起来也是挺不错的,对于习惯自己写sql语句的开发者们,这个应该挺好的。下面以连接Oracle为例简单介绍下如何连接数据库。首先下载MicrosoftEnt......
  • typora设置图床到博客园,简洁操作(EasyBlogImageForTypora)。
    简单记录一些这个方便的操作。之前有看网上好多设置github,gitee的图床,看一些设置操作的话,也是可以的,但是本篇利用的这个工具相比还是更加的简单。我们需要利用到一个工具,叫......
  • 一:OEL6.9x64 安装Oracle11gR2
    标签(空格分隔):Oracle系列一:系统环境介绍系统:oraclelinux6.9x64主机名:cat/etc/hosts----172.16.10.41flyfish41172.16.10.42flyfis......
  • 15.Oracle事物
    简介oracle事物主要用于保持oracle数据库的数据一致性,oracle事物可以看成一个SQL块的整体,只要某一个SQL语句错误,那么事物中的SQL被看做一个整体,一起回滚,要么就是一起成功全......
  • 10.Oracle存储过程
    1.Oracle存储过程语法结构create[orreplace]procedure过程名(p1in|outdatatype,p2in|outdatatype,...pnin|outdatatype)is....--声明部......