【監聽】手工配置tnsnames.ora檔案注意事項——謹慎處理空格
有關資料庫連線串的配置基本上有兩種方法:一種是使用圖形化工具netmgr;另外一種是手工直接編輯修改網路配置檔案tnsnames.ora。
這兩種配置方法各有利弊。netmgr工具配置方法因為需要啟動圖形化介面,因此受環境的限制比較多,優點是使用netmgr配置的資訊不容易出現錯誤;手工配置tnsnames.ora適合經驗豐富的DBA使用,優點是完全可以在命令列中完成,快速高效,缺點是容易出錯。
本文給出一個手工配置tnsnames.ora極易出錯的一個案例:謹慎處理空格!
1.標準的tnsnames.ora內容
ora10g@secdb /home/oracle$ vi $ORACLE_HOME/network/admin/tnsnames.ora
……
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
……
標準的配置以精美的縮排展示了連線串的配置,很容易閱讀。
建議以此為模板去配置其他的連線串。
2.其他形式的配置
1)無縮排形式
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
上面這種書寫形式沒有縮排,因此可閱讀性就大大地降低了。不過這種形式是可行的。
這裡需要提醒的是:連線串名需要頂頭書寫,資料庫連線串定義中除首尾括號外不允許其他內容頂頭書寫!(後面會有錯誤例子)
2)一行搞定一切
ORA10G=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=secdb)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ora10g)))
這是最精簡的一種配置,但是缺點非常顯然:很難快速的理清語法關係。這種配置方法可整合在指令碼中,達到快速編輯測試環境下的tnsnames.ora配置檔案的目的。
3.謹慎處理空格
上文中“無縮排形式”中已經給出了配置規律:連線串名需要頂頭書寫,資料庫連線串定義中除首尾括號外不允許其他內容頂頭書寫!
例如下面的配置是不可行的。
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
注意上面倒數第三行頂頭書寫是不被允許的!
依此類推,下面的這些書寫格式亦是非法。
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
此時連線資料庫時的報錯資訊如下:
ora10g@secdb /home/oracle$ sqlplus sec/sec@ora10g
SQL*Plus: Release 10.2.0.3.0 - Production on Fri Dec 17 21:10:16 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Enter user-name:
4.小結
如果條件允許的情況下可以使用netmgr工具配置資料庫連線串,這樣可以規避因手工編寫配置檔案帶來的錯誤。對於經驗豐富的朋友建議採用手工方式來配置,畢竟這樣更加的透明和高效。
Good luck.
secooler
10.12.17
-- The End --
這兩種配置方法各有利弊。netmgr工具配置方法因為需要啟動圖形化介面,因此受環境的限制比較多,優點是使用netmgr配置的資訊不容易出現錯誤;手工配置tnsnames.ora適合經驗豐富的DBA使用,優點是完全可以在命令列中完成,快速高效,缺點是容易出錯。
本文給出一個手工配置tnsnames.ora極易出錯的一個案例:謹慎處理空格!
1.標準的tnsnames.ora內容
ora10g@secdb /home/oracle$ vi $ORACLE_HOME/network/admin/tnsnames.ora
……
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
……
標準的配置以精美的縮排展示了連線串的配置,很容易閱讀。
建議以此為模板去配置其他的連線串。
2.其他形式的配置
1)無縮排形式
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
上面這種書寫形式沒有縮排,因此可閱讀性就大大地降低了。不過這種形式是可行的。
這裡需要提醒的是:連線串名需要頂頭書寫,資料庫連線串定義中除首尾括號外不允許其他內容頂頭書寫!(後面會有錯誤例子)
2)一行搞定一切
ORA10G=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=secdb)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ora10g)))
這是最精簡的一種配置,但是缺點非常顯然:很難快速的理清語法關係。這種配置方法可整合在指令碼中,達到快速編輯測試環境下的tnsnames.ora配置檔案的目的。
3.謹慎處理空格
上文中“無縮排形式”中已經給出了配置規律:連線串名需要頂頭書寫,資料庫連線串定義中除首尾括號外不允許其他內容頂頭書寫!
例如下面的配置是不可行的。
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
注意上面倒數第三行頂頭書寫是不被允許的!
依此類推,下面的這些書寫格式亦是非法。
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
ORA10G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10g)
)
)
此時連線資料庫時的報錯資訊如下:
ora10g@secdb /home/oracle$ sqlplus sec/sec@ora10g
SQL*Plus: Release 10.2.0.3.0 - Production on Fri Dec 17 21:10:16 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Enter user-name:
4.小結
如果條件允許的情況下可以使用netmgr工具配置資料庫連線串,這樣可以規避因手工編寫配置檔案帶來的錯誤。對於經驗豐富的朋友建議採用手工方式來配置,畢竟這樣更加的透明和高效。
Good luck.
secooler
10.12.17
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-682175/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tnsnames.ora監聽配置檔案詳解
- 【DBA】Windows 下Oracle 監聽配置注意事項WindowsOracle
- 2.5.2. 監聽程式(listener)配置——2.5.2.3. 手工編輯監聽器配置檔案
- 謹慎處理 Service Worker 的更新
- 專案經理注意事項(轉)
- .Net上傳檔案處理三大正規化,及開發注意事項
- ORACLE_SID超過8個字元,監聽器的配置,tnsnames.ora檔案配置範例Oracle字元
- 專案經理之專案經理注意事項
- ORACLE配置tnsnames.ora檔案例項Oracle
- Oracle vs PostgreSQL,研發注意事項(6)- 事務處理OracleSQL
- php大檔案上傳注意事項PHP
- SpringMvc 檔案上傳注意事項SpringMVC
- AIX配置NFS注意事項AINFS
- vue中 靜態檔案引用注意事項Vue
- fgets讀取檔案時的注意事項
- 多種TNS報錯總結--監聽器及tnsnames.ora配置檔案多種出錯總結
- Entity Framework 6連線Postgresql、SQLite、LocalDB的注意事項和配置檔案FrameworkSQLite
- @Transactional spring 配置事務 注意事項Spring
- DUBBO安裝配置注意事項
- Linux zabbix 配置注意事項Linux
- 【警鐘】謹慎刪除歸檔日誌
- 部署專案注意事項
- AndroidTV開發中所有的遙控器按鍵監聽及注意事項,新增home鍵監聽Android
- Oracle 監聽異常處理Oracle
- oracle 最全的監聽、tnsnames.ora格式Oracle
- 將WAV檔案做到EXE檔案的方法及注意事項 (轉)
- ASM例項配置監聽和TNSASM
- 伺服器配置的注意事項伺服器
- oracle rac安裝配置注意事項Oracle
- TransactionScope事務處理方法介紹及.NETCore中的注意事項NetCore
- 【Lambda、SteamAPI】謹慎使用流API
- java流操作要謹慎Java
- python ini 配置檔案處理Python
- 前端如何處理xml配置檔案?前端XML
- canal同步mysql,監聽單例項,多例項配置MySql單例
- 大型專案開發:謹慎使用智慧指標指標
- 在SQL Server資料庫中使用批處理的注意事項SQLServer資料庫
- Linux中如何刪除檔案?注意事項有哪些?Linux