(完整)Listener.ora、sqlnet.ora、tnsnames.ora三个配置文件区别
sqlnet.ora参数

sqlnet.ora参数sqlnet.ora文件是Oracle数据库中的一个配置文件,它用于配置SQLNet(或者称为Net8)参数,这些参数控制了Oracle客户端和服务器之间的网络通信。
在sqlnet.ora文件中,可以配置各种参数来优化网络通信的性能、安全性和可靠性。
一些常见的sqlnet.ora参数包括:1. SQLNET.AUTHENTICATION_SERVICES,这个参数指定了客户端和服务器之间的身份验证服务。
可以设置为多个值,包括NONE(不进行身份验证)、NTS(使用Windows本地身份验证服务)和KERBEROS5(使用Kerberos身份验证)等。
2. SQLNET.ENCRYPTION_TYPES_CLIENT和SQLNET.ENCRYPTION_TYPES_SERVER,这两个参数分别指定了客户端和服务器之间用于加密通信的加密算法。
可以配置为多种加密算法,比如AES256、3DES168等。
3. SQLNET.CRYPTO_CHECKSUM_CLIENT和SQLNET.CRYPTO_CHECKSUM_SERVER,这两个参数用于指定客户端和服务器之间用于数据完整性检查的校验和算法。
常见的取值包括SHA1、MD5等。
4. SQLNET.EXPIRE_TIME,这个参数指定了在服务器端检测客户端连接是否处于活动状态的时间间隔。
当客户端在指定的时间内没有发送任何数据包时,服务器会关闭连接。
5. SQLNET.INBOUND_CONNECT_TIMEOUT和SQLNET.OUTBOUND_CONNECT_TIMEOUT,这两个参数分别指定了服务器端和客户端连接的超时时间,用于限制连接建立的最大时间。
6. SQLNET.ALLOWED_LOGON_VERSION_SERVER,这个参数用于指定服务器允许的客户端密码验证协议的版本。
可以配置为11、12等值。
除了上述参数外,sqlnet.ora文件还可以配置一些其他参数,比如连接重试次数、连接超时时间、日志记录级别等。
协议适配器错误的问题

协议适配器错误的问题今天遭遇ORA-12560: : 协议适配器错误的问题,经过⼀番努⼒问题已经解决,与⼤家共享。
造成ORA-12560: : 协议适配器错误的问题的原因有三个:1.监听服务没有起起来。
windows平台个⼀如下操作:开始---程序---管理⼯具---服务,打开服务⾯板,启动home92listener服务。
2.database instance没有起起来。
windows平台如下操作:开始---程序---管理⼯具---服务,打开服务⾯板,启动serviceXXXX,XXXX就是你的database .3.注册表问题。
regedit,然后进⼊HKEY_LOCAL_MACHINE\SOFTWARE\\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database .或者右⼏,属性--⾼级--环境变量---系统变量--,变量名=oracle_,变量值=XXXX,XXXX就是你的database SID.或者进⼊sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.经过以上步骤,就可以解决问题。
22222222222222222222我们知道oracle客户端连接时涉及⽤到的⼏个配置⽂件有:sqlnet.ora、tnsnames.ora、listener.ora。
其中sqlnet.ora和tnsnames.ora是在客户端的配置⽂件,listener.ora则是在服务器端的监听配置⽂件。
想要顺利的连接上服务器端,⾸先要确保两者之间的⽹络通畅。
其⼆在服务器上配置好监听程序。
其三是客户端配置好相应的tnsnames.ora。
在配置服务器端监听程序时要注意⼏点: 1、在服务器上的/etc/hosts⽂件中需要有127.0.0.1 localhost 这⼀条.默认情况下是有的。
若没有则在启动监听器是会报TNS-12537:TNS:connection closed的错误.同时最好添加上你的服务器IP 主机名。
配置listener.ora和tnsnames.ora

服务器上包含多个库时,listener.ora和tnsnames.ora的配置收藏1.配置内容:1).listener.oraSID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\oracle\product\10.1.0\Db_1)(PROGRAM = extproc))(SID_DESC =(SID_NAME = orcl)(ORACLE_HOME = D:\oracle\product\10.1.0\Db_1)(global_dbname = orcl))(SID_DESC =(SID_NAME = PRACTICE)(ORACLE_HOME = D:\oracle\product\10.1.0\Db_1)(global_dbname = PRACTICE))(SID_DESC =(SID_NAME = RCA T)(ORACLE_HOME = D:\oracle\product\10.1.0\Db_1)(global_dbname = RCA T)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = doone.pan)(PORT = 1521)) )))2).tnsnames.oraorcl =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = doone)(PORT = 1521))(CONNECT_DA TA =(SERVER = DEDICA TED)(SERVICE_NAME = orcl)))rcat =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = doone)(PORT = 1521))(CONNECT_DA TA =(SERVER = DEDICA TED)(SERVICE_NAME = rcat)))PRACTICE =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = doone)(PORT = 1521))(CONNECT_DA TA =(SERVER = DEDICA TED)(SERVICE_NAME = PRACTICE)))EXTPROC_CONNECTION_DA TA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)))(CONNECT_DA TA =(SID = PLSExtProc)(PRESENTA TION = RO)))2.说明1).连接时可以用conn user/pwd@orcl,conn user/pwd@ract,conn user/pwd@practice2).多库时,不配置上面两文件,可能出现的问题.a.conn user/pwd 如果直接用这样连接,默认连到最后建的那库上b.ORA-01041: internal error. hostdef extension doesn't exist.出现这原因,一般是tns没配置对应库说明.导致库关闭后,重启出现问题c.ORA-12170: TNS:Connect timeout occurred出现这错误,一般是listener.ora没配置对应库说明d.ORA-12514: TNS:listener does not currently know of service requested in connect descriptor出现这错误,一般是listener.ora没配置对应库说明。
oracle监听配置文件详解

1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(divSENTATION = http://admin)
)
)
EXTPROC_CONNECTION_DATA.LOCALDOMAIN =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
(SID_NAME = oid)
)
)
& 说明
1 listener.ora 文件中定义一个监听器 其缺省的名称为 LISTENER
这个监听器缺省以tcp/ip为协议地址且端口号为1521运行 在CAMS应用中
监听文件定义的监听器就使用这个缺省名字 并且使用缺省的协议 tcp/ip
即监听配置文件 在本小节说明 另两个文件分别在随后的两个小节说明
监听配置文件 listener.ora 的存放路径为 $ORACLE_HOME/network/admin
以下是一个示例
LISTENER = #监听器名称
器的服务 即为哪些数据库实例提供监听服务 以 cams 实例为例 其对应的
服务信息为
(SID_DESC =
(GLOBAL_DBNAME = cams) #数据库名
(ORACLE_HOME = /u01/app/oracle/product/8.1.7)
(SID_NAME = cams) #数据库实例名
(PORT = 2481))
sqlnet.ora配置详解

一、sqlnet.orasqlnet.ora用在oracle client端,用于配置连接服务端oracle的相关参数。
1).NAMES.DEFAULT_DOMAIN:域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"示例:.NAMES.DEFAULT_DOMAIN=.com在客户端执行命令:sqlplus username/password@local_dev的时候,会出现如下错误信息:"ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。
因为sqlplus username/password@orcl的时候,将tns别名“orcl”转换成了“”,所以在tnsnames.ora中找不到,就报错了。
修改tnsnames.ora中的定义如下: =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.147)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))再执行sqlplus username/password@orcl连接成功。
2)NAMES.DIRECTORY_PATH:定义了在客户端连接数据库时,采用什么样的匹配方式。
示例:NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)那么在客户端执行sqlplus username/password@local_dev连接数据库的时,首先采用tnsnames.ora的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。
linux上的sqlnet.ora限制IP访问

配置sqlnet.ora限制IP访问Oracle与防火墙类似的功能,Oracle 提供限制与允许特定的IP或主机名通过Oracle Net来访问数据库。
这个功能由sqlnet.ora配置文件来实现。
该文件通常$ORACLE_HOME/network/admin/ 目录下,与tnsnames.ora以及listener.ora位于同一路径。
用法也比较简单。
通过监听器的限制,实现轻量级访问限制,比在数据库内部通过触发器进行限制效率要高。
1. 实现通过在sqlnet.ora文件中增加下列记录来实现tcp.validnode_checking = yestcp.invited_nodes = (hostname1, hostname2,ip1,ip2)tcp.excluded_nodes = (10.103.11.17,hostname1,hostname2)当使用invited_nodes时,则所有没有包含在invited_nodes值中的IP或主机将无法通过Oracel Net连接到数据库。
而如果使用excluded_nodes时,除了excluded_nodes值中列出的IP和主机不可访问之外,其余的节点都可以访问数据库。
通常情况下,更倾向于使用excluded_nodes参数。
2. 注意使用excluded_nodes与invited_nodes的一些特性不支持通配符的使用(如hostname不能写为svhs0*,IP地址不能写为10.103.11.*)excluded_nodes与invited_nodes为互斥方式,要么使用前者,要么使用后者如果tcp.invited_nodes与tcp.excluded_nodes都存在,则tcp.invited_nodes优先要将本地地址,或者Cluster群集其他节点的地址都加入到允许列表,否则监听器可能无法启动修改之后,一定要重起监听或reload才能生效,而不需要重新启动数据库仅提供对TCP/IP协议的支持3. 实战-->使用tnsping demo92,连接正常C:\>tnsping demo92TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on25-JUN-2011 18:55:39Copyright (c) 1997, 2010, Oracle. All rights reserved.Used parameter files:d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlne t.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.209)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))OK (0 msec)-->查看配置文件[oracle@test admin]$ more sqlnet.ora# SQLNET.ORA Network Configuration File:/oracle/92/network/admin/sqlnet.ora# Generated by Oracle configuration tools.NAMES.DIRECTORY_PATH= (ONAMES, TNSNAMES, HOSTNAME)#Added by Robinsontcp.validnode_checking = yestcp.excluded_nodes = (10.103.11.17)-->重新reload[oracle@test admin]$ lsnrctl reload listener_demo92LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 10:03:11Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) The command completed successfully-->再次tnsping时,收到TNS-12547错误C:\>tnsping demo92TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 25-JUN-2011 19:01:21Copyright (c) 1997, 2010, Oracle. All rights reserved.Used parameter files:d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlne t.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.209)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))TNS-12547: TNS:lost contact-->下面的演示中如果excluded_nodes与invited_nodes都存在,则invited_nodes 优先,不再演示[oracle@test admin]$ more sqlnet.ora# SQLNET.ORA Network Configuration File:/oracle/92/network/admin/sqlnet.ora# Generated by Oracle configuration tools.NAMES.DIRECTORY_PATH= (ONAMES, TNSNAMES, HOSTNAME)#Added by Robinsontcp.validnode_checking = yestcp.excluded_nodes = (10.103.11.17)tcp.invited_nodes = (10.103.11.17)4.使用触发器限制单用户或IP段-->限制单用户从单IP登录,下面限制scott用户从客户端的登录CREATE OR REPLACE TRIGGER disableloginAFTER logon ON scott.schema -->注意使用方式为username.schemaDECLAREipaddr VARCHAR2(30);BEGINSELECT sys_context('userenv', 'ip_address')INTO ipaddrFROM dual;IF ipaddr = '10.103.11.17' THENraise_application_error('-20001','You can not login,Please contact administrator');END IF;END disablelogin;/-->限制IP段登录CREATE OR REPLACE TRIGGER chk_ip_rangeAFTER logon ON scott.schemaDECLAREipaddr VARCHAR2(30);BEGINSELECT sys_context('userenv', 'ip_address')INTO ipaddrFROM dual;IF ipaddr LIKE ('10.103.11.%') THENraise_application_error('-20001','You can not login,Please contact administrator');END IF;END chk_ip_range;/5.更多参考/reference/net_services.html/forums/thread.jspa?messageID=45664496.快捷参考有关性能优化请参考Oracle硬解析与软解析共享池的调整与优化(Sharedpool Tuning)Buffercache 的调整与优化(一)Oracle表缓存(cachingtable)的使用有关ORACLE体系结构请参考Oracle表空间与数据文件Oracle密码文件Oracle参数文件Oracle联机重做日志文件(ONLINE LOG FILE)Oracle控制文件(CONTROLFILE)Oracle归档日志Oracle回滚(ROLLBACK)和撤销(UNDO)Oracle数据库实例启动关闭过程Oracle10g SGA 的自动化管理Oracle实例和Oracle数据库(Oracle体系结构)有关闪回特性请参考Oracle闪回特性(FLASHBACK DATABASE)Oracle闪回特性(FLASHBACK DROP & RECYCLEBIN)Oracle闪回特性(Flashback Query、FlashbackTable)Oracle闪回特性(Flashback Version、Flashback Transaction)有关基于用户管理的备份和备份恢复的概念请参考Oracle冷备份Oracle热备份Oracle备份恢复概念Oracle实例恢复Oracle基于用户管理恢复的处理(详细描述了介质恢复及其处理) SYSTEM表空间管理及备份恢复SYSAUX表空间管理及恢复有关RMAN的备份恢复与管理请参考RMAN 概述及其体系结构RMAN 配置、监控与管理RMAN 备份详解RMAN 还原与恢复RMANcatalog 的创建和使用基于catalog 创建RMAN存储脚本基于catalog 的RMAN 备份与恢复使用RMAN迁移文件系统数据库到ASMRMAN 备份路径困惑(使用plus archivelog时)有关ORACLE故障请参考ORA-32004的错误处理ORA-01658错误CRS-0215错误处理ORA-00119,ORA-00132 错误处理又一例SPFILE设置错误导致数据库无法启动对参数FAST_START_MTTR_TARGET= 0 的误解及设定SPFILE错误导致数据库无法启动(ORA-01565)有关ASM请参考创建ASM实例及ASM数据库ASM 磁盘、目录的管理使用ASMCMD 工具管理ASM目录及文件有关SQL/PLSQL请参考SQLPlus常用命令替代变量与SQL*Plus环境设置使用Uniread实现SQLplus翻页功能SQL 基础-->SELECT 查询SQL 基础--> NEW_VALUE的使用SQL 基础--> 集合运算(UNION与UNION ALL)SQL 基础--> 常用函数SQL 基础--> 视图(CREATEVIEW)SQL 基础--> 创建和管理表SQL 基础--> 多表查询SQL 基础--> 过滤和排序SQL 基础--> 子查询SQL 基础--> 分组与分组函数SQL 基础--> 层次化查询(STARTBY ... CONNECT BY PRIOR) SQL 基础--> ROLLUP与CUBE运算符实现数据汇总PL/SQL--> 游标PL/SQL--> 异常处理(Exception)PL/SQL--> 语言基础PL/SQL--> 流程控制PL/SQL--> PL/SQL记录PL/SQL--> 包的创建与管理PL/SQL--> 隐式游标(SQL%FOUND)PL/SQL--> 包重载、初始化PL/SQL--> DBMS_DDL包的使用PL/SQL--> DML 触发器PL/SQL--> INSTEAD OF 触发器PL/SQL--> 存储过程PL/SQL--> 函数PL/SQL--> 动态SQLPL/SQL--> 动态SQL的常见错误有关ORACLE其它特性Oracle常用目录结构(10g)使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING) 表段、索引段上的LOGGING与NOLOGGINGOralceOMF 功能详解Oracle用户、对象权限、系统权限Oracle角色、配置文件Oracle分区表Oracle外部表使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)簇表及簇表管理(Index clustered tables)数据泵EXPDP 导出工具的使用数据泵IMPDP 导入工具的使用导入导出Oracle 分区表数据SQL*Loader使用方法启用用户进程跟踪配置非默认端口的动态服务注册配置ORACLE 客户端连接到数据库systemsys,sysoper sysdba 的区别ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAMEOracle补丁全集(Oracle 9i 10g 11g Path)Oracle10.2.0.1 升级到10.2.0.4Oracle彻底kill session院子网络的配置。
oracle_listener_详解

Oracle监听-提纲o ORACLE工作机制o ORACLE监听参数o ORACLE监听功能o ORACLE监听配置o ORACLE网络构架o ORACLE精简版构造o ORACLE常见问题ORACLE工作机制o从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址),那么这个请求都会通过DNS服务器或HOST文件的服务名解析然后传送到ORACLE监听进程,监听进程接收到用户请求后会采取两种方式来处理这个用户请求o下面我们分专用服务器和共享服务器分别采用这两种方式时的情况来讲专用服务器模式o一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,也就是说新建的服务器进程继承了监听进程的信息,然后服务器进程给用户进程发一个RESEND包,通知用户进程可以开始给它发信息了,用户进程给这个新建的服务器进程发一个CONNECT包,服务器进程再以ACCEPT包回应用户进程,致此,用户进程正式与服务器进程确定连接。
我们把这种连接叫做HAND-OFF连接,也叫转换连接专用服务器模式o另一种方式是监听进程接收到用户进程的请求后产生一个新的专用服务器进程,这个服务器进程选用一个TCP/IP端口来控制与用户进程的交互,然后将此信息回传给监听进程,监听进程再将此信息传给用户进程,用户进程使用这个端口给服务器进程发送一个CONNECT包,服务器进程再给用户进程发送一个ACCEPT包,致此,用户进程可以正式向服务器进程发送信息了。
这种方式我们叫做重定向连接。
专用服务器模式o另HAND-OFF连接需要系统平台具有进程继承的能力,为了使WINDOWS NT/2000支持HAND-OFF必须在HKEY_LOCAL_MACHINE>SOFTWARE>ORACLE >HOMEX中设置USE_SHARED_SOCKET 。
Oracle 12c连接PDB时listener和tnsnames.ora配置

Oracle 12c连接PDB时,listener和tnsnames.ora配置1、配置监听首先要明确,所有的PDB都使用1个监听,配置多个实际上启动时也只有第1个有意义。
LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c_A)(PORT = 1521)) )接下来使用SID_LIST_LISTENER来进行静态注册服务。
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = ora12c) #该服务是我配置的cdb信息(SID_NAME = ora12c))(SID_DESC =(GLOBAL_DBNAME = pdborcl)#该服务是我配置的pdb信息(SID_NAME = ora12c)))ADR_BASE_LISTENER = /opt/oracle2、tnsnames.ora配置观察发现,在tnsnames中配置pdb跟CDB,即原来11g的配置完全一样。
这里SERVICE_NAME = pdborcl使用得是PDB的名字,可以在v$pdbs中查看。
ORA12C =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c_A)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = ora12c)))pdborcl =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c_A)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = pdborcl)))3、为了保险,检查下sqlnet.oraNAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)这一句是为了保证优先使用TNSNAMES解析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Listener。
ora、sqlnet。
ora、tnsnames.ora三个配置文件区别分类:Oracle2014-10—30 10:57:36Listener.ora、sqlnet.ora、tnsnames。
ora三个配置文件区别listener。
ora、sqlnet.ora、tnsnames。
ora ,都是放在$ORACLE_HOME\network\admin目录[oracle@testdb1 ~]$ cd /app/oracle/ora11g/network/admin[oracle@testdb1 admin]$ lltotal 16—rw-r—-r-—。
1 oracle oinstall 162 Oct 22 14:35 listener。
oradrwxr—xr—x. 2 oracle oinstall 4096 Jul 10 07:10 samples—rw—r-—r--。
1 oracle oinstall 381 Dec 17 2012 shrept.lst-rw-r——r—-。
1 oracle oinstall 367 Oct 22 14:33 tnsnames.ora[oracle@testdb1 admin]$三个文件的作用和使用##########################################sqlnet.ora--——-作用类似于linux或者其他unix的nsswitch。
conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,例如我们客户端输入sqlplus sys/oracle@orcl假如我的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等并不常用.#########################################Tnsnames.ora—-——--这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet。
ora 中类似NAMES。
DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。
例子中有两个,ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接,一句一句说#你所要连接的时候输入得TNSNAME[oracle@testdb1 admin]$ cat tnsnames。
oratestdb1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.235)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = testdb1) #show parameter service_name;))testdb2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192。
168。
9。
236)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = testdb2) #show parameter service_name;))客户端完了我们来看服务器端listener。
ora—-———-listener监听器进程的配置文件关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。
所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
Listener。
ora文件的例子[oracle@testdb1 admin]$ cat listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192。
168。
9。
235)(PORT = 1521)) )))#监听器的名字,一台数据库可以有不止一个监听器上面的例子是一个最简单的例子,但也是最普遍的。
一个listener进程为一个instance(SID)提供服务。
多实例监听:[oracle@testdb3 admin]:testdb1> cat listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192。
168.9.235)(PORT = 1521)) ))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = testdb1)(ORACLE_HOME = /app/oracle/ora11g)(SID_NAME = testdb1))(SID_DESC =(GLOBAL_DBNAME = testdb3)(ORACLE_HOME = /app/oracle/ora11g)(SID_NAME = testdb3)))[oracle@testdb3 admin]:testdb1> cat tnsnames.oratestdb1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.235)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = testdb1)))testdb2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168。
9.236)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = testdb2)))testdb3 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192。
168。
9。
235)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = testdb3)))监听器的操作命令$ORACLE_HOME/bin/lsnrctl start,其他诸如stop,status等.具体敲完一个lsnrctl后看帮助。
上面说到的三个文件都可以通过图形的配置工具来完成配置$ORACLE_HOME/netca 向导形式的$ORACLE_HOME/netmgr本人比较习惯netmgr,profile 配置的是sqlnet.ora也就是名称解析的方式service name 配置的是tnsnames。
ora文件listeners配置的是listener。
ora文件,即监听器进程具体的配置可以尝试一下然后来看一下配置文件。
这样一来总体结构就有了,是当你输入sqlplus sys/oracle@orcl的时候1. 查询sqlnet。
ora看看名称的解析方式,发现是TNSNAME2. 则查询tnsnames。
ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name3。
如果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状态。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1。
lsnrctl status查看服务器端listener进程的状态[root@test1 ~]# su - oracle[oracle@test1 ~]$ 。
prof_testdb[oracle@test1 ~]:testdb〉 lsnrctlLSNRCTL for Linux: Version 11.2.0。
4。
0 — Production on 30—OCT—2014 10:49:38Copyright (c) 1991, 2013, Oracle。
All rights reserved.Welcome to LSNRCTL, type "help" for information。
LSNRCTL> helpThe following operations are availableAn asterisk (*) denotes a modifier or extended command:start stop statusservices version reloadsave_config trace spawnchange_password quit exitset* show*LSNRCTL> versionConnecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192。