您好,登錄后才能下訂單哦!
這篇文章主要介紹了oracle有哪些網絡配置文件,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在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
感謝你能夠認真閱讀完這篇文章,希望小編分享的“oracle有哪些網絡配置文件”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。