首页 > 数据库 >ORACLE的三个配置文件介绍

ORACLE的三个配置文件介绍

时间:2023-06-02 17:07:06浏览次数:45  
标签:username 配置文件 数据库 介绍 listener ORACLE password 监听 ora


 


在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 = 
 
    (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]的时 候,会出现如下错误信息:
"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 = 
 
    (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 [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 = 
 
    (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地址的映射关系。
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 = 
 
   (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参数对应。
详细的参数说明可以查看示例的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 <db_name.db_domain>命令进行修改,然后修改相应参数。
Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中, 一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库, 而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关 系,即不必Service name 必须与SID一样。

标签:username,配置文件,数据库,介绍,listener,ORACLE,password,监听,ora
From: https://blog.51cto.com/u_13538361/6404053

相关文章

  • ATT&CK v13版本战术介绍——凭证访问(一)
    一、引言在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权、防御规避战术,本期我们为大家介绍ATT&CK14项战术中凭证访问战术第1-6种子技术,后续会介绍凭证访问其他子技术,敬请关注。二、ATT&CKv13简介MITREATT&CK是一个全球可访问的基于现实世界观......
  • Oracle主要配置文件
    Oracle主要配置文件介绍(转帖)Oracle主要配置文件介绍:  profile文件,oratab文件,数据库实例初始化文件initSID.ora,监听配置文件,sqlnet.ora文件,tnsnames.ora文件1.2Oracle主要配置文件介绍1.2.1/etc/profile文件          系统级的环......
  • Oracle Application Framework: Javadoc导读
    Oracle.apps.fnd.framework包括从model和用户界面或视图代码中可以安全访问的类和接口。如:如果你在页面中要访问一个==rootapplicationmodule==,你要使用oracle.apps.fnd.framework.OAApplicationModule接口(你永远不会访问一个客户端的实现)。其实情况下,这个包也包括:你可能要抛......
  • Python网页开发神器fac 0.2.9、fuc 0.1.29新版本更新内容介绍
    fac项目地址:https://github.com/CNFeffery/feffery-antd-componentsfuc项目地址:https://github.com/CNFeffery/feffery-utils-components欢迎star支持⭐大家好我是费老师,由我开源维护的Python网页开发相关组件库fac和fuc分别更新到了0.2.9版本和0.1.29版本,本文就将为大家......
  • Oracle:OpenEuler 22.03 安装oracle12c:个人认为这是最完美的解决方案
    最小化安装openeuler-22.03-sp1,并更新到最新(写本文时:2023-06-01)关闭selinux关闭firewalld.service创建用户及用户组:oracle:oinstall创建推荐的目录:/u01,属主oracle:oinstallyuminstalllibnsllibnsl2-devellibaio-devellibcap-develxorg-x11-utilsxauthgccmakelibst......
  • 好饭不怕晚,扒一下Redis配置文件的底Ku
    忙碌是一种幸福,让我们没时间体会痛苦;奔波是一种快乐,让我们真实地感受生活;疲惫是一种享受,让我们无暇空虚。这几句话就能简单概括我最近的工作和生活。好多小伙伴都来私信“催更”,今天它来了!为了表达阿Q的歉意,特赠送「亿级流量Java高并发与网络编程实战」一本,规则见文末。在往期的文......
  • Elasticsearch介绍及安装
    elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容。倒排索引倒排索引的概念是基于MySQL这样的正向索引而言的。elasticsearch便是基于倒排索引实现快速查找的功能。倒排索引中有两个非常重要的概......
  • python使用cx_Oracle连接timesten
    环境:OS:WindowsDB:18.1  1.配置环境变量TNS_ADMIN=C:\TimesTen\tt181_64\network\admin 2.创建tnsnames.ora文件在timesten安装目录下C:\TimesTen\tt181_64\network\admin\samples拷贝一个tnsnames.ora到C:\TimesTen\tt181_64\network\admin进行修改 3.修改tnsnames......
  • Oracle 游标使用全解
    --声明游标;CURSORcursor_nameISselect_statement--For循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标declare--类型定义cursorc_jobisselectempno,ename,job,salfromempwherejob='MANAGER';......
  • RocketMQ启动和端口介绍【转】
    关闭namesrv和broker关闭namesrv服务#进入binshmqshutdownnamesrv   如图关闭broker服务shmqshutdownbroker   如图通过jps验证下 如图第五节:防火墙配置宿主机需要远程访问虚拟机的rocketmq服务和web服务,需要开放相关的端口号,简单粗暴的方式是直接......