您好,登錄后才能下訂單哦!
單實例環境(不是RAC),偵聽器和實例必須要在同一臺機器上。兩臺機器通信必須使用一個網絡協議才能進行通信,假如瀏覽網頁需要使用http協議,遠程連接需要使用RDP/ssh/telnet等等。
有一臺oracle服務器,有個客戶端要連接到oracle服務器上,兩臺機器通信就要使用oracleNET協議,和以上的協議是一樣的。有協議就要有相應的端口,所以oracleNET有個默認的偵聽端口1521.
其實配置oracle網絡就是配置oracle偵聽器,偵聽器很重要,如果沒有配置偵聽器,客戶端是無法連接到oracle服務器上面的。其實即使是在本地連接oracle服務器,偵聽器也是必須要運行的。客戶端遠程連接到oracle服務器時使用oracleNet協議,是被封裝到了tcp/ip協議中。如果是直接在本地連接數據庫用的是IPC。IPC是指<進程間的通信>。
偵聽器是用來接收外面的請求,在將外面的請求通過服務器進程交給實例,所以實例必須要向偵聽器注冊。如果監聽器不知道有相應的實例肯定是不行的--即讓偵聽器知道有實例可以連接。oracle默認偵聽器的端口是1521。
偵聽器的配置文件存放在:$ORACLE_HOME/network/admin/中的instener.ora是偵聽器的配置文件
如果listerner的端口使用默認的1521的話,可以沒有listener.ora,但是建議最好不要刪除這個文件。
創建偵聽器
可以通過修改listener.ora來配置偵聽器以外,還可以使用其他工具來配置偵聽器
netca
netmgr
使用netca添加偵聽器的方法
查看默認偵聽器的狀態
查看LISTENER1的狀態
遠程客戶端連接方式
遠程客戶端連接oracle服務器可以使用以下兩個方式:
1.easy connect: conn user/password@ip:port/orcl as sysdba
2.tnsnames: conn user/password@XX
使用easy connect方式遠程連接oracle服務器
客戶端是win7系統,需要安裝oracle客戶端程序
刪除listener.ora文件中的標識的行
停止偵聽器服務
[oracle@orclsrv admin]$ lsnrctlstop
啟動偵聽器服務
[oracle@orclsrv admin]$ lsnrctl start
再去連接實例時,就無法連接,提示沒有listener.
將偵聽器還原到沒有刪除之前的狀態,然后重啟服務lsnrctl stop/start
使用netmgr工具
刪除listener1偵聽器,單擊左側“X”按鈕
可以使用easy connect和tnsnames的方式連接
Tnsnames連接方法:<推薦的客戶端連接方式> conn user/password@XX
Tnsnames涉及到一個文件:tnsnames.ora是一個客戶端的工具,將tnsnames.ora拷貝到oracle客戶端安裝目錄中。
使用記事本打開tnsnames.ora文件,原始內容如下
對原始內容中如圖所示部分復制并粘貼到tnsnames.ora中的空白位置,進行修改
修改為
然后保存退出。
連接實例
使用netmgr添加監聽器
使用listener1偵聽器連接實例,結果是無法連接到實例,因為實例orcl并沒有在listener1偵聽器上注冊。默認情況下orcl實例注冊到了默認的偵聽器1521上面,所以目前只能使用1521來連接。
實例注冊到偵聽器的方法有:
靜態注冊:在listener.ora文件中手工指定
動態注冊:pmon進程每隔一分鐘將服務名和實例名注冊到偵聽器上面
將實例注冊到偵聽器的方法
使用alter system register可以將實例注冊到偵聽器上。這個命令將實例注冊到哪個偵聽器上了呢?這條命令將實例注冊到了默認的偵聽器上面了。
ORCL是tnsnames中的解析名:即使用ORCL就能夠解析出(ADDRESS = (PROTOCOL = TCP)(HOST =orclsrv)(PORT = 1521))這個地址。
SQL>alter system set local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST= orclsrv)(PORT = 1521))";與alter system set local_listener=ORCL是等價的。
將實例注冊到listener1上面
SQL>alter system set local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST= orclsrv)(PORT = 1522))";
此時使用默認的偵聽器就無法連接到實例了。
修改tnsnames.ora中的文件
SQL>alter system setlocal_listener=LISTENER2;
系統已更改。
查看實例注冊到了哪個偵聽器上面:show parameter local;
如果對此文有什么問題的話,請加下面微信一起探討
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。