设为首页 收藏本站
查看: 1185|回复: 0

[经验分享] Oracle的配置文件

[复制链接]

尚未签到

发表于 2018-9-25 11:41:23 | 显示全部楼层 |阅读模式
  转载地址:http://blog.csdn.net/like_zhz/article/details/5440251
  ORACLE的三个配置文件介绍
  概述
  在oracle安装目录$HOME/network/admin下,,经常看到sqlnet.ora tnsnames.ora listener.ora这三个文件,除了tnsnames.ora,其他两个文件详细的用途很多人都不太了解。
  sqlnet.ora 用在oracle client端,用于配置连接服务端oracle的相关参数.
  tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数,就像系统中的hosts文件一样。
  listener.ora 用在oracle server端,配置oracle服务端程序的监听办法,比如限制某些ip等参数。
  在安装目录$HOME/network/admin/samples下,会看到如上上个文件的示例文件,里面会有相关参数的说明和用法,如果遇到什么问题,大家可以对照这些示例文件中相关参数的说明进行解决。
  如果连接数据库出了什么问题,在保证网络出正常,没有防火墙干扰的情况下,查找问题的步骤是:
  1)在客户端顺序检查sqlnet.ora,tnsnames.ora是有问题。
  2)在服务器端检查listener.ora配置,并且保证监听程序启动,数据库服务加载。
  认识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 =
  (DEION =
  (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]的时候,会出现如下错误信息:
  "ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。
  因为sqlplus [email=username/password@local_dev]username/password@local_dev[/email]的时候,将tns别名“local_dev”转换成了“local_dev.com”,所以local_dev.com在tnsnames.ora中找不到,就报错了。
  修改tnsnames.ora中的定义如下:
  local_dev.com =
  (DEION =
  (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 [email=username/password@local_dev]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
  这个参数默认没有设置。
  认识tnsnames.ora
  提供了客户端连接某个数据库的详细信息,主机地址,端口,数据库实例名等。
  下面给出一个示例来说明问题:
  local_dev =
  (DEION =
  (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地址的映射关系。
  ORT 标准是1521,根据服务器端的监听端口而定。S
  ERVICE_NAME 就是数据库的服务名,用system用户登陆后,sqlplus> show parameter service_name命令查看。
  这个配置文件平时大家都用得比较多,一般人都会,相信不会有太大问题。
  认识listener.ora
  tnslsnr进程是监听、并接受远程连接数据库请求的监听进程,listener.ora是tnslsnr进程的配置文件,监听的参数都是从该配置文件中读取。
  该文件位于服务端,如果只安装oracle客户端,一般不存在这个文件。
  如果你只需要在本地连接数据库,不接受远程连接,那么也不需要启动tnslsnr进程,也不需要去维护listener.ora文件。
  启动监听进程的命令,在命令模式下,执行lsnrctl start命令就启动了监听进程tnslsnr。
  监听可以有多个,也就是说,可以同时监听多个oracle实例,可以在listener.ora中定义多个监听器进行监听。
  下面给出一个简单的示例
  listener.ora中的内容:
  LISTENER_CSB =
  (DEION_LIST =
  (DEION =
  (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 =
  (DEION_LIST =
  (DEION =
  (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就是上面两个监听器的名字,指定了这个服务将会接受的服务将提交给那个监听器;监听的实例名zjdevcsb,zjdevcsa是在tnsnames.ora中需要指定的SERVICE_NAME参数对应。
  详细的参数说明可以查看示例的listener.ora文件。
  启动数据库
  先说一下数据库的相关定义术语
  数据库 是指在物理磁盘上的文件数据,就是表空间文件的集合,只能有一个,并唯一;就像类的定义。
  实例 是加载数据库文件的一个服务,或者进程。对同一个数据库,可以有多个实例,比如rac模式,多个实例都是加载同一份物理数据。
  oracle用户登录主机:
  1) 启动数据库实例
  首先执行命令sqlplus "/ as sysdba"用数据库系统管理员角色登录,然后执行startup启动数据库实例,关闭数据库实例执行用shutdown命令。如果不需要从远程连接数据库,那么你就可以在本机登录数据库了。执行sqlplus username/password就可以正确登录数据库。
  2) 监听
  启动监听,执行命令lsnrctl start,可以用lsnrctl status查看监听状态,如果监听成功启动,那么就可以在远程连接数据库了,执行命令sqlplus [email=username/password@tnsname]username/password@tnsname[/email];
  关闭监听,执行命令lsnrctl stop。
  远程连接数据库
  当你执行命令sqlplus [email=username/password@tnsname]username/password@tnsname[/email]的时,一般处理过程如下:
  1) 查询sqlnet.ora看看名称的解析方式,发现是TNSNAME,或者hostname。
  2) 则查询tnsnames.ora文件,从里边找tnsname的记录,并且找到主机名,端口和service_name。
  3) 如果listener进程没有问题的话,建立与listener进程的连接。
  4) 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。
  5) 这时候网络连接已经建立,listener进程的历史使命也就完成了。
  如果在连接数据库的时候,出现什么错误,可以按照上面的顺序查找相应的配置,解决问题。
  几种连接数据库用到的命令形式
  sqlplus "/ as sysdba" 这是典型的操作系统认证,不需要listener进程,数据库即使不可用也可以登录。
  sqlplus username/password 不需要listener进程,登录本机数据库,数据库实例启动即可。
  sqlplus [email=username/password@tnsname]username/password@tnsname[/email]需要listener进程,最常见的远程登录模式,需要启动数据库实例和listener进程。
  本文涉及的相关术语
  Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。
  Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改 Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO 命令进行修改,然后修改相应参数。
  Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-601794-1-1.html 上篇帖子: oracle linux 6.2安装oracle 11g动手实验(包含操作视频下载地址) 下篇帖子: Access数据导入到Oracle及报错处理方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表