Oracle 11g R2 網絡偵聽器實驗

單實例環境(不是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是偵聽器的配置文件
Oracle 11g R2 網絡偵聽器實驗
如果listerner的端口使用默認的1521的話,可以沒有listener.ora,但是建議最好不要刪除這個文件。

創建偵聽器

可以通過修改listener.ora來配置偵聽器以外,還可以使用其他工具來配置偵聽器

netca

netmgr

使用netca添加偵聽器的方法
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗Oracle 11g R2 網絡偵聽器實驗Oracle 11g R2 網絡偵聽器實驗
查看默認偵聽器的狀態
Oracle 11g R2 網絡偵聽器實驗
查看LISTENER1的狀態
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
遠程客戶端連接方式

遠程客戶端連接oracle服務器可以使用以下兩個方式:

1.easy connect: conn user/password@ip:port/orcl as sysdba

2.tnsnames: conn user/password@XX

使用easy connect方式遠程連接oracle服務器

客戶端是win7系統,需要安裝oracle客戶端程序
Oracle 11g R2 網絡偵聽器實驗Oracle 11g R2 網絡偵聽器實驗
刪除listener.ora文件中的標識的行
Oracle 11g R2 網絡偵聽器實驗
停止偵聽器服務

[oracle@orclsrv admin]$ lsnrctlstop

啓動偵聽器服務

[oracle@orclsrv admin]$ lsnrctl start

再去連接實例時,就無法連接,提示沒有listener.
Oracle 11g R2 網絡偵聽器實驗
將偵聽器還原到沒有刪除之前的狀態,然後重啓服務lsnrctl stop/start

使用netmgr工具

刪除listener1偵聽器,單擊左側“X”按鈕
Oracle 11g R2 網絡偵聽器實驗Oracle 11g R2 網絡偵聽器實驗

可以使用easy connect和tnsnames的方式連接
Oracle 11g R2 網絡偵聽器實驗
Tnsnames連接方法:<推薦的客戶端連接方式> conn user/password@XX

Tnsnames涉及到一個文件:tnsnames.ora是一個客戶端的工具,將tnsnames.ora拷貝到oracle客戶端安裝目錄中。
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
使用記事本打開tnsnames.ora文件,原始內容如下
Oracle 11g R2 網絡偵聽器實驗
對原始內容中如圖所示部分複製並粘貼到tnsnames.ora中的空白位置,進行修改
Oracle 11g R2 網絡偵聽器實驗
修改爲
Oracle 11g R2 網絡偵聽器實驗
然後保存退出。

連接實例
Oracle 11g R2 網絡偵聽器實驗
使用netmgr添加監聽器
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
使用listener1偵聽器連接實例,結果是無法連接到實例,因爲實例orcl並沒有在listener1偵聽器上註冊。默認情況下orcl實例註冊到了默認的偵聽器1521上面,所以目前只能使用1521來連接。
Oracle 11g R2 網絡偵聽器實驗
實例註冊到偵聽器的方法有:

靜態註冊:在listener.ora文件中手工指定

動態註冊:pmon進程每隔一分鐘將服務名和實例名註冊到偵聽器上面

將實例註冊到偵聽器的方法Oracle 11g R2 網絡偵聽器實驗
使用alter system register可以將實例註冊到偵聽器上。這個命令將實例註冊到哪個偵聽器上了呢?這條命令將實例註冊到了默認的偵聽器上面了。
Oracle 11g R2 網絡偵聽器實驗
Oracle 11g R2 網絡偵聽器實驗
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))";
Oracle 11g R2 網絡偵聽器實驗
此時使用默認的偵聽器就無法連接到實例了。
Oracle 11g R2 網絡偵聽器實驗
修改tnsnames.ora中的文件
Oracle 11g R2 網絡偵聽器實驗
SQL>alter system setlocal_listener=LISTENER2;

系統已更改。

查看實例註冊到了哪個偵聽器上面:show parameter local;

如果對此文有什麼問題的話,請加下面微信一起探討
Oracle 11g R2 網絡偵聽器實驗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章