徹底理解初始化引數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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 徹底理解初始化引數SERVICE_NAMES和客戶端TNS中SERVICE_NAME(2)客戶端
- 徹底理解JavaScript中的thisJavaScript
- 【Oracle】service_name和service_names的關係Oracle
- 徹底理解Hive中的鎖Hive
- 徹底理解 JS 中 this 的指向JS
- 徹底理解js中this的指向JS
- 徹底理解synchronizedsynchronized
- JavaScript之例題中徹底理解thisJavaScript
- 徹底理解js中的閉包JS
- 帶你徹底理解 Android 中的 Window 和 WindowManagerAndroid
- 以太坊客戶端Geth命令用法-引數詳解客戶端
- MySQL 5.5客戶端字符集相關引數MySql客戶端
- 中斷客戶端客戶端
- 客戶端tns裡host配置主機名的方法客戶端
- 徹底理解Node.js中的BufferNode.js
- JavaScript中this指標指向的徹底理解JavaScript指標
- 徹底理解Golang MapGolang
- 徹底理解正則
- 徹底理解ReentrantLockReentrantLock
- 徹底理解volatile
- 【譯】徹底理解 Android 中的陰影Android
- SVG座標系統和transformation徹底理解SVGORM
- 徹底理解cookie,session,tokenCookieSession
- 遠端客戶端連線資料庫時提示TNS-12541: TNS: 無監聽程式客戶端資料庫
- 徹底理解樣本方差為何除以n-1
- 《samba搭建win客戶端和linux客戶端的區別》Samba客戶端Linux
- 第六課 以太坊客戶端Geth命令用法-引數詳解客戶端
- 一題帶你徹底理解sleep()和wait()AI
- Asp.Net 連線Oracle資料庫 出現"找到 Oracle 客戶端和網路元件" 徹底解決方法! (轉)ASP.NETOracle資料庫客戶端元件
- 服務端渲染和客戶端渲染服務端客戶端
- 徹底理解 Dart mixin 機制Dart
- 徹底理解kubernetes CNI
- 徹底理解連結器:四
- 小白(新手)如何徹底理解索引?索引
- (文摘)徹底理解webservice SOAP WSDLWeb
- 讓你徹底理解 “==”與 Equals
- 低門檻徹底理解JavaScript中的深拷貝和淺拷貝JavaScript
- 低門檻徹底理解 JavaScript 中的深拷貝和淺拷貝JavaScript