1. 程式人生 > >Oracle 11g R2網絡偵聽器實驗

Oracle 11g R2網絡偵聽器實驗

問題 dfa ESS bce 數據庫 11g r2 圖片 proc port

單實例環境(不是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;

如果對此文有什麽問題的話,請加下面微信一起探討
技術分享圖片

Oracle 11g R2網絡偵聽器實驗