Oracle监听注册和sqlnet,Oracle监听的动态注册与静态注册
Oracle監聽
介于Oracle的數據庫和客戶端之間的通道。因為數據庫本身不對外提供服務,所以需要通過監聽器來實現。
幾個相關的參數:
local_listener
db_domain
remote_listener
service_names
相關命令:
監聽命令:lsnrctl
參數:
1、start/stop 啟動/關閉服務
2、service 查看當前已注冊的服務
3、status? 查看注冊服務的狀態
登錄數據庫命令:sqlplus
為了使用監聽器,首先就要啟動監聽:
lsnrctl start
監聽注冊過程
一、數據庫根據service_names/db_domain兩個參數,創建服務名:
service_name1.db_domain ... service_nameN.db_domain
默認為數據庫的實例名。
二、將服務名注冊到監聽器,如果監聽器沒有啟動,則以:lsnrctl start啟動;注冊內容有服務名、端口(默認1521)等
三、監聽器對外提供已注冊的服務
四、外部客戶端通過該服務器的1521端口連接到數據庫
監聽需要注冊服務,有兩種方式:
一種是靜態注冊。在啟動監聽的時候,根據監聽文件($ORACLE_HOME/network/admin/listener.ora)直接注冊
這種方式不管數據庫是否啟動,都會注冊一個監聽服務。因此,通過這個服務去連接數據庫,有可能連接不上,也有可能
連接上。
其狀態顯示的是unknown,也就是說它此時是不知道數據庫是否可以連接的。
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
一種是動態注冊。數據庫啟動后,自動會將服務名注冊到監聽器上。因此,通過這類服務去連接,是可以確保連接成功的。
動態注冊除了數據庫啟動時會自動注冊,也可以通過以下命令手工注冊:
alter system register;
如果不執行手工命令進行動態注冊,數據庫也會間隔1分鐘自動發起注冊。
其狀態顯示的是ready,也就是說此時已經準備好連接了。
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
如果此時數據庫是關閉的,將不會有動態注冊的信息顯示,而靜態注冊卻依然存在。
對于監聽文件
如果不存在,數據庫會按照當前的服務名參數(service_names)中提供的服務名,會自動將服務注冊到監聽器上。
如果存在,則按照監聽文件中提供的服務名進行注冊,數據庫也會發起注冊到監聽器上。此時動態注冊和靜態注冊會同時存在。
前面已經說到,注冊到監聽器上的服務名,是由service_names參數決定的,可以指定多個,以逗號分隔,如下:
SQL> show parameter service_names;
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------------------------
service_names??????????????????????? string????? orcl,wanghf
除了服務名,還可以為服務指定一個域名,可以讓將服務名讓各個不同的外部系統調用:
SQL> alter system set db_domain='abc.com' scope=memory;
alter system set db_domain='abc.com' scope=memory
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set db_domain='abc.com' scope=spfile;
從上面可以看到,這個參數的修改需要重啟數據庫,而不能立即生效。
修改后,查看監聽狀態信息便顯示如下(部分):
Service "wanghf.abc.com" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
對于動態注冊,如果沒有特殊設置,則到目前為止已經可以正常連接和操作了。
但是,如果需要修改默認端口(1521),那該怎么做?這個時候,local_listener參數就出現了。
可以按如下命令進行設置:
alter system set local_listener='(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1522))';
其中,端口可以按要求做修改。設置此參數后,再手工注冊一下即可:
alter system register;
或者等待最多一分鐘,數據庫也會自動重新注冊。
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/12932950/viewspace-706407/,如需轉載,請注明出處,否則將追究法律責任。
總結
以上是生活随笔為你收集整理的Oracle监听注册和sqlnet,Oracle监听的动态注册与静态注册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视觉SLAM十四讲学习1 环境配置
- 下一篇: 送花(洛谷 2073)