初識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引數
adr引數
非adr引數
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的請求
<msg time='2015-09-17T00:23:49.536+08:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='langfang'
host_addr='10.0.0.3'>
<txt>TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00516: Permission denied
Linux Error: 2: No such file or directory
</txt>
</msg>
<msg time='2015-09-17T00:24:49.574+08:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='langfang'
host_addr='10.0.0.3'>
<txt>Incoming connection from 10.0.0.3 rejected
</txt>
</msg>
我猜想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資料庫效能分析與最佳化
中國聯通4G資料庫效能分析與最佳化
中國聯通CRM資料庫效能最佳化
中國移動10086電商平臺資料庫部署及最佳化
湖南老百姓大藥房ERR資料庫sql最佳化專案
四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
北京高鐵訊號監控系統RAC資料庫部署及最佳化
河南宇通客車資料庫效能最佳化
中國電信電商平臺核心採購模組表模型設計及最佳化
中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
北京302醫院資料庫遷移實施
河北廊坊新奧data guard部署及最佳化
山西公安廳身份證審計資料庫系統故障評估
國家電網上海災備專案4 node rac+adg
貴州移動crm及客服資料庫效能最佳化專案
貴州移動crm及客服務資料庫sql稽核專案
深圳穆迪軟體有限公司資料庫效能最佳化專案
貴州移動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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 11g sqlnet.ora 設定限制IP 訪問OracleSQL
- Oracle VM初識(一)Oracle
- Oracle VM初識(二)Oracle
- 初識 "Oracle Database Vault"OracleDatabase
- 初識oracle block系列(一)OracleBloC
- 初識ORACLE的審計功能Oracle
- 11g下sqlnet.ora及EZCONNECTSQL
- Oracle OCP(45):sqlnet.oraOracleSQL
- ITPUB知識索引貼--Oracle 11G索引Oracle
- 初識oracle SGA之引數設定Oracle
- 【oracle】sqlnet.ora 訪問控制策略OracleSQL
- oracle relink重連結初識之一Oracle
- 初識Oracle資料庫體系結構Oracle資料庫
- sqlnet.ora 驗證oracle 登陸方式SQLOracle
- 【oracle 】tnsnames.ora VS sqlnet.ora 作用OracleSQL
- Oracle配置sqlnet.ora限制ip訪問[Oracle基礎]OracleSQL
- 初識MybatisMyBatis
- 初識 DockerDocker
- rocketmq初識MQ
- 初識 reduxRedux
- 初識GitGit
- Express初識Express
- Kafka 初識Kafka
- 初識 “HTML”HTML
- 初識GolangGolang
- 初識dockerDocker
- 初識RedisRedis
- 初識GOGo
- 初識promisePromise
- 初識VueVue
- 初識JSJS
- 初識jQueryjQuery
- 初識JavaScriptJavaScript
- 初識WebAssemblyWeb
- 初識機器學習機器學習
- 初識JVMJVM
- 初識HaphoopOOP
- 初識JavaWEBJavaWeb