初识oracle 11g sqlnet.ora

背景:

      前几个月前,在某客户出差,由于对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  (此为默认值)

Values
  • 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/

你可能感兴趣的:(初识oracle 11g sqlnet.ora)