sqlnet.ora 配置(Linux 平台)

1.SQLNET.AUTHENTICATION_SERVICES

场景1 : 没有配置 AUTHENTICATION_SERVICES 或 注释掉 AUTHENTICATION_SERVICES
此场景下 -> 无密、错密、正确密码都可以登录sysdba
[oracle@XAG193 admin]$ cat sqlnet.ora 
#SQLNET.AUTHENTICATION_SERVICES =(none)

[oracle@XAG193 admin]$ sqlplus / as sysdba
[oracle@XAG193 admin]$ sqlplus sys/error_pass as sysdba
[oracle@XAG193 admin]$ sqlplus sys/123456 as sysdba        --正确密码

场景2:(none) or (nts)   此场景下 -> 需要验证oracle的用户密码
------------------------------------------------------------------------------------
[oracle@XAG193 admin]$ sqlplus / as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied

[oracle@XAG193 admin]$ sqlplus sys/error_pass as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied

[oracle@XAG193 admin]$ sqlplus sys/123456 as sysdba
------------------------------------------------------------------------------------

场景3:(all)    -- 同场景1 未配置时
  1. NAMES.DIRECTORY_PATH
[oracle@XAG193 admin]$ cat tnsnames.ora 
------------------------------------------------------------------------------------
MYCDB2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = XAG193)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MYCDB)
    )
  )

LISTENER_MYCDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = XAG193)(PORT = 1521))

------------------------------------------------------------------------------------

场景1 : (TNSNAMES)
那么客户端就只会从tnsnames.ora查找你要连接的字符串(db_alias)记录,
如果tnsname.ora文件中没有此记录,则连接不上数据库。
[oracle@XAG193 admin]$ cat sqlnet.ora 
SQLNET.AUTHENTICATION_SERVICES = (none)
NAMES.DIRECTORY_PATH = (TNSNAMES)

[oracle@XAG193 admin]$ sqlplus C##XAG/xag123@MYCDB2

场景2:(EZCONNECT)
就是说可以不用在tnsnames.ora文件去查询db_alias就可以通过Service Name进行数据库的连接
[oracle@XAG193 admin]$ sqlplus C##XAG/xag123@XAG193:1521/MYCDB
[oracle@XAG193 admin]$ sqlplus C##XAG/xag123@XAG193:1521/MYPDB
[oracle@XAG193 admin]$ sqlplus C##XAG/xag123@MYCDB2
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified


场景3:(TNSNAMES,EZCONNECT)
[oracle@XAG193 admin]$ cat sqlnet.ora 
SQLNET.AUTHENTICATION_SERVICES = (none)
NAMES.DIRECTORY_PATH = (TNSNAMES,EZCONNECT)

[oracle@XAG193 admin]$ sqlplus C##XAG/xag123@MYCDB2
[oracle@XAG193 admin]$ sqlplus C##XAG/xag123@XAG193:1521/MYCDB
[oracle@XAG193 admin]$ sqlplus C##XAG/xag123@XAG193:1521/MYPDB

3.SQLNET.EXPIRE_TIME (单位分钟)

DCD: Dead Connection Detection ,可以用于检测、标记僵死而没有断开会session,
再由PMON进行清理,释放资源。开启DCD,只需要在服务端的sqlnet.ora文件中
添加SQLNET.EXPIRE_TIME参数,单位为分钟。如果时间达到这个值,server端就
是发出一个”probe” packet 给客户端,如要客户断是正常的,这个packet就被忽略,
timer重新计时;如果客户端异常中断,则server端就会收到一个消息,用以释放连接。

DCD还可以用于防止防火墙的timeout,由于防火墙设置timeout原因,当client和server在timeout时间内
没有数据传输的时候,会话就会被防火墙断开。而设置SQLNET.EXPIRE_TIME参数,使其小于防火墙
的timeout时间,就可以避免这一情况的发生
——————————————————————————————
ORA-03135: connection lost contact.
——————————————————————————————
某B/S架构的应用程序在测试过程中每隔1到2小时出现“错误信息:ORA-03135: 连接失去联系的报错”,
详细报错信息如下:
ORA-03135出现的原因较多,问题有可能出在网络设备、操作系统、数据库上,
问题最有可能是由于网络闪段和防火墙配置所导致。

测试案例: SQLNET.EXPIRE_TIME=1   (本次是为测试方便,正常应该配置10分钟左右)
[oracle@XAG193 admin]$ cat sqlnet.ora 
SQLNET.AUTHENTICATION_SERVICES = (none)
NAMES.DIRECTORY_PATH = (TNSNAMES,EZCONNECT)
SQLNET.EXPIRE_TIME=1

#客户端
D:\Tools\sqlcl\bin>sql C##XAG/xag123@MYCDB2       ---MYCDB2 为客户端tnsnames.ora 中配置的别名       
or 
D:\Tools\sqlcl\bin>sql C##XAG/xag123@192.168.40.193:1521/MYPDB
or
D:\Tools\sqlcl\bin>sql /nolog
SQL> CONN C##XAG/xag123@192.168.40.193:1521/MYPDB
OR
SQL> CONN C##XAG/xag123@//192.168.40.193:1521/MYPDB

#服务端(查到 192.168.40.1 客户端有连接到服务器端)
[root@XAG193 ~]# netstat -pan | grep 192.168.40.193:1521 
tcp        0      0 192.168.40.193:33741    192.168.40.193:1521     ESTABLISHED 1651/ora_lreg_MYCDB 
tcp6       0      0 192.168.40.193:1521     192.168.40.193:33741    ESTABLISHED 1565/tnslsnr        
tcp6       0      0 192.168.40.193:1521     192.168.40.1:62171      ESTABLISHED 3631/oracleMYCDB 

[root@XAG193 ~]# tcpdump -i ens33 -nnn host 192.168.40.1 and port 1521
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
-------------------------------------------------------------------------------------------------------------------------
01:44:11.882228 IP 192.168.40.193.1521 > 192.168.40.1.62171: Flags [.], ack 1131350432, win 353, length 0
01:44:11.882496 IP 192.168.40.1.62171 > 192.168.40.193.1521: Flags [.], ack 1, win 4105, length 0

01:45:12.042737 IP 192.168.40.193.1521 > 192.168.40.1.62171: Flags [.], ack 1, win 353, length 0
01:45:12.043181 IP 192.168.40.1.62171 > 192.168.40.193.1521: Flags [.], ack 1, win 4105, length 0

01:46:12.203380 IP 192.168.40.193.1521 > 192.168.40.1.62171: Flags [.], ack 1, win 353, length 0
01:46:12.204089 IP 192.168.40.1.62171 > 192.168.40.193.1521: Flags [.], ack 1, win 4105, length 0

可以看到每隔1分钟,服务端向客户端发起连接,检测客户端是否存在(客户端一直有ack应答,则表示客户端正常)

4.SQLNET.INBOUND_CONNECT_TIMEOUT (单位秒)

它表示等待用户认证超时的时间,单位是秒,缺省值是60秒,如果用户认证超时了,
alert.log显示出错信息"WARNING: inbound connection timed out (ORA-3136)",
sqlnet.log里面出现TNS-12535: TNS:operation timed out错误信息。

[oracle@XAG193 admin]$ cat sqlnet.ora 
SQLNET.AUTHENTICATION_SERVICES = (none)
NAMES.DIRECTORY_PATH = (TNSNAMES,EZCONNECT)
SQLNET.EXPIRE_TIME=1
SQLNET.INBOUND_CONNECT_TIMEOUT=10

#客户端用错误密码登录,如下监控日志

[oracle@XAG193 trace]$ tail -20f /u01/app/oracle/diag/rdbms/mycdb/MYCDB/trace/alert_MYCDB.log 
***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for Linux: Version 19.0.0.0.0 - Production
    Oracle Bequeath NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
    TCP/IP NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
  Version 19.3.0.0.0
  Time: 10-JAN-2021 23:13:38
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    
TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.40.1)(PORT=50359))
2021-01-10T23:13:38.159872+08:00
WARNING: inbound connection timed out (ORA-3136)

  1. LOG_FILE_SERVER
[oracle@XAG193 admin]$ cat sqlnet.ora 
SQLNET.AUTHENTICATION_SERVICES = (none)
NAMES.DIRECTORY_PATH = (TNSNAMES,EZCONNECT)
SQLNET.EXPIRE_TIME=1
SQLNET.INBOUND_CONNECT_TIMEOUT=10

DIAG_ADR_ENABLED=off
LOG_DIRECTORY_SERVER=$ORACLE_HOME/network/log
LOG_FILE_SERVER=sqlnet_server.log
LOG_DIRECTORY_CLIENT=$ORACLE_HOME/network/log
LOG_FILE_CLIENT=sqlnet_client.log
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容