sqlnet.tnsaname.lister

合集下载

sqlnet.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文件还可以配置一些其他参数,比如连接重试次数、连接超时时间、日志记录级别等。

linux上的sqlnet.ora限制IP访问

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院子网络的配置。

协议适配器错误的问题

协议适配器错误的问题

协议适配器错误的问题今天遭遇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 主机名。

sqlnet.expire_time参数

sqlnet.expire_time参数

一、什么是sqlnet.expire_time参数SQLNET.EXPIRE_TIME参数是Oracle数据库中的一个参数,它用来指定在数据库连接闲置一段时间后自动断开连接的时间。

通过设置这个参数,可以防止长时间闲置的数据库连接占用资源,提高数据库的性能和稳定性。

二、SQLNET.EXPIRE_TIME参数的作用1. 防止长时间闲置的数据库连接占用资源。

当客户端和数据库服务器之间的连接长时间闲置时,会造成数据库资源的浪费。

通过设置SQLNET.EXPIRE_TIME参数,可以在一定时间内没有收到客户端的请求时自动断开连接,释放资源。

2. 提高数据库的性能和稳定性。

长时间的数据库连接闲置不仅会占用服务器资源,还可能导致数据库出现性能问题和不稳定的情况。

通过设置SQLNET.EXPIRE_TIME参数,可以减少这种情况的发生,提高数据库的性能和稳定性。

三、SQLNET.EXPIRE_TIME参数的设置方法在Oracle数据库中,可以通过修改sqlnet.ora文件中的SQLNET.EXPIRE_TIME参数来设置连接的闲置时间。

具体的设置方法如下:1. 打开sqlnet.ora文件,通常存放在$ORACLE_HOME/network/admin目录下。

2. 找到SQLNET.EXPIRE_TIME参数,并设置合适的数值,单位为分钟。

SQLNET.EXPIRE_TIME=10表示在10分钟内没有收到客户端的请求时自动断开连接。

3. 保存sqlnet.ora文件,并重启数据库实例,使设置生效。

四、SQLNET.EXPIRE_TIME参数的注意事项在设置SQLNET.EXPIRE_TIME参数时,需要注意以下几点:1. 合理设置闲置时间。

闲置时间设置过短会导致频繁断开连接,影响用户体验;设置过长则无法达到释放资源的目的。

需要根据实际情况和业务需求进行合理设置。

2. 考虑网络状况。

在设置SQLNET.EXPIRE_TIME参数时,需要考虑实际的网络状况。

ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,帮其解决后,发现很多人遇到过这样的问题,因此写着这里。

也许你没有遇到过,原因如下:你oracle安装成功后,一直未停止数据库(即数据库是启动的),客户端配置成功后,应该一直不会有什么问题。

而一旦你和我同事一样,有时把Oracle安装在虚拟机中,而且Oracle安装完毕后,没在进行任何监听的配置,则虚拟机再启动,则就会出现ORA-12514的问题。

如下图TNS 监听程序当前无法识别连接描述符中请求服务的解决方法" name=image_operate_32961295504739984 alt="ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务的解决方法" src="/middle/5007d1b1g9a40c1c8ebf6&69 0" width=378 height=106>如下是解决思路:根据出错信息判断出客户端未监听到实例服务名1、通过重启服务的方式启动数据库,再次连接仍无法连接服务器。

2、既然第一种方法不能解决问题,那就第二种方法。

考虑监听listener.ora监听配置文件listener.ora中可以不必指定监听的服务名(安装Oracle10g后也是没有指定的)。

正常情况下一般只要数据库启动,客户端连接数据库也没有什么问题,但是有时重复启动关闭也会出现ORA-12514错误。

既然listener.ora中没有指定监听,我们可以在listener.ora 文件中指定监听的实例名,这样该问题应该可以连接。

步骤如下:在oracle服务器Oracle安装目录(我的在E:\Oracle10g下,每个人的不一样,根据自己的情况查找)Network/admin目录下找到listener.ora 我的如下图所示# listener.ora Network Configuration File: E:\Oracle10g\network\admin\listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = E:\Oracle10g)(PROGRAM = extproc))(SID_DESC =(GLOBAL_DBNAME = ORCL)(ORACLE_HOME = E:\Oracle10g)(SID_NAME = ORCL)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = onest)(PORT = 1521))))标红的为我添加的部分,ORCL为监听的实例名。

plsql配置tnsnames.ora的实现方法

plsql配置tnsnames.ora的实现方法

plsql配置tnsnames.ora的实现⽅法
我存在的问题是,使⽤plsql连接⼀个公司的数据库,连接不成,我再⽹上搜的资料说需要修改tnsnames.ora⽂件,接下来我具体说下如何进⾏配置
⾸先我在oracle客户端⾥找到这个⽂件,我看⽹上教程说需要新创建network,ADMIN和trsnames.ora⽂件,但是我在⾃⼰的客户端⾥⾯找见了,具体原因我也不清楚,就看⾃⼰了
⼀定是在oracle客户端,⽽不是plsql安装⽬录
打开⽂件所⽰
在你的⽂件中加⼊以下⼀段代码
test-name =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.8.199.144)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = intdbnew)
)
)
其中下⾯的的 test-name改成你想在登录显⽰框选择看到的名字
HOST改成你想连到的数据库的 IP
PORT端⼝号,1521就不需要改了
SERVICE_NAME 是指定的数据库
配置好的话就会显⽰出 test-name
好了,这样就可以登录了
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

sqlnet.ora配置详解

sqlnet.ora配置详解

用在oracleclient端,用于配置连接服务端oracle的相关参数。

1).:域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"示例:.=在客户端执行命令:sqlplususername/password@local_dev的时候,会出现如下错误信息:"ORA-12154:TNS:无法处理服务名"或者"ORA-12154:TNS:couldnotresolveservicename"这样的错误信息。

因为sqlplususername/password@orcl的时候,将tns别名“orcl”转换成了“”,所以在中找不到,就报错了。

修改中的定义如下:=(DESCRIPTION=(ADDRESS_LIST=)(CONNECT_DATA=(SERVICE_NAME=orcl)))再执行sqlplususername/password@orcl连接成功。

2):定义了在客户端连接数据库时,采用什么样的匹配方式。

示例:=(TNSNAMES,ONAMES,HOSTNAME)那么在客户端执行sqlplususername/password@local_dev连接数据库的时,首先采用的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。

ONAMES表示Oracle使用自己的名称服务器(OracleNameServer)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;HOSTNAME表示使用host文件,DNS,NIS等来解析;3):定义登录数据库的认证方式,这个参数默认没有设置。

示例:=(NONE,NTS)NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用,先后顺序表明验证的优先方式。

4)=yes:表示启用客户端的IP检查,非法的IP将被拒绝访问Oracle。

sqlnetora配置详解

sqlnetora配置详解

一、用在oracle client端,用于配置连接服务端oracle的相关参数。

1).:域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"示例:.=在客户端执行命令:sqlplus username/password@local_dev的时候,会出现如下错误信息:"ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。

因为sqlplus username/password@orcl的时候,将tns别名“orcl”转换成了“”,所以在中找不到,就报错了。

修改中的定义如下:=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))再执行sqlplus username/password@orcl连接成功。

2):定义了在客户端连接数据库时,采用什么样的匹配方式。

示例:= (TNSNAMES, ONAMES, HOSTNAME)那么在客户端执行sqlplus username/password@local_dev连接数据库的时,首先采用的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。

ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;HOSTNAME表示使用host文件,DNS,NIS等来解析;3):定义登录数据库的认证方式,这个参数默认没有设置。

示例:=(NONE,NTS)NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用,先后顺序表明验证的优先方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle网络配置三个配置文件listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME\network\admin目录下。

1. 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等并不常用。

2. Tnsnames.ora------这个文件类似于unix 的hosts文件,提供的tnsname 到主机名或者ip的对应,只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。

PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。

HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。

在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。

需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping 通数据库侦听所在的机器的机器名,否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析。

PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora 文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。

此处Port的值一定要与数据库侦听正在侦听的端口一样。

SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令察看。

ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接#你所要连接的时候输入得TNSNAMEORCL =(DESCRIPTION =(ADDRESS_LIST =#下面是这个TNSNAME对应的主机,端口,协议(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节(SERVER = DEDICATED)#对应service_name,SQLPLUS>;show parameter service_name; 进行查看(SERVICE_NAME = orcl)))#下面这个类似SALES =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = sales)))注意:如果数据库服务器用MTS,客户端程序需要用database link时最好明确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLE BUG。

一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000。

3. listener.ora------listener监听器进程的配置文件关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。

所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。

Listener.ora文件的例子#listener.ora Network Configuration File:#E:\oracle\product\10.1.0\Db_2\NETWORK\ADMIN\listener.ora# Generated by Oracle configuration tools.#下面定义LISTENER进程为哪个实例提供服务这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME 其中GLOBAL_DBNAME不是必需的除非#使用HOSTNAME做数据库连接SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = boway)(ORACLE_HOME = E:\oracle\product\10.1.0\Db_2)(SID_NAME = ORCL)))#监听器的名字,一台数据库可以有不止一个监听器#再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使#用的是主机名LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521)))上面的例子是一个最简单的例子,但也是最普遍的。

一个listener进程为一个instance(SID)提供服务。

监听器的操作命令$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状态。

init.ora中的Remote_Login_Passwordfile对身份验证的影响三个可选值:NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限EXCLUSIVE:1.表示只有一个数据库实例可以使用密码文件2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户SHARED:1.表示可以有多个数据库实例可以使用密码文件2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE当登录用户不是ORA_DBA组和ORA_OPER组成员时,登录数据库需要在Oracle中创建当前操作系统用户相同的用户名,如果当前用户是域用户,则名称为:domainname\yourname,如果是本地计算机用户,则名称为:computername\yourname创建方法:create "domainname\yourname" identified externally;操作系统,修改HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下面添加AUTH_PREFIX_DOMAIN,值设为FALSE,在创建Oracle用户时可以忽略掉域名这种方式下,init.ora中有一个参数将影响数据库如何匹配一个windows 用户和Oracle用户os_authent_prefix = ""缺省为空,Oracle8i以前,无该参数,而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)关于域名(主机名)解析/etc/hosts (UNIX)或者windows\hosts(WIN98) winnt\system32\drivers\etc\hosts (WIN2000) 客户端需要写入数据库服务器IP地址和主机名的对应关系。

127.0.0.1 localhost192.168.0.35 oracledb oracledb192.168.0.45 tomcat tomcat202.84.10.193 bj_db bj_db有些时候我们配置好第一步后,tnsping 数据库服务器别名显示是成功的,但是sqlplus username/password@servicename不通,jdbc thin link 也不通的时候,一定不要忘了在客户端做这一步,原因可能是DNS服务器里没有设置这个服务器IP地址和主机名的对应关系。

相关文档
最新文档