sqlnet.ora:定義如何認證登陸和以什麼方式解析連接字符,具體查看 “Oracle管理與維護.數據庫登錄的身證驗證”。注意sqlnet.ora
對本機作為服務端和本機作為客戶端都啟作用,對於服務端修改sqlnet.ora需要重啟listener。
例子:
SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)##NAMES.DEFAULT_DOMAIN = us.Oracle.com上面的sqlnet.ora文件說明:
SQLNET.AUTHENTICATION_SERVICES= (NTS)――這個表示采用os認證,在數據庫服務器上,可以利用sqlplus “/ as sysdba”。一般這個配置在Windows上是ok的,在unix環境下可能會有問題,一般在unix下可以去掉這個配置。
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)――表示將首先利用tnsnames進行解析;如果tnsnames解析不到,將使用hostname解析;如果hostname解析不 到,將采用onames進行解析。
被注釋掉的NAMES.DEFAULT_DOMAIN = us.Oracle.com――表示采用默認的domain name為us.oracle.com,在tnsnames.ora中如果配置對應的解析,如果原來的別名oralocal,那麼,當啟用這個參數後,在 tnsnames中的配置要改成oralocal.us.Oracle.com。在使用tnsping時或者sqlplus登錄時,只需寫前面的別名,系 統會自動加上後面的domain name來進行解析。
我的是:SQLNET.AUTHENTICATION_SERVICES = (NTS)
表示:操作系統認證,由於沒有 NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME) ,連接時默認查找tnsnames.ora 來解析連接字符串
tnsnames.ora:作為客戶端訪問數據庫服務的配置文件,是客戶端的配置文件,客戶端要訪問哪個數據庫服務,就在tnsnames.ora中增加一個服務名,這個服務名與IP地址,端口號,數據庫實例名 對應。
通過 oracle net configuration assistant 配置“本地net服務名” 或 通過 Oracle net manager 配置“服務命名”時 都是對 tnsnames.ora 進行的修改。
Oracle 客戶端程序 pl/sql ,sqlplus 都是通過讀取它來找到相應的數據庫服務的。
listener.ora:是服務端提供監聽服務的配置文件,給服務端用的配置文件,服務器端根據這個文件對外提供監聽服務。
通過 oracle net configuration assistant 配置“監聽程序” 或 通過 Oracle net manager 配置“監聽程序”時 都是對 listener.ora 進行的修改。
總結:
sqlnet.ora:客戶端和服務器端程序用
tnsnames.ora :客戶端程序用
listener.ora:服務端用
如果連接數據庫出了什麼問題,在保證網絡出正常,沒有防火牆干擾的情況下,查找問題的步驟是:
1)在客戶端順序檢查sqlnet.ora,tnsnames.ora是有問題。
2)在服務器端檢查listener.ora配置,並且保證監聽程序啟動,數據庫服務加載。
另外:
監聽器的操作命令,lsnrctl start,status,stop等
參考:http://bbs.51cto.com/thread-620243-1.Html
原文如下:
概述
在Oracle安裝目錄$HOME/network/admin下,,經常看到sqlnet.ora tnsnames.ora listener.ora這三個文件,除了tnsnames.ora,其他兩個文件詳細的用途很多人都不太了解。
sqlnet.ora 用在oracle clIEnt端,用於配置連接服務端Oracle的相關參數.
tnsnames.ora 用在Oracle clIEnt端,用戶配置連接數據庫的別名參數,就像系統中的hosts文件一樣。listener.ora 用在oracle server端,配置Oracle服務端程序的監聽辦法,比如限制某些ip等參數。
在安裝目錄$HOME/network/admin/samples下,會看到如上上個文件的示例文件,裡面會有相關參數的說明和用法,如果遇到什麼問題,大家可以對照這些示例文件中相關參數的說明進行解決。
如果連接數據庫出了什麼問題,在保證網絡出正常,沒有防火牆干擾的情況下,查找問題的步驟是:
1)在客戶端順序檢查sqlnet.ora,tnsnames.ora是有問題。
2)在服務器端檢查listener.ora配置,並且保證監聽程序啟動,數據庫服務加載。
認識sqlnet.ora
下面只講述幾個常用參數配置,詳細的資料,大家可以查看示例sqlnet.ora得到。
sqlnet.ora可以刪除,這樣在Oracle客戶端連接數據庫的時候,默認采用tnsnames.ora中的配置。
1).NAMES.DEFAULT_DOMAIN
域名domain定義,在你用sqlplus訪問數據庫的時候,會在tns別名後面加上".domain"
示例:
sqlnet.ora中:
NAMES.DEFAULT_DOMAIN=com
tnsnames.ora中的tns定義如下:
local_dev =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Linuxdb)
)
)
在客戶端執行命令:sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email]的時候,會出現如下錯誤信息:
"ORA-12154: TNS: 無法處理服務名"或者"ORA-12154: TNS:could not resolve service name"這樣的錯誤信息。
因為sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email]的時候,將tns別名“local_dev”轉換成了“local_dev.com”,所以local_dev.com在tnsnames.ora中找不到,就報錯了。
修改tnsnames.ora中的定義如下:
local_dev.com =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Linuxdb)
)
)
再執行sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email],連接成功。
2)NAMES.DIRECTORY_PATH
定義了在客戶端連接數據庫時,采用什麼樣的匹配方式。
示例
sqlnet.ora內容如下:
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
那麼在客戶端執行sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email]連接數據庫的時
首先采用tnsnames.ora的別名配置連接數據庫;如果連接上;
再采用ONAMES進行解析,最後采用主機名進行解析;
ONAMES表示Oracle使用自己的名稱服務器(Oracle Name Server)來解析,目前Oracle建議使用輕量目錄訪問協議LDAP來取代ONAMES;
HOSTNAME表示使用host文件,DNS,NIS等來解析;
3)SQLNET.AUTHENTICATION_SERVICES
定義登錄數據庫的認證方式。
NONE表示Oracle數據庫身份驗證,NTS表示操作系統身份驗證,兩種方式可以並用。
可以設置成SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)先後順序表明驗證的優先方式。
示例
sqlnet.ora內容如下:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
在命令行上執行如下命令:
sqlplus "/ as sysdba"時,執行失敗。
提示錯誤信息ORA-01031: insufficIEnt privileges
這個參數默認沒有設置。
認識tnsnames.ora
提供了客戶端連接某個數據庫的詳細信息,主機地址,端口,數據庫實例名等。
下面給出一個示例來說明問題:
local_dev =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Linuxdb)
)
)
PROTOCOL參數一般是TCP,可以根據服務器情況選擇一種配置方式。
HOST 一般是ip地址,也可以是主機名,這個主機名字只要能用ping hostname通就行,一般在客戶端系統的host文件上配好主機名和ip地址的映射關系。
ORT 標准是1521,根據服務器端的監聽端口而定。S
ERVICE_NAME 就是數據庫的服務名,用system用戶登陸後,sqlplus> show parameter service_name命令查看。
這個配置文件平時大家都用得比較多,一般人都會,相信不會有太大問題。
認識listener.ora
tnslsnr進程是監聽、並接受遠程連接數據庫請求的監聽進程,listener.ora是tnslsnr進程的配置文件,監聽的參數都是從該配置文件中讀取。
該文件位於服務端,如果只安裝Oracle客戶端,一般不存在這個文件。
如果你只需要在本地連接數據庫,不接受遠程連接,那麼也不需要啟動tnslsnr進程,也不需要去維護listener.ora文件。
啟動監聽進程的命令,在命令模式下,執行lsnrctl start命令就啟動了監聽進程tnslsnr。
監聽可以有多個,也就是說,可以同時監聽多個Oracle實例,可以在listener.ora中定義多個監聽器進行監聽。
下面給出一個簡單的示例
listener.ora中的內容:
LISTENER_CSB =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1621))
)
)
)
SID_LIST_LISTENER_CSB =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u02/oracle/app/Oracle/product/10.2.0/db)
(SID_NAME = zjdevcsb)
)
)
#############################################
LISTENER_CSA =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1521))
)
)
)
SID_LIST_LISTENER_CSA =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u02/oracle/app/Oracle/product/10.2.0/db)
(SID_NAME = zjdevcsa)
)
)
在上面:
1). LISTENER_CSB,LISTENER_CSA定義了監聽器的兩個監聽名字,和這兩個監聽器監聽的參數:ip,port等。
2). SID_LIST_LISTENER_CSB,SID_LIST_LISTENER_CSA定義了兩個監聽服務,服務名字格式SID_LIST_<lsnrname>,lsnrname就是上面兩個監聽器的名字,指定了這個服務將會接受的服務將提交給那個監聽器;監聽的實例名zjdevcsb,zjdevcsa是在tnsnames.ora中需要指定的SERVICE_NAME參數對應。
詳細的參數說明可以查看示例的listener.ora文件。
啟動數據庫
先說一下數據庫的相關定義術語
數據庫 是指在物理磁盤上的文件數據,就是表空間文件的集合,只能有一個,並唯一;就像類的定義。
實例 是加載數據庫文件的一個服務,或者進程。對同一個數據庫,可以有多個實例,比如rac模式,多個實例都是加載同一份物理數據。
Oracle用戶登錄主機:
1) 啟動數據庫實例
首先執行命令sqlplus "/ as sysdba"用數據庫系統管理員角色登錄,然後執行startup啟動數據庫實例,關閉數據庫實例執行用shutdown命令。如果不需要從遠程連接數據庫,那麼你就可以在本機登錄數據庫了。執行sqlplus username/passWord就可以正確登錄數據庫。
2) 監聽
啟動監聽,執行命令lsnrctl start,可以用lsnrctl status查看監聽狀態,如果監聽成功啟動,那麼就可以在遠程連接數據庫了,執行命令sqlplus [email=username/password@tnsname]username/passWord@tnsname[/email];
關閉監聽,執行命令lsnrctl stop。
遠程連接數據庫
當你執行命令sqlplus [email=username/password@tnsname]username/passWord@tnsname[/email]的時,一般處理過程如下:
1) 查詢sqlnet.ora看看名稱的解析方式,發現是TNSNAME,或者hostname。
2) 則查詢tnsnames.ora文件,從裡邊找tnsname的記錄,並且找到主機名,端口和service_name。
3) 如果listener進程沒有問題的話,建立與listener進程的連接。
4) 根據不同的服務器模式如專用服務器模式或者共享服務器模式,listener采取接下去的動作。默認是專用服務器模式,沒有問題的話客戶端就連接上了數據庫的server process。
5) 這時候網絡連接已經建立,listener進程的歷史使命也就完成了。
如果在連接數據庫的時候,出現什麼錯誤,可以按照上面的順序查找相應的配置,解決問題。
幾種連接數據庫用到的命令形式
sqlplus "/ as sysdba" 這是典型的操作系統認證,不需要listener進程,數據庫即使不可用也可以登錄。
sqlplus username/passWord 不需要listener進程,登錄本機數據庫,數據庫實例啟動即可。
sqlplus [email=username/password@tnsname]username/passWord@tnsname[/email]需要listener進程,最常見的遠程登錄模式,需要啟動數據庫實例和listener進程。
本文涉及的相關術語
Db_domain:定義一個數據庫所在的域,該域的命名同互聯網的’域’沒有任何關系,只是數據庫管理員為了更好的管理分布式數據庫而根據實際情況決定的。當然為了管理方便,可以將其等於互聯網的域。
Global_name:對一個數據庫(Oracle database)的唯一標識,Oracle建議用此種方法命令數據庫。該值是在創建數據庫是決定的,缺省值為Db_name. Db_domain。在以後對參數文件中Db_name與Db_domain參數的任何修改不影響Global_name的值,如果要修改 Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令進行修改,然後修改相應參數。
Service_name:該參數是oracle8i新引進的。在8i以前,我們用SID來表示標識數據庫的一個實例,但是在Oracle的並行環境中,一個數據庫對應多個實例,這樣就需要多個網絡服務名,設置繁瑣。為了方便並行環境中的設置,引進了Service_name參數,該參數對應一個數據庫,而不是一個實例,而且該參數有許多其它的好處。該參數的缺省值為Db_name. Db_domain,即等於Global_name。一個數據庫可以對應多個Service_name,以便實現更靈活的配置。該參數與SID沒有直接關系,即不必Service name 必須與SID一樣。
在Oracle安裝目錄$HOME/network/admin下,,經常看到sqlnet.ora tnsnames.ora listener.ora這三個文件,除了tnsnames.ora,其他兩個文件詳細的用途很多人都不太了解。
sqlnet.ora 用在oracle clIEnt端,用於配置連接服務端Oracle的相關參數.
tnsnames.ora 用在Oracle clIEnt端,用戶配置連接數據庫的別名參數,就像系統中的hosts文件一樣。listener.ora 用在oracle server端,配置Oracle服務端程序的監聽辦法,比如限制某些ip等參數。
在安裝目錄$HOME/network/admin/samples下,會看到如上上個文件的示例文件,裡面會有相關參數的說明和用法,如果遇到什麼問題,大家可以對照這些示例文件中相關參數的說明進行解決。
如果連接數據庫出了什麼問題,在保證網絡出正常,沒有防火牆干擾的情況下,查找問題的步驟是:
1)在客戶端順序檢查sqlnet.ora,tnsnames.ora是有問題。
2)在服務器端檢查listener.ora配置,並且保證監聽程序啟動,數據庫服務加載。
認識sqlnet.ora
下面只講述幾個常用參數配置,詳細的資料,大家可以查看示例sqlnet.ora得到。
sqlnet.ora可以刪除,這樣在Oracle客戶端連接數據庫的時候,默認采用tnsnames.ora中的配置。
1).NAMES.DEFAULT_DOMAIN
域名domain定義,在你用sqlplus訪問數據庫的時候,會在tns別名後面加上".domain"
示例:
sqlnet.ora中:
NAMES.DEFAULT_DOMAIN=com
tnsnames.ora中的tns定義如下:
local_dev =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Linuxdb)
)
)
在客戶端執行命令:sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email]的時候,會出現如下錯誤信息:
"ORA-12154: TNS: 無法處理服務名"或者"ORA-12154: TNS:could not resolve service name"這樣的錯誤信息。
因為sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email]的時候,將tns別名“local_dev”轉換成了“local_dev.com”,所以local_dev.com在tnsnames.ora中找不到,就報錯了。
修改tnsnames.ora中的定義如下:
local_dev.com =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Linuxdb)
)
)
再執行sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email],連接成功。
2)NAMES.DIRECTORY_PATH
定義了在客戶端連接數據庫時,采用什麼樣的匹配方式。
示例
sqlnet.ora內容如下:
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
那麼在客戶端執行sqlplus [email=username/password@local_dev]username/passWord@local_dev[/email]連接數據庫的時
首先采用tnsnames.ora的別名配置連接數據庫;如果連接上;
再采用ONAMES進行解析,最後采用主機名進行解析;
ONAMES表示Oracle使用自己的名稱服務器(Oracle Name Server)來解析,目前Oracle建議使用輕量目錄訪問協議LDAP來取代ONAMES;
HOSTNAME表示使用host文件,DNS,NIS等來解析;
3)SQLNET.AUTHENTICATION_SERVICES
定義登錄數據庫的認證方式。
NONE表示Oracle數據庫身份驗證,NTS表示操作系統身份驗證,兩種方式可以並用。
可以設置成SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)先後順序表明驗證的優先方式。
示例
sqlnet.ora內容如下:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
在命令行上執行如下命令:
sqlplus "/ as sysdba"時,執行失敗。
提示錯誤信息ORA-01031: insufficIEnt privileges
這個參數默認沒有設置。
認識tnsnames.ora
提供了客戶端連接某個數據庫的詳細信息,主機地址,端口,數據庫實例名等。
下面給出一個示例來說明問題:
local_dev =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Linuxdb)
)
)
PROTOCOL參數一般是TCP,可以根據服務器情況選擇一種配置方式。
HOST 一般是ip地址,也可以是主機名,這個主機名字只要能用ping hostname通就行,一般在客戶端系統的host文件上配好主機名和ip地址的映射關系。
ORT 標准是1521,根據服務器端的監聽端口而定。S
ERVICE_NAME 就是數據庫的服務名,用system用戶登陸後,sqlplus> show parameter service_name命令查看。
這個配置文件平時大家都用得比較多,一般人都會,相信不會有太大問題。
認識listener.ora
tnslsnr進程是監聽、並接受遠程連接數據庫請求的監聽進程,listener.ora是tnslsnr進程的配置文件,監聽的參數都是從該配置文件中讀取。
該文件位於服務端,如果只安裝Oracle客戶端,一般不存在這個文件。
如果你只需要在本地連接數據庫,不接受遠程連接,那麼也不需要啟動tnslsnr進程,也不需要去維護listener.ora文件。
啟動監聽進程的命令,在命令模式下,執行lsnrctl start命令就啟動了監聽進程tnslsnr。
監聽可以有多個,也就是說,可以同時監聽多個Oracle實例,可以在listener.ora中定義多個監聽器進行監聽。
下面給出一個簡單的示例
listener.ora中的內容:
LISTENER_CSB =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1621))
)
)
)
SID_LIST_LISTENER_CSB =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u02/oracle/app/Oracle/product/10.2.0/db)
(SID_NAME = zjdevcsb)
)
)
#############################################
LISTENER_CSA =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1521))
)
)
)
SID_LIST_LISTENER_CSA =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u02/oracle/app/Oracle/product/10.2.0/db)
(SID_NAME = zjdevcsa)
)
)
在上面:
1). LISTENER_CSB,LISTENER_CSA定義了監聽器的兩個監聽名字,和這兩個監聽器監聽的參數:ip,port等。
2). SID_LIST_LISTENER_CSB,SID_LIST_LISTENER_CSA定義了兩個監聽服務,服務名字格式SID_LIST_<lsnrname>,lsnrname就是上面兩個監聽器的名字,指定了這個服務將會接受的服務將提交給那個監聽器;監聽的實例名zjdevcsb,zjdevcsa是在tnsnames.ora中需要指定的SERVICE_NAME參數對應。
詳細的參數說明可以查看示例的listener.ora文件。
啟動數據庫
先說一下數據庫的相關定義術語
數據庫 是指在物理磁盤上的文件數據,就是表空間文件的集合,只能有一個,並唯一;就像類的定義。
實例 是加載數據庫文件的一個服務,或者進程。對同一個數據庫,可以有多個實例,比如rac模式,多個實例都是加載同一份物理數據。
Oracle用戶登錄主機:
1) 啟動數據庫實例
首先執行命令sqlplus "/ as sysdba"用數據庫系統管理員角色登錄,然後執行startup啟動數據庫實例,關閉數據庫實例執行用shutdown命令。如果不需要從遠程連接數據庫,那麼你就可以在本機登錄數據庫了。執行sqlplus username/passWord就可以正確登錄數據庫。
2) 監聽
啟動監聽,執行命令lsnrctl start,可以用lsnrctl status查看監聽狀態,如果監聽成功啟動,那麼就可以在遠程連接數據庫了,執行命令sqlplus [email=username/password@tnsname]username/passWord@tnsname[/email];
關閉監聽,執行命令lsnrctl stop。
遠程連接數據庫
當你執行命令sqlplus [email=username/password@tnsname]username/passWord@tnsname[/email]的時,一般處理過程如下:
1) 查詢sqlnet.ora看看名稱的解析方式,發現是TNSNAME,或者hostname。
2) 則查詢tnsnames.ora文件,從裡邊找tnsname的記錄,並且找到主機名,端口和service_name。
3) 如果listener進程沒有問題的話,建立與listener進程的連接。
4) 根據不同的服務器模式如專用服務器模式或者共享服務器模式,listener采取接下去的動作。默認是專用服務器模式,沒有問題的話客戶端就連接上了數據庫的server process。
5) 這時候網絡連接已經建立,listener進程的歷史使命也就完成了。
如果在連接數據庫的時候,出現什麼錯誤,可以按照上面的順序查找相應的配置,解決問題。
幾種連接數據庫用到的命令形式
sqlplus "/ as sysdba" 這是典型的操作系統認證,不需要listener進程,數據庫即使不可用也可以登錄。
sqlplus username/passWord 不需要listener進程,登錄本機數據庫,數據庫實例啟動即可。
sqlplus [email=username/password@tnsname]username/passWord@tnsname[/email]需要listener進程,最常見的遠程登錄模式,需要啟動數據庫實例和listener進程。
本文涉及的相關術語
Db_domain:定義一個數據庫所在的域,該域的命名同互聯網的’域’沒有任何關系,只是數據庫管理員為了更好的管理分布式數據庫而根據實際情況決定的。當然為了管理方便,可以將其等於互聯網的域。
Global_name:對一個數據庫(Oracle database)的唯一標識,Oracle建議用此種方法命令數據庫。該值是在創建數據庫是決定的,缺省值為Db_name. Db_domain。在以後對參數文件中Db_name與Db_domain參數的任何修改不影響Global_name的值,如果要修改 Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令進行修改,然後修改相應參數。
Service_name:該參數是oracle8i新引進的。在8i以前,我們用SID來表示標識數據庫的一個實例,但是在Oracle的並行環境中,一個數據庫對應多個實例,這樣就需要多個網絡服務名,設置繁瑣。為了方便並行環境中的設置,引進了Service_name參數,該參數對應一個數據庫,而不是一個實例,而且該參數有許多其它的好處。該參數的缺省值為Db_name. Db_domain,即等於Global_name。一個數據庫可以對應多個Service_name,以便實現更靈活的配置。該參數與SID沒有直接關系,即不必Service name 必須與SID一樣。