listener.ora、tnsnames.ora和sqlnet.ora这3个文件是关系oracle网络配置的3个主要文件,都是放在$ORACLE_HOME/NETWORK/ADMIN目录下(Linux系统为“/”,Windows系统为“\")。其中listener.ora是和数据库服务器端相关,而tnsnames.ora和sqlnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密(#表注释)。
1.sqlnet.ora
通过这个文件来决定如何查找一个连接中出现的连接字符串
示例文件:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES,EZCONNECT)
#NAMES.DEFAULT_DOMAIN = oracle.com
内容说明:
#表明用户连接数据库用哪种验证方式<wbr><wbr></wbr></wbr>主要两种:
(1)NTS:表示系统身份验证<wbr><wbr>---</wbr></wbr>用户名和口令可输可不输<wbr><wbr>conn<wbr><wbr>/ as<wbr><wbr>sys
dba;<br>
(2)NONE:oralce</wbr></wbr></wbr></wbr></wbr></wbr>数据库身份验证---必须输入用户名和口令<wbr><wbr>conn<wbr><wbr>system/oracle as
sysdba;<br><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>在unix环境下可能会有问题,一般在unix下可以去掉这个配置。
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES,EZCONECT)——表示将首先利用tnsnames进行解析;如果tnsnames解析不到,将使用hostname解析;如果hostname解析不到,将采用onames进行解析;最后使用EZCONNECT解析。例如我们客户端输入:SQL>
conn [email=system/oracle@orcl23]system/oracle@orcl23[/email]<wbr><wbr>(orcl123</wbr></wbr>是网络服务名)那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的IP地址然后去连接这个IP上global_name=orcl123这个实例,当然我这里orcl并不是一个主机名。
被注释掉的NAMES.DEFAULT_DOMAIN = oracle.com——表示采用默认的域名为oracle.com,在tnsnames.ora中如果配置对应的解析,如果原来的数据库别名是oralocal(即网络服务名),那么,当启用这个参数后,在tnsnames中的配置要改成oralocal.oracle.com。在使用tnsping时或者sqlplus登录时,只需写前面的别名,系统会自动加上后面的域名来进行解析。
2.tnsnames.ora
这个文件位于客户端(服务器端也存在的,表示客户端与服务器端位于同一台主机),记录客户端访问数据库的本地配置,其实就是定义网络服务,只有当sqlnet.ora中有“NAMES.DIRECTORY_PATH=
(TNSNAMES)”这样的字样时,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。
示例文件:
ORCL123 =<wbr>#</wbr>网络服务名--------------配置文件里存在的一个网络服务名
<wbr><wbr>(DESCRIPTION =<br><wbr><wbr><wbr><wbr>(ADDRESS_LIST =<br><wbr><wbr><wbr><wbr><wbr><wbr>(ADDRESS = (PROTOCOL = TCP)(HOST = zhaomengbin)(PORT = 1521))<br><wbr><wbr><wbr><wbr>)<wbr><wbr>#</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>协议是TCP,要连接的服务器的计算机名zhaomegnbin,或为该主机对应的IP,端口号为1521
<wbr><wbr><wbr><wbr>(CONNECT_DATA =<br><wbr><wbr><wbr><wbr><wbr><wbr>(SERVICE_NAME = orcl)<br><wbr><wbr><wbr><wbr>)<br><wbr><wbr>)<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>EXTPROC_CONNECTION_DATA =
<wbr><wbr>(DESCRIPTION =<br><wbr><wbr><wbr><wbr>(ADDRESS_LIST =<br><wbr><wbr><wbr><wbr><wbr><wbr>(ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1))<br><wbr><wbr><wbr><wbr>)<br><wbr><wbr><wbr><wbr>(CONNECT_DATA =<br><wbr><wbr><wbr><wbr><wbr><wbr>(SID = PLSExtProc)<br><wbr><wbr><wbr><wbr><wbr><wbr>(PRESENTATION = RO)<br><wbr><wbr><wbr><wbr>)<br><wbr><wbr>)<br>
3<span style="color:#ED1C24; word-wrap:normal; word-break:normal; line-height:24px">listener.ora</span><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr><wbr>listener.ora文件中存放了客户机与服务器连接所需要的监听地址,以及服务器启动监听进程时的信息。一个完整的listener.ora文件样式如下:<br></wbr>
SID_LIST_LISTENER
=
<wbr>(SID_LIST =<br><wbr><wbr><wbr>(SID_DESC =<br><wbr><wbr><wbr><wbr><wbr>(SID_NAME = PLSExtProc)<br><wbr><wbr><wbr><wbr><wbr>(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)<br><wbr><wbr><wbr><wbr><wbr>(PROGRAM = extproc)<br><wbr><wbr><wbr>)<br><wbr>)<br>
LISTENER =<br><wbr>(DESCRIPTION_LIST =<br><wbr><wbr><wbr>(DESCRIPTION =<br><wbr><wbr><wbr><wbr><wbr>(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))<br><wbr><wbr><wbr>)<br><wbr>)<br>
以上是本人本机上的一个监听文件,下面就该监听文件的各个参数的作用作个描述:<br>
LISTENER<wbr><wbr><wbr><wbr><wbr><wbr>指出一个监听器定义的起始点。它实际上是正被定义的当前监听器的名称。默认的名称是LISTENER。<br>
DESCRIPTION<wbr><wbr><wbr>描述每个监听位置<br>
ADDRESS_LIST<wbr><wbr>含有与监听器正在监听的那些位置有关的地址信息<br>
PROTOCOL<wbr><wbr><wbr><wbr><wbr><wbr>指定用于本监听位置的协议<br>
HOST<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>保存监听器所驻留在的那台计算机的名称<br>
PORT<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>含有监听器正在上面监听的地址<br>
SID_LIST_LISTENER<wbr>定义配置监听器所针对的ORACLE服务的列表<br>
SID_DESC<wbr><wbr><wbr><wbr><wbr><wbr>描述每个Oracel SID<br>
GLOBAL_DBNAME<wbr>标识全局数据库名称。本项应该与当前Oracle服务的init.ora文件中的SERVICE_NAMES项一致<br>
ORACLE_HOME<wbr><wbr><wbr>给出服务器上Oracle可执行程序的位置<br>
SID_NAME<wbr><wbr><wbr><wbr><wbr><wbr>含有用于本Oracle实例的Oracle SID的名称</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
Lsnrctl命令用来管理Oracle监听器,是一个命令行界面。想调用这个命令行工具,在命令行键入lsnrctl即可。可以在LSNRCTL>提示符下键入help来显示这些命令的一份清单。
Services<wbr><wbr><wbr><wbr><wbr><wbr><wbr>列举出服务的一个汇总表及为每个协议服务处理程序所建立和拒绝的连接信息个数<br>
Start listener<wbr>启动指定的监听器<br>
Status listener 显示指定监听器的状态<br>
Stop listener<wbr><wbr>关闭指定的监听器<br>
Trace<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>打开监听器的跟踪特性<br>
Version<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>显示Oracle Net软件与协议适配器的版本<br>
Change_password 允许用户修改关闭监听器所需要的密码<br>
Reload<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>重新读取listener.ora文件,但不关闭监听器。如果该文件发生了变化,重新刷新监听器。<br>
Save_config<wbr><wbr><wbr><wbr>当从lsnrctl工具中对listener.ora文件进行了修改时,复制一个叫做listener.bak的listener.ora文件<br>
Exit<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>退出lsnrctl实用工具<br>
Quit<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>执行和exit相同的功能<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
以上三个网络配置文件可以通过图形化配置工具进行相应配置。如在Linux下,
$netmgr
#在Windows下为Net Manager
打开后可以看到一个窗口,其中,
profile 配置的是sqlnet.ora也就是名称解析的方式
service name 配置的是tnsnames.ora文件
listeners配置的是listener.ora文件,即监听器进程。
通过以上解读,就可以比较清晰地了解其运行机制了。
当你输入sqlplus sys/oracle@orcl的时候
1. 查询sqlnet.ora看看名称的解析方式,发现是TNSNAME
2. 则查询tnsnames.ora文件,从中寻找orcl的记录,并且找到主机名,端口和service_name
3. 如果listener进程没有问题的话,建立与listener进程的连接。
4.根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。
5.此时网络连接已经建立,listener进程的历史使命也就完成了。
几种连接用到的命令形式
1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程
2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程
3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。
init.ora中的Remote_Login_Passwordfile对身份验证的影响
<wbr><wbr><wbr>三个可选值:</wbr></wbr></wbr>
<wbr><wbr><wbr>NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限</wbr></wbr></wbr>
<wbr><wbr><wbr>EXCLUSIVE:</wbr></wbr></wbr>
<wbr><wbr><wbr>1.表示只有一个数据库实例可以使用密码文件</wbr></wbr></wbr>
<wbr><wbr><wbr>2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户</wbr></wbr></wbr>
<wbr><wbr><wbr>SHARED:</wbr></wbr></wbr>
<wbr><wbr><wbr>1.表示可以有多个数据库实例可以使用密码文件</wbr></wbr></wbr>
<wbr><wbr><wbr>2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户</wbr></wbr></wbr>
<wbr><wbr><wbr>所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE</wbr></wbr></wbr>
<wbr><wbr><wbr>当登录用户不是ORA_DBA组和ORA_OPER组成员时,登录数据库需要在Oracle中创建当前操作系统用户相同的用户名,如果当前用户是域用户,则名称为:domainname\yourname,如果是本地计算机用户,则名称为:computername\yourname</wbr></wbr></wbr>
<wbr><wbr><wbr>创建方法:</wbr></wbr></wbr>
<wbr><wbr><wbr>create "domainname\yourname" identified externally;</wbr></wbr></wbr>
<wbr><wbr><wbr>操作系统,修改HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下面添加AUTH_PREFIX_DOMAIN,值设为FALSE,在创建Oracle用户时可以忽略掉域名</wbr></wbr></wbr>
<wbr><wbr><wbr>这种方式下,init.ora中有一个参数将影响数据库如何匹配一个windows用户和Oracle用户os_authent_prefix = ""</wbr></wbr></wbr>
<wbr><wbr><wbr>缺省为空,Oracle8i以前,无该参数,而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)</wbr></wbr></wbr>
域名解析分析:相关文件为
/etc/hosts<wbr>#linux系统</wbr>
C:\windows\system32\drivers\etc\hosts #windows系统
客户端需要写入数据库服务器IP地址和主机名的对应关系。如果同时有私有IP和Internet上公有IP,私有IP写在前面,公有IP写在后面。
如:
11.0.17.136 oracle
有时候tnsping数据库服务器别名显示是成功的,但是sqlplus
username/passwd @servicename不通,jdbc thin link也不通,原因可能是DNS服务器里没有设置这个服务器IP地址和主机名的对应关系,本人就遇到过类似问题。
UNIX下ORACLE多数据库的环境,OS客户端需要配置下面两个环境变量来指定默认的目标数据库
<wbr><wbr><wbr><wbr>ORACLE_SID=appdb;export ORACLE_SID</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>TWO_TASK=appdb;export TWO_TASK</wbr></wbr></wbr></wbr>
相关命令:
$lsnrctl start listenername #启动监听程序listenername
$lsnrctl status listenername #查看listenername的状态
$lsnrctl stop listenername #停止listenername监听
$tnsping tnsname #测试网络服务名tnsname是否可用
分享到:
相关推荐
本指南将详细介绍Oracle10g客户端的安装和配置过程。 **安装步骤:** 1. 插入Oracle10g客户端的安装介质,通常为虚拟光盘,系统会自动启动安装程序。 2. 在安装界面,点击"开始安装"开始部署过程。 3. 经过短暂的...
在ORACLE 10G中,有两种类型的初始化参数文件:PFILE(Plain Text File)和SPFILE(Structured Parameter File)。PFILE是文本格式的文件,可以直接编辑,而SPFILE是二进制格式,提供了更多的高级特性,如动态调整...
1. **修改文件检测文件**:对于Oracle 10g的安装,需要修改某些文件来绕过版本不支持的检测。 2. **弹出欢迎窗口**:启动安装程序后,会看到安装向导的欢迎窗口。 3. **选择安装路径**:指定Oracle安装的路径。 4. *...
Oracle 10g 是一款广泛使用的数据库管理系统,适用于企业级数据存储和管理。本文将详细介绍如何在服务器上安装 Oracle 10g,并提供数据库还原的步骤。 **一、Oracle 服务端安装** 1. **启动安装**: 首先,将 ...
在Linux环境下安装Oracle数据库10g是一项复杂但必要的任务,对于数据库管理员(DBA)和想要学习如何在Linux平台上安装和配置Oracle数据库的IT专业人员来说,这是一项基础技能。以下是在Linux上安装Oracle 10g的详细...
【Liferay 5.1.2 配置 Oracle 10G 数据库操作详解】 Liferay 是一款开源的企业级门户平台,它默认使用 HSQLDB 作为内置数据库...在配置过程中,如果遇到错误,务必仔细检查配置文件和日志,确保所有步骤都已正确执行。
本安装说明主要针对Windows操作系统,详细指导如何正确安装Oracle 10g数据库服务器,并配置iES500 Extreme 电网调度自动化系统的数据库环境。 在开始安装之前,有一些必要的准备工作: 1. **安装环境检查**:确保...
在Oracle 10g RAC中,Cluster File System是一个核心组件,用于管理集群内的数据存储和文件共享。它支持数据的并发访问,并提供故障恢复能力,是实现RAC高可用性的基础。 **3.2 系统需求** 为了顺利部署Oracle RAC...
### Oracle 11g 数据库导出还原到 Oracle 10g 的步骤详解 #### 一、导出Oracle 11g数据至DMP文件 在进行Oracle版本之间的迁移时,通常会采用导出(Export)的方式将源数据库的数据转换为可移植的格式,再通过导入...
在Oracle 10g客户端中,它可能包含了如何配置和运行客户端的简要说明,以及可能遇到的问题和解决方案。 2. **oraociei10.dll、orannzsbb10.dll、oraocci10.dll**:这些是Oracle客户端的动态链接库文件,它们是...
Oracle 10g 是一款广泛使用的数据库管理系统,其安装、配置和卸载过程涉及多个步骤。以下是关于Oracle 10g安装配置卸载的具体知识点: 1. **安装启动**: - 光盘启动:首先将Oracle 10g的安装光盘放入光驱,系统会...
### PowerBuilder 9 连接 Oracle 10g 的说明(免安装 Oracle 客户端) 在企业级应用开发中,PowerBuilder 和 Oracle 数据库是非常常见的组合。PowerBuilder 是一款非常强大的快速应用开发工具,而 Oracle 数据库则...
总的来说,Oracle 10g配置ODBC时遇到的“an unsupported operation was attempted”错误,可以通过应用特定的补丁来解决。在安装补丁后,进行必要的验证和调整,以确保数据库连接的正常运作。对于IT专业人员来说,...
2. **配置本地网络服务名**:使用`tnsname.ora`配置文件来定义服务名。在`%ORACLE_HOME%\network\admin`目录下,打开或编辑`tnsname.ora`,添加新的服务名条目。服务名格式如下: ``` [服务名] = (DESCRIPTION ...