共計 4796 個字符,預計需要花費 12 分鐘才能閱讀完成。
這篇文章主要介紹了 oracle 有哪些網絡配置文件,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
在 oracle 的網絡配置中,經常會遇到 sqlnet.ora,tnsnames.ora,listener.ora 這三個配置文件,為方便具體應用索性總結一下。
1、sqlnet.ora 文件:作用類似于 linux 或者其他 unix 的 nsswitch.conf 文件,通過這個文件來決定怎樣找一個連接中出現的連接字符串(connect descriptor) (sqlnet.ora 還可以對特定客戶端的 IP 進行限制,限制客戶端訪問 ORACLE 數據庫,當作了這樣的限制,客戶端連接數據庫時會報 ORA-12537 錯誤)
假如 sqlnet.ora 是下面這個樣子
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
當客戶端輸入 sqlplus sys/oracle@orcl 時, 就會首先在 tnsnames.ora 文件中找 orcl 的記錄. 如果沒有相應的記錄則嘗試把 orcl 當作一個主機名。通過網絡的途徑去解析它的 ip 地址然后去連接這個 ip 上 GLOBAL_DBNAME=orcl 這個實例,當然我這里 orcl 并不是一個主機名。
如果我是這個樣子 NAMES.DIRECTORY_PATH= (TNSNAMES),那么客戶端就只會從 tnsnames.ora 查找 orcl 的記錄。括號中還有其他選項,如 LDAP 等, 但 HOSTNAME,LDAP 通常并不常用, 通常只設 TNSNAME 即可.
2、tnsnames.ora 文件:提供 tnsname 到主機名或者 ip 的對應(也是客戶端監聽器配置文件)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) #對應的 SOCKET 信息
(CONNECT_DATA =
(SERVER = DEDICATED) #使用專用服務器模式去連接(server=shared 共享模式)
(SERVICE_NAME = orcl) #這里填入對應 service_name,
)
SALES =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales)
)
)
配置 tnsname.ora 里面的 service_name, 可以用下面命令查看:
SQL show parameter service_name;
NAME TYPE VALUE
———————————— ———– ——————————
service_names string orcl
tnsnames.ora 是為 oracle 客戶端訪問數據庫而設的, 不是為了遠程客戶端連接 oracle 服務器而設的.
刪除 tnsnames.ora
[oracle@oracle admin]$ rm tnsnames.ora
重啟 oracle,會發現本地客戶端無法訪問數據庫了
[oracle@oracle ~]$ sqlplus scott/scott@orcl
SQL*Plus: Release 10.2.0.1.0 – Production on Tue Feb 16 17:32:41 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
在遠端 (另一臺機器) 通過 sqlplus 方式連接 oracle 數據庫, 沒問題;通過 jdbc 連接 orcle 數據庫,沒問題。
3、listener.ora 文件:接受遠程對數據庫的接入請求并轉交給 oracle 的服務器進程。所以如果不是使用的遠程的連接,listener 進程就不是必需的,同樣的如果關閉 listener 進程并不會影響已經存在的數據庫連接。(服務器端監聽器配置文件)
Listener.ora
#SID_LIST_LISTENER 定義, 定義 LISTENER 進程監聽 SID
SID_LIST_LISTENER =
(SID_LIST = #可以監聽多個 SID, 都存在一個 SID 表中
(SID_DESC =
(GLOBAL_DBNAME = boway) # GLOBAL_DBNAME 不是必需的除非使用 HOSTNAME 做數據庫連接
(ORACLE_HOME = E:\oracle\product\10.1.0\Db_2)
(SID_NAME = orcl)
)
)
#監聽器定義,一臺數據庫可以有不止一個監聽器
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
)
JDBC 連接請求的 URL 要對應 Listener.ora
jdbc:oracle:thin:@192.168.3.98:1521:orcl
總結:
1 . 三個配置文件都是放在 $ORACLE_HOME\network\admin 目錄下。
2 .sqlnet.ora 確定名稱的解析方式
3 .listener.ora 上設 SID_NAME, 通常用于 JDBC 訪問, 對應的錯誤碼為 12505
4 .tnsnames.ora 上設 SERVICE_NAME, 通常用于 linux sqlplus 客戶端, 對應的錯誤碼為 12514
客戶端連接服務器端常見問題排除方法:
要排除客戶端與服務器端的連接問題,首先檢查客戶端配置是否正確 (客戶端配置必須與數據庫服務器端監聽配置一致),再根據錯誤提示解決。下面列出幾種常見的連接問題:
1、ORA-12541: TNS: 沒有監聽器 顯而易見是服務器端的監聽器沒有啟動,另外檢查客戶端 IP 地址或端口填寫是否正確。啟動監聽器:$ lsnrctl start 或 C:lsnrctl start
2、ORA-12500: TNS: 監聽程序無法啟動專用服務器進程 對于 Windows 而言,沒有啟動 Oracle 實例服務。啟動實例服務:C:oradim –startup -sid myoracle
3、ORA-12535: TNS: 操作超時 出現這個問題的原因很多,但主要跟網絡有關。解決這個問題,首先檢查客戶端與服務端的網絡是否暢通,如果網絡連通,則檢查兩端的防火墻是否阻擋了連接。
4、ORA-12154: TNS: 無法處理服務名 檢查輸入的服務名與配置的服務名是否一致。另外注意生成的本地服務名文件(Windows 下如 D:oracleora92networkadmin tnsnames.ora,Linux/Unix 下 /network/admin/tnsnames.ora) 里每項服務的首 行服務名稱前不能有空格。
5、ORA-12514: TNS: 監聽進程不能解析在連接描述符中給出的 SERVICE_NAME 打開 Net Manager,選中服務名稱,檢查服務標識欄里的服務名輸入是否正確。該服務名必須與服務器端監聽器配置的全局數據庫名一致。
6、ORA-12518 TNS: 監聽程序無法分發客戶機連接 出現該報錯有兩個原因:在共享模式下是由于調度進程(dispatchers)太少,在獨占模式下是由于進程數 (proces ses) 超過了數據庫默認的最大進程數。
解決步驟:1、show parameter process 查看數據庫允許最大進程數
2、select count(*) from v$session; 查看當前系統進程數如果進程數不夠,可通過擴大 PGA 來增大進程數: alter system set workarea_size_policy=auto scope=both;
alter system set pga_aggregate_target=512m scope=both;
3、show parameter dispatchers 查看調度進程數量如果調度進程太少,則可執行:alter system set dispatchers = (protocol=tcp)(dispatchers=3)(service=oracle10xdb)
7、 Windows 下啟動監聽服務提示找不到路徑 用命令或在服務窗口中啟動監聽提示找不到路徑,或監聽服務啟動異常。打開注冊表,進入 HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener 項,查看 ImagePath 字符串項是否存在,如果沒有,設定值為 D:oracleora92BINTNSLSNR,不同的安裝路徑設定值做相應的更改。這種方法同樣適用于 Oracle 實例服務,同上,找到如同 HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE 項,查看 ImagePath 字符串項是否存在,如果沒有則新建,設定值為 d:oracleora92 binORACLE.EXE MYORACLE。以上是 Oracle 客戶端連接服務器端常見的一些問題,當然不能囊括所有的連接異常。解決問題的關鍵在于方法與思路,而不是每種問題都有固定的答案
平時排錯可能會用到的
1.lsnrctl status 查看服務器端 listener 進程的狀態
LSNRCTL help
The following operations are available
An asterisk (*) denotes a modifier or extended command:
start stop status
services version reload
save_config trace change_password
quit exit set*
show*
LSNRCTL status
:em11:
2.tnsping 查看客戶端 sqlnet.ora 和 tnsname.ora 文件的配置正確與
否,及對應的服務器的 listener 進程的狀態。
C:\ tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 –
Production on 16- 8 月 –
2010 09:36:08
Copyright (c) 1997, 2003, Oracle. All rights reserved.
Used parameter files:
E:\oracle\product\10.1.0\Db_2\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =
(PROTOCOL = TCP)
(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVER =
DEDICATED) (SERVICE_
NAME = orcl)))
OK (20 msec)
3.
SQL show sga 查看 instance 是否已經啟動
SQL select open_mode from v$database; 查看數據庫是打開還是
mount 狀態。
OPEN_MODE
———-
READ WRITE
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“oracle 有哪些網絡配置文件”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!