徹底理解初始化引數SERVICE_NAMES和客戶端TNS中SERVICE_NAME(1)
1.SERVICE_NAMES與LISTENER
本文可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告
http://blog.itpub.net/post/11/3085
徹底理解初始化引數SERVICE_NAMES和客戶端TNS中SERVICE_NAME
Author:husthxd
msn:husthxd@hotmail.com
1. SERVICE_NAMES與LISTENER
初始化引數SERVICE_NAMES預設為INSTANCE_NAME,後臺程式PMON自動在伺服器監聽器中註冊該SERVICE_NAMES。實驗如下:
sidb@GDSI-HYQL> show parameter service_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string simis
sidb@GDSI-HYQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string simis
首先監聽器配置檔案手工配置了資料庫服務,listener.ora的配置資訊為:
# LISTENER.ORA Network Configuration File: D:oracleora90networkadminlistener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sb-hyk)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:oracleora90)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = simis)
(ORACLE_HOME = D:oracleora90)
(SID_NAME = simis)
)
)
lsnrctl service顯示的資訊如下:
LSNRCTL for 32-bit Windows: Version 9.0.1.1.1 - Production on 14-10月-2004 10:32
:18
Copyright (c) 1991, 2001, Oracle Corporation. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務 "simis" 包含 2 個例程。
例程 "simis", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
例程 "simis", 狀態 READY, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:4 已拒絕:0 狀態:ready
LOCAL SERVER
命令執行成功
透過如下實驗可以證明服務狀態為READY表示PMON自動註冊的服務名,而UNKNOWN則表示該服務是手工在LISTENER.ORA中配置的資料庫服務。
把listener.ora配置檔案中的資料庫服務資訊去掉,更改為:
# LISTENER.ORA Network Configuration File: D:oracleora90networkadminlistener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sb-hyk)(PORT = 1521))
)
)
)
下面再看看lsnrctl service的顯示資訊:
LSNRCTL> reload
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
命令執行成功
LSNRCTL> service
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
服務摘要..
服務 "simis" 包含 1 個例程。
例程 "simis", 狀態 READY, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
命令執行成功
這裡顯示的simis就是初始化引數中SERVICE_NAMES設定的引數值,由PMON自動註冊到監聽器上。下面不妨修改初始化引數SERVICE_NAMES來證明這一觀點:
alter system set service_names='simis,hyk,hyb' scope=memory
/
在當前例項上修改sevice_names對監聽器不起作用:
LSNRCTL> reload
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
命令執行成功
LSNRCTL> service
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
監聽器不支援服務
命令執行成功
修改引數,關閉資料庫
SQL> alter system set service_names='simis,hyk,hyb' scope=both
2 /
系統已更改。
-- 平臺是windows,901,這裡不得不提一下的是901真的非常垃圾,還會出現如下的bug
SQL> shutdown immediate;
ORA-03113: 通訊通道的檔案結束
SQL>
SQL>
SQL> conn / as sysdba
已連線到空閒例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 114061244 bytes
Fixed Size 282556 bytes
Variable Size 79691776 bytes
Database Buffers 33554432 bytes
Redo Buffers 532480 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
SQL> show parameter service_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string simis,hyk,hyb
下面看看lsnrctl service的輸出:
LSNRCTL> service
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
服務摘要..
服務 "hyb" 包含 1 個例程。
例程 "simis", 狀態 READY, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "hyk" 包含 1 個例程。
例程 "simis", 狀態 READY, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "simis" 包含 1 個例程。
例程 "simis", 狀態 READY, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
命令執行成功
我們看到SERVICE_NAMES設定的服務引數simis、hyk、hyb均在監聽器中自動註冊。
謝謝biti_rainy的指正:
parameter 中 service_name 預設是 db_name.db_dimain
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string ocn
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string ocn1
SQL> show parameter db_domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string db.alibaba.com
SQL>
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string ocn1
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string ocn.db.alibaba.com
SQL>
2.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21584/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 徹底理解JavaScript中的thisJavaScript
- 徹底理解Hive中的鎖Hive
- 徹底理解synchronizedsynchronized
- 徹底理解ReentrantLockReentrantLock
- 徹底理解volatile
- JavaScript之例題中徹底理解thisJavaScript
- 徹底理解kubernetes CNI
- 徹底理解Golang MapGolang
- 徹底理解正則
- 徹底理解Node.js中的BufferNode.js
- 徹底理解Linux的DISPLAY變數的作用Linux變數
- 一題帶你徹底理解sleep()和wait()AI
- 徹底理解cookie,session,tokenCookieSession
- 小白(新手)如何徹底理解索引?索引
- 徹底理解 Dart mixin 機制Dart
- 徹底理解連結器:四
- 第六課 以太坊客戶端Geth命令用法-引數詳解客戶端
- Netty入門系列(1) --使用Netty搭建服務端和客戶端Netty服務端客戶端
- 低門檻徹底理解 JavaScript 中的深拷貝和淺拷貝JavaScript
- 低門檻徹底理解JavaScript中的深拷貝和淺拷貝JavaScript
- 服務端渲染和客戶端渲染服務端客戶端
- 徹底理解斜槓和反斜槓的區別
- 一文讓你徹底理解 Java HashMap 和 ConcurrentHashMapJavaHashMap
- Redis客戶端連線數DevOpsRedis客戶端dev
- 徹底理解閉包實現原理
- js 徹底理解回撥函式JS函式
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- XShell 客戶端和工具MobaXterm工具客戶端
- 看完讓你徹底理解 WebSocket 原理,附完整的實戰程式碼(包含前端和後端)Web前端後端
- Feign客戶端呼叫服務時丟失Header引數的解決方案客戶端Header
- 「從原始碼中學習」徹底理解Vue選項Props原始碼Vue
- 在.NET 6 中如何建立和使用 HTTP 客戶端 SDKHTTP客戶端
- 徹底理解原碼、補碼、反碼
- 5分鐘徹底理解Object.keysObject
- 徹底理解瀏覽器的跨域瀏覽器跨域
- 一張圖徹底理解Javascript原型鏈JavaScript原型
- Dubbo原始碼解析之客戶端初始化及服務呼叫原始碼客戶端
- mqtt 客戶端MQQT客戶端
- dubbo客戶端客戶端