背景:
前几个月前,在某客户出差,由于对sqlnet.ora的含义及相关参数不熟悉,导致操作花费更多时间,
最近在某客户又接触多次与此相关的问题,所以决定了解下这块知识,以免影响后期工作。
结论:
1,sqlnet.ora文件可以同时在服务器或客户端配置或仅在一处配置皆可
2,sqlnet.ora参数分为3类,分别为用于profile,用于adr,用于非adr
3,sqlnet.ora参数内容又可分为面向数据库服务器,或而向客户端或其它
4,服务端端的sqlnet.ora参数变更,必须要重启监听方可生效,切切记记
5,log前缀的参数记录的TRC文件内容会包含trace前缀生成的trc文件
6,tnsping前缀的参数记录或诊断tnsping行为产生一些故障
7,同时也要注意某些参数必须要同时配置方可生效,细节请参考官方手册(见最末引用资料)
测试:
1,sqlnet.ora文件的含义:
它可以在数据库服务器及客户端进行配置
此文件主要配置一些限制工作环境的参数
2,sqlnet.ora可以达到一些作用:
1,指定客户端域添加到不统一的名称
2,可以优先指定某些命名方法
3,控制是否开启记录日志及跟踪功能
4,指定通过特定进程路由客户端会话连接
5,为外部命名方法配置参数
6,配置高级ORACLE安全特性
7,指定或控制某些特定的通讯协议可以访问数据库
3,sqlnet.ora配置存储目录在$ORACLE_HOME/network/admin
当然也可以存放在环境变量TNS_ADMIN指定的目录下
4,sqlnet.ora里面的参数按用途分成3类:
profile参数
-
BEQUEATH_DETACH
-
DEFAULT_SDU_SIZE
-
DISABLE_OOB
-
NAMES.DEFAULT_DOMAIN
-
NAMES.DIRECTORY_PATH
-
NAMES.LDAP_AUTHENTICATE_BIND
-
NAMES.LDAP_CONN_TIMEOUT
-
NAMES.LDAP_PERSISTENT_SESSION
-
RECV_BUF_SIZE
-
SDP.PF_INET_SDP
-
SEC_USER_AUDIT_ACTION_BANNER
-
SEC_USER_UNAUTHORIZED_ACCESS_BANNER
-
SEND_BUF_SIZE
-
SQLNET.ALLOWED_LOGON_VERSION
-
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE
-
SQLNET.AUTHENTICATION_SERVICES
-
SQLNET.CLIENT_REGISTRATION
-
SQLNET.CRYPTO_CHECKSUM_CLIENT
-
SQLNET.CRYPTO_CHECKSUM_SERVER
-
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
-
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
-
SQLNET.ENCRYPTION_CLIENT
-
SQLNET.ENCRYPTION_SERVER
-
SQLNET.ENCRYPTION_TYPES_CLIENT
-
SQLNET.ENCRYPTION_TYPES_SERVER
-
SQLNET.EXPIRE_TIME
-
SQLNET.INBOUND_CONNECT_TIMEOUT
-
SQLNET.KERBEROS5_CC_NAME
-
SQLNET.KERBEROS5_CLOCKSKEW
-
SQLNET.KERBEROS5_CONF
-
SQLNET.KERBEROS5_KEYTAB
-
SQLNET.KERBEROS5_REALMS
-
SQLNET.OUTBOUND_CONNECT_TIMEOUT
-
SQLNET.RADIUS_ALTERNATE
-
SQLNET.RADIUS_ALTERNATE_PORT
-
SQLNET.RADIUS_ALTERNATE_RETRIES
-
SQLNET.RADIUS_AUTHENTICATION
-
SQLNET.RADIUS_AUTHENTICATION_INTERFACE
-
SQLNET.RADIUS_AUTHENTICATION_PORT
-
SQLNET.RADIUS_AUTHENTICATION_RETRIES
-
SQLNET.RADIUS_AUTHENTICATION_TIMEOUT
-
SQLNET.RADIUS_CHALLENGE_RESPONSE
-
SQLNET.RADIUS_SECRET
-
SQLNET.RADIUS_SEND_ACCOUNTING
-
SQLNET.RECV_TIMEOUT
-
SQLNET.SEND_TIMEOUT
-
SSL_CERT_REVOCATION
-
SSL_CERT_FILE
-
SSL_CERT_PATH
-
SSL_CIPHER_SUITES
-
SSL_CLIENT_AUTHENTICATION
-
SSL_SERVER_DN_MATCH
-
SSL_VERSION
-
TCP.CONNECT_TIMEOUT
-
TCP.EXCLUDED_NODES
-
TCP.INVITED_NODES
-
TCP.NODELAY
-
TCP.VALIDNODE_CHECKING
-
TNSPING.TRACE_DIRECTORY
-
TNSPING.TRACE_LEVEL
-
USE_CMAN
-
USE_DEDICATED_SERVER
-
WALLET_LOCATION
-
WALLET_OVERRIDE
adr参数
-
ADR_BASE
-
DIAG_ADR_ENABLED
-
TRACE_LEVEL_CLIENT
-
TRACE_LEVEL_SERVER
-
TRACE_TIMESTAMP_CLIENT
-
TRACE_TIMESTAMP_SERVER
非adr参数
-
LOG_DIRECTORY_CLIENT
-
LOG_DIRECTORY_SERVER
-
LOG_FILE_CLIENT
-
LOG_FILE_SERVER
-
TRACE_DIRECTORY_CLIENT
-
TRACE_DIRECTORY_SERVER
-
TRACE_FILE_CLIENT
-
TRACE_FILE_SERVER
-
TRACE_FILELEN_CLIENT
-
TRACE_FILELEN_SERVER
-
TRACE_FILENO_CLIENT
-
TRACE_FILENO_SERVER
-
TRACE_UNIQUE_CLIENT
5,下面我们摘录上述3类中几个参数进行测试,其它参数,到时在工作用到再具体学习
profile方面的参数
6,sqlnet.expire_time指定多久检查客户端连接是否仍然活动,如不活动,会发送一条错误信息给客户端
单位为分钟
[oracle@langfang admin]$ more sqlnet.ora
sqlnet.allowed_login_versions=11
sqlnet.expire_time=1
此参数一些注意之处:
1,如果配置此参数大于0,如果某会话因为异常中断,数据库不会让其会话一直持续打开占用资源,即会PMON清理
2,如果检查发现某此客户端会话因为异常中断,会话已经INACTIVE,则返回一个错误,并且清理这个死掉的进程
3,此参数主要用于数据库服务器,因为它要处理很多客户端连接
4,此参数一些限制
在bequeathed connections不支持此参数配置
虽然此参数影响不是很小,但是还是会影响网络性能,因为要定期发检查包到数据库服务器
和具体的操作系统也有关系,数据库服务器要区分这种网络检查包的事件和其它的事件,因此会影响网络性能
5,此参数默认值为0,建议配置为10分钟
7,tcp.connect_timeout指定客户端到数据库的TCP连接多久在即定的时间内,否则超时即会报错
ORA-12170: TNS:Connect timeout occurred
error.
此参数单位为秒,默认为60秒
[oracle@langfang admin]$ more sqlnet.ora
sqlnet.allowed_login_versions=11
sqlnet.expire_time=1
tcp.connect_timeout=1
8,tcp.excluded_nodes指定哪些客户端不能连接到数据库
此参数必须和参数validnode_checking=yes在一起才能生效
tcp.excluded_nodes=(10.0.0.6)
tcp.validnode_checking=yes
此参数语法形式为
tcp.excluded_nodes=(hostname,ip,..)
而且ip地址可以以模糊匹配方式指定,如10.2.*(代表10.2前缀所有的IP地址)
修改此参数,不能马上生效,必须重启监听方可
客户端会报错ora-12547或者ora-12537
9,tcp.invidated_nodes和上述tcp.excluded_nodes意思相反,但前者优先级高于高者
[oracle@langfang admin]$ lsnrctl
LSNRCTL> start
Starting /oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...
如果同时配置上述2个参数,监听启动会报错,但是监听进程会启动
tcp.excluded_nodes=(10.0.0.6)
tcp.validnode_checking=yes
tcp.invited_nodes=(10.0.0.6)
LSNRCTL> start
Starting /oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.3)(PORT=1521)))
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 104: Connection reset by peer
listener日志不大,可见不是监听日志文件太大导致的
[oracle@langfang log]$ ll -lh /oracle/diag/tnslsnr/langfang/listener/alert/log.xml
-rw-r-----. 1 oracle oinstall 1014K Sep 17 00:16 /oracle/diag/tnslsnr/langfang/listener/alert/log.xml
再尝试lsrnctl start启动监听,同时查看监听日志,发现数据库服务器直接拒绝本地IP的请求
type='UNKNOWN' level='16' host_id='langfang'
host_addr='10.0.0.3'>
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00516: Permission denied
Linux Error: 2: No such file or directory
type='UNKNOWN' level='16' host_id='langfang'
host_addr='10.0.0.3'>
Incoming connection from 10.0.0.3 rejected
我猜想tcp.invidated_nodes如果指定某些IP,则不属于这些IP的客户端全不能连接到数据库
所以才报上面的错误
[oracle@langfang admin]$ more sqlnet.ora
sqlnet.allowed_login_versions=11
sqlnet.expire_time=1
tcp.connect_timeout=1
#tcp.excluded_nodes=(10.0.0.6)
tcp.invited_nodes=(10.0.0.3) —相当于除了这个指定的IP,其它IP全不能连接到数据库
tcp.validnode_checking=yes
监听启动成功
[oracle@langfang admin]$ lsnrctl start
10,tnsping.trace_level
tnsping.trace_level的可取值为
-
off
for no trace output —关闭TRACE功能
-
user
for user trace information —输出用户跟踪信息
-
admin
for administration trace information —输出管理员跟踪信息
-
support
for Oracle Support Services trace information —这个最高级,输出用于提供给ORACLE支持原厂的跟踪信息
11,tnsping.trace_directory默认的TRC目录为
ORACLE_HOME/network/trace,或者你自行指定
指定tnsping行为如何产生TRC文件,二者必须同时配置方可生效
tnsping.trace_directory=/home/oracle/tns_trace
tnsping.trace_level=user
tnsping.trc文件内容暂从略
[oracle@langfang tns_trace]$ ll
total 4
-rw-r-----. 1 oracle oinstall 1720 Sep 17 00:35 tnsping.trc
与adr诊断相关的参数
12,adr一些含义:
adr始于oracle 11g,它会把每次数据库故障的一些信息写入到ADR中,它是一种机制,便于收集TRC文件及诊断分析
adr默认是开启的
如果adr启用了,在sqlnet中会忽略非adr的参数
adr默认目录在oracle_base/diag目录
13,adr_base指定adr的基目录,默认为oracle_base,如果未指定oracle_base,则为oracle_home/log
14,diag_adr_enabled指定是否开启adr,默认是on表示开启,否则为off表示关闭
15,trace_directory_client指定在客户端哪个目录生成跟踪文件
16,trace_timestamp_client,指定是否在跟踪文件中添加时间戳标识,便于区分文件,默认值为true,可取值为true及false
17,跟踪客户端到数据库的连接,用于诊断客户端连接数据库出现故障
trace_level_client=user,诊断信息的级别,默认值为off或0,可取值有4个
-
off
for no trace output —关闭TRACE功能
-
user
for user trace information —输出用户跟踪信息
-
admin
for administration trace information —输出管理员跟踪信息
-
support
for Oracle Support Services trace information —这个最高级,输出用于提供给ORACLE支持原厂的跟踪信息
18,添加上述15到17几个参数到客户端的sqlnet.ora(此文件路径为$ORACLE_HOME/NETWORK/admin)中,默认生成的跟踪文件为cli.trc
trace_level_client=user
trace_timestamp_client=true
trace_directory_client=D:\oracle\product\10.2.0\client_1\NETWORK\trace
如果添加参数
trace_timestamp_client=false
生成的TRC文件中不会包含时间戳标识
19,trace_filelen_client指定cli.trc跟踪文件的大小,单位为K,超过大小即写入新的文件
20,trace_fileno_client指定跟踪文件的前缀编号最大为多少,如产生的文件数量超过此个数,重新编号
与非adr诊断相关的参数
21,diag_adr_enabled指定是否开启adr,可取值为on或off,默认为on
22,log_directory_client指定生成的SQLNET.LOG的目录
23,log_file_client指定生成的sqlnet.log的名称,默认为sqlnet.log,也可以重指定名称
(注意:sqlnet.log只会记录不能正常连接到ORACLE数据库的客户端连接,正常连接不会记录的)
24,补充,由log_directory_clients相关参数生成的sqlnet.log会包含trace_前缀相关生成的trc跟踪文件
即前者包含后者,后者仅是针对客户端一次连接进行跟踪,而前者是把客户端所有行为记录下来
25,要跟踪数据库服务器端的sql net会话连接,diag_adr_enabled必须配置为false
参数含义和client端相同,不再复述
26,trace_level_server=user
27,trace_directory_server=/home/oracle/log_server
28,trace_file_server=server.trc
29,trace_filelen_server=1
30,trace_fileno_server=5
31,配置数据库服务端器的sqlnet.log生效(碰到一个怪问题,有时会生成sqlnet.log,有时不会记录在11.2.0.4 db)
log_directory_server指定存储sqlnet.log的目录
log_file_server指定sqlnet.log文件名
参考资料:
Oracle? Database Net Services Reference
11g Release 2 (11.2)
个人简介
8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
服务过的客户:
中国电信
中国移动
中国联通
中国电通
国家电网
四川达州商业银行
湖南老百姓大药房
山西省公安厅
中国邮政
北京302医院
河北廊坊新奥集团公司
项目经验:
中国电信3G项目AAA系统数据库部署及优化
中国联通4G数据库性能分析与优化
中国联通CRM数据库性能优化
中国移动10086电商平台数据库部署及优化
湖南老百姓大药房ERR数据库sql优化项目
四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
北京高铁信号监控系统RAC数据库部署及优化
河南宇通客车数据库性能优化
中国电信电商平台核心采购模块表模型设计及优化
中国邮政储蓄系统数据库性能优化及sql优化
北京302医院数据库迁移实施
河北廊坊新奥data guard部署及优化
山西公安厅身份证审计数据库系统故障评估
国家电网上海灾备项目4 node rac+adg
贵州移动crm及客服数据库性能优化项目
贵州移动crm及客服务数据库sql审核项目
深圳穆迪软件有限公司数据库性能优化项目
联系方式:
手机:18201115468
qq : 305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900
itpub博客名称:wisdomone1 http://blog.itpub.net/9240380/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-1802286/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-1802286/