在oracle安装目录$HOME/network/admin下,,经常看到sqlnet.ora tnsnames.ora listener.ora这三个文件,除了tnsnames.ora,其他两个文件详细的用途很多人都不太了解。
1. sqlnet.ora 用在oracle client端,用于配置连接服务端oracle的相关参数.
2. tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数,就像系统中的hosts文件一样。
3. listener.ora 用在oracle server端,配置oracle服务端程序的监听办法,比如限制某些ip等参数。
在安装目录$HOME/network/admin/samples下,会看到如上上个文件的示例文件,里面会有相关参数的说明和用法,如果遇到什么问题,大家可以对照这些示例文件中相关参数的说明进行解决。
如果连接数据库出了什么问题,在保证网络出正常,没有防火墙干扰的情况下,查找问题的步骤是:
1)在客户端顺序检查sqlnet.ora,tnsnames.ora是有问题。
2)在服务器端检查listener.ora配置,并且保证监听程序启动,数据库服务加载。
 
1. 认识sqlnet.ora
 
下面只讲述几个常用参数配置,详细的资料,大家可以查看示例sqlnet.ora得到。
sqlnet.ora可以删除,这样在oracle客户端连接数据库的时候,默认采用tnsnames.ora中的配置。
1).NAMES.DEFAULT_DOMAIN
域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"
示例:
sqlnet.ora中:
NAMES.DEFAULT_DOMAIN=com
tnsnames.ora中的tns定义如下:
local_dev =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
          (CONNECT_DATA =
        (SERVER = DEDICATED)
      (SERVICE_NAME = linuxdb)
   )
)
在客户端执行命令:sqlplus username/password@local_dev[/email]的时候,会出现如下错误信息:
"ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。
因为sqlplus username/password@local_dev[/email]的时候,将tns别名“local_dev”转换成了“local_dev.com”,所以local_dev.com在tnsnames.ora中找不到,就报错了。
修改tnsnames.ora中的定义如下:
local_dev.com =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
          (CONNECT_DATA =
        (SERVER = DEDICATED)
      (SERVICE_NAME = linuxdb)
   )
)
再执行sqlplus [email=username/password@local_dev]username/password@local_dev[/email],连接成功。
2)NAMES.DIRECTORY_PATH
定义了在客户端连接数据库时,采用什么样的匹配方式。
示例
sqlnet.ora内容如下:
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
那么在客户端执行sqlplus  username/password@local_dev[/email]连接数据库的时
首先采用tnsnames.ora的别名配置连接数据库,若连不上再采用ONAMES进行解析,最后采用主机名进行解析。
ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;
HOSTNAME表示使用host文件,DNS,NIS等来解析;
3)SQLNET.AUTHENTICATION_SERVICES
定义登录数据库的认证方式。
NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用。 
可以设置成SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)先后顺序表明验证的优先方式。
示例
sqlnet.ora内容如下:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
在命令行上执行如下命令:
sqlplus "/ as sysdba"时,执行失败。
提示错误信息ORA-01031: insufficient privileges
这个参数默认没有设置。 
 
2. 认识tnsnames.ora
 
提供了客户端连接某个数据库的详细信息,主机地址,端口,数据库实例名等。
下面给出一个示例来说明问题:
local_dev =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
          (CONNECT_DATA =
        (SERVER = DEDICATED)
      (SERVICE_NAME = linuxdb)
   )
)
PROTOCOL参数一般是TCP,可以根据服务器情况选择一种配置方式。
HOST 一般是ip地址,也可以是主机名,这个主机名字只要能用ping hostname通就行,一般在客户端系统的host文件上配好主机名和ip地址的映射关系。PORT 标准是1521,根据服务器端的监听端口而定。SERVICE_NAME 就是数据库的服务名,用system用户登陆后,sqlplus> show parameter service_name命令查看。
 
3. 认识listener.ora
 
tnslsnr进程是监听、并接受远程连接数据库请求的监听进程,listener.ora是tnslsnr进程的配置文件,监听的参数都是从该配置文件中读取。
该文件位于服务端,如果只安装oracle客户端,一般不存在这个文件。
如果你只需要在本地连接数据库,不接受远程连接,那么也不需要启动tnslsnr进程,也不需要去维护listener.ora文件。
启动监听进程的命令,在命令模式下,执行lsnrctl start命令就启动了监听进程tnslsnr。
监听可以有多个,也就是说,可以同时监听多个oracle实例,可以在listener.ora中定义多个监听器进行监听。
下面给出一个简单的示例
listener.ora中的内容:
LISTENER_CSB =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1621))
      )
    )
  )
SID_LIST_LISTENER_CSB =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = /u02/oracle/app/oracle/product/10.2.0/db)
      (SID_NAME = zjdevcsb)
    )
  )
#############################################
LISTENER_CSA =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1521))
      )
    )
  )
SID_LIST_LISTENER_CSA =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = /u02/oracle/app/oracle/product/10.2.0/db)
      (SID_NAME = zjdevcsa)
    )
  )
在上面:
1). LISTENER_CSB,LISTENER_CSA定义了监听器的两个监听名字,和这两个监听器监听的参数:ip,port等。
2). SID_LIST_LISTENER_CSB,SID_LIST_LISTENER_CSA定义了两个监听服务,服务名字格式SID_LIST_<lsnrname>,lsnrname就是上面两个监听器的名字,指定了这个服务将会接受的服务将提交给那个监听器;监听的实例名zjdevcsb,zjdevcsa是在tnsnames.ora中需要指定的SERVICE_NAME参数对应。

Oracle配置文件的更多相关文章

  1. java项目连接Oracle配置文件

    转载自:https://blog.csdn.net/shijing266/article/details/42527471 driverClassName=oracle.jdbc.driver.Ora ...

  2. Oracle配置文件tnsnames.ora新增链接后连接报错:ORA-12154: TNS:无法解析指定的标识符

    一个空格引发的血案:在tnsnames. ora文件中新加了一个配置,该配置估计当时是拷的别人的直接粘贴上去的,然后发现用pl/sql连接就一直报错了,后面排除了用户名和密码问题和后,仔细看了该文件才 ...

  3. Web项目从Oracle转为Mysql,fluentnhibernate-1.0和NHibernate2.1.0升级到NHibernate3.3的注意事项

    1.Oracel数据库没有字段自增长属性,要实现自增长通常是通过查询序列或者触发器来实现的. 设置自增长主键 alter table SUB_SUBSCRIPTION add primary key( ...

  4. ORACLE 连接SQLSERVER 数据库备忘

    最近工作需要,要从SQL SERVER数据库中同步提取数据. 这里采用了  Oracle Gateway 来连接,折腾了半天,终于搞定,记录下已备下次使用. 基本资料网上都可以搜很多,官网配置说明在这 ...

  5. ORACLE查看并修改session和连接最大数

    第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 SQL> show parameter processes NA ...

  6. 【Oracle】配置oracle数据库最大连接数

    数据库中教你如何修改ORACLE最大连接数 Oracle的连接数相关参数:processes.sessions. Oracle的sessions是个派生值,由processes的值决定,session ...

  7. oracle 11g ORA-12541: TNS: 无监听程序 (DBD ERROR: OCIServerAttach)

    From :http://www.cnblogs.com/wangyt223/archive/2012/12/11/2812931.html em无法浏览,同时监听起不来.同时他的监听服务还是正常的, ...

  8. oracle启动 init.ora spfile pfile[转]

    昨天晚上快下班的时候,公司数据库突然堵住了,一个buf表中累计了20多W的数据提取不出来,改了程序,效果不明显.因为之前有一次也重启过oracle,所以这次还是想把oracle重启一下,因为那些数据都 ...

  9. Oracle 的process和Session

    Oracle 的process和Session 1.process 和session的概念:process:这个参数限制了能够连接到SGA的操作系统进程数(或者是Windows 系统中的线程数),这个 ...

随机推荐

  1. chrome 设置代理服务器

    通过设置google chrome浏览器的代理服务器可以让google chrome浏览器通过代理服务器上网,可以隐藏本机的IP地址或者访问一些不能直接访问的网站. 工具/原料   google ch ...

  2. 关于dll的pdb文件的小贴士

    .pdb文件最好与生成它的.dll文件放在一起,这样调试的时候才有可能跟踪进dll的内部函数里.

  3. 如何通过Mac 下的SVN拉取代码

    背景:今天入职了一家新单位,用的svn,我之前一直用的win下的git和svn,然后我现在用自己的mac开发,所以有了标题的疑问 博文由来:看了几个博客写的都很繁琐,看半天才能解决我的疑问,所以自己写 ...

  4. Unity3d 重力感应

    Input.acceleration 加速度 最近一次测量的设备在三维空间中的线性加速度(只读); void Update () { v3=Input.acceleration; } void OnG ...

  5. CodeIgniter框架——CI中视图路径问题

    答: 视图中的所有路径全部和 index.php 同级,也就是和 index.php 属于一个目录下,也就是网站根目录. 因为 index.php 后面看似是路径的东西其实那只是一种 URL 参数而已 ...

  6. hdu 5185(DP)

    不错的一道dp题目,一开始想了一种N*N的dp,后面就一直想怎么优化,然后就一直都在坑中了. 这题题解还是看早了,应该再多想会的,多换种表示状态的方法再想想. dp[i][j]=dp[i-j][j]+ ...

  7. TLE之前,没有一个节点叫失败!!!

    我想我十八年来记忆最深刻的夜晚,大概便是在吉林大学燥热的宿舍里,穿着橘黄色的短袖,努力咽下大口大口的雪碧.那天晚上我仰躺在吉大热得几乎不能入眠的床板上,一动不动,看夏夜里打不尽的蚊子在惨白的天花板下飞 ...

  8. 2014 MapReduce

    function map(String name, String document): // name: document name // document: document contents fo ...

  9. JS replace()方法替换变量(可以对变量进行全文替换)

    转至:http://blog.sina.com.cn/s/blog_6552200b0102ve60.html 事情是这样的: 我要用 JS 替换一个多行文本的关键字 正常,没有变量的时候应该是这样: ...

  10. <2013 06 29> In Deutschland. Thinking in Mechanism, EE, CS, etc.

    一 在德国近一个月了,主要去了慕尼黑周边的几个景点,天鹅城堡啊,国王湖啊,然后就是在市区逛,玛丽安广场,伊萨河,英国公园,德意志博物馆... ... 总体的印象是非常好的,只是自己不怎么懂德语,但这里 ...