日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle配置

發(fā)布時間:2025/6/17 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在oracle安裝目錄$HOME/network/admin下,,經(jīng)常看到sqlnet.ora tnsnames.ora listener.ora這三個文件,除了tnsnames.ora,其他兩個文件詳細的用途很多人都不太了解。
sqlnet.ora 用在oracle client端,用于配置連接服務(wù)端oracle的相關(guān)參數(shù).
tnsnames.ora 用在oracle client端,用戶配置連接數(shù)據(jù)庫的別名參數(shù),就像系統(tǒng)中的hosts文件一樣。listener.ora 用在oracle server端,配置oracle服務(wù)端程序的監(jiān)聽辦法,比如限制某些ip等參數(shù)。
在安裝目錄$HOME/network/admin/samples下,會看到如上上個文件的示例文件,里面會有相關(guān)參數(shù)的說明和用法,如果遇到什么問題,大家可以對照這些示例文件中相關(guān)參數(shù)的說明進行解決。
如果連接數(shù)據(jù)庫出了什么問題,在保證網(wǎng)絡(luò)出正常,沒有防火墻干擾的情況下,查找問題的步驟是:
1)在客戶端順序檢查sqlnet.ora,tnsnames.ora是有問題。
2)在服務(wù)器端檢查listener.ora配置,并且保證監(jiān)聽程序啟動,數(shù)據(jù)庫服務(wù)加載。
認識sqlnet.ora
下面只講述幾個常用參數(shù)配置,詳細的資料,大家可以查看示例sqlnet.ora得到。
sqlnet.ora可以刪除,這樣在oracle客戶端連接數(shù)據(jù)庫的時候,默認采用tnsnames.ora中的配置。
1).NAMES.DEFAULT_DOMAIN
域名domain定義,在你用sqlplus訪問數(shù)據(jù)庫的時候,會在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)
? ?)
)
在客戶端執(zhí)行命令:sqlplus [email=username/password@local_dev]username/password@local_dev[/email]的時候,會出現(xiàn)如下錯誤信息:
"ORA-12154: TNS: 無法處理服務(wù)名"或者"ORA-12154: TNS:could not resolve service name"這樣的錯誤信息。
因為sqlplus [email=username/password@local_dev]username/password@local_dev[/email]的時候,將tns別名“l(fā)ocal_dev”轉(zhuǎn)換成了“l(fā)ocal_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)
? ?)
)
再執(zhí)行sqlplus [email=username/password@local_dev]username/password@local_dev[/email],連接成功。
2)NAMES.DIRECTORY_PATH
定義了在客戶端連接數(shù)據(jù)庫時,采用什么樣的匹配方式。
示例
sqlnet.ora內(nèi)容如下:
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
那么在客戶端執(zhí)行sqlplus [email=username/password@local_dev]username/password@local_dev[/email]連接數(shù)據(jù)庫的時
首先采用tnsnames.ora的別名配置連接數(shù)據(jù)庫;如果連接上;
再采用ONAMES進行解析,最后采用主機名進行解析;
ONAMES表示Oracle使用自己的名稱服務(wù)器(Oracle Name Server)來解析,目前Oracle建議使用輕量目錄訪問協(xié)議LDAP來取代ONAMES;
HOSTNAME表示使用host文件,DNS,NIS等來解析;
3)SQLNET.AUTHENTICATION_SERVICES
定義登錄數(shù)據(jù)庫的認證方式。
NONE表示Oracle數(shù)據(jù)庫身份驗證,NTS表示操作系統(tǒng)身份驗證,兩種方式可以并用。
可以設(shè)置成SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)先后順序表明驗證的優(yōu)先方式。
示例
sqlnet.ora內(nèi)容如下:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
在命令行上執(zhí)行如下命令:
sqlplus "/ as sysdba"時,執(zhí)行失敗。
提示錯誤信息ORA-01031: insufficient privileges
這個參數(shù)默認沒有設(shè)置。
認識tnsnames.ora
提供了客戶端連接某個數(shù)據(jù)庫的詳細信息,主機地址,端口,數(shù)據(jù)庫實例名等。
下面給出一個示例來說明問題:
local_dev =
? ?(DESCRIPTION =
? ?? ?(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
? ?? ?? ? (CONNECT_DATA =
? ?? ???(SERVER = DEDICATED)
? ?? ?(SERVICE_NAME = linuxdb)
? ?)
)
PROTOCOL參數(shù)一般是TCP,可以根據(jù)服務(wù)器情況選擇一種配置方式。
HOST 一般是ip地址,也可以是主機名,這個主機名字只要能用ping hostname通就行,一般在客戶端系統(tǒng)的host文件上配好主機名和ip地址的映射關(guān)系。
ORT 標準是1521,根據(jù)服務(wù)器端的監(jiān)聽端口而定。S
ERVICE_NAME 就是數(shù)據(jù)庫的服務(wù)名,用system用戶登陸后,sqlplus> show parameter service_name命令查看。
這個配置文件平時大家都用得比較多,一般人都會,相信不會有太大問題。
認識listener.ora
tnslsnr進程是監(jiān)聽、并接受遠程連接數(shù)據(jù)庫請求的監(jiān)聽進程,listener.ora是tnslsnr進程的配置文件,監(jiān)聽的參數(shù)都是從該配置文件中讀取。
該文件位于服務(wù)端,如果只安裝oracle客戶端,一般不存在這個文件。
如果你只需要在本地連接數(shù)據(jù)庫,不接受遠程連接,那么也不需要啟動tnslsnr進程,也不需要去維護listener.ora文件。
啟動監(jiān)聽進程的命令,在命令模式下,執(zhí)行l(wèi)snrctl start命令就啟動了監(jiān)聽進程tnslsnr。
監(jiān)聽可以有多個,也就是說,可以同時監(jiān)聽多個oracle實例,可以在listener.ora中定義多個監(jiān)聽器進行監(jiān)聽。
下面給出一個簡單的示例
listener.ora中的內(nèi)容:
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定義了監(jiān)聽器的兩個監(jiān)聽名字,和這兩個監(jiān)聽器監(jiān)聽的參數(shù):ip,port等。
2). SID_LIST_LISTENER_CSB,SID_LIST_LISTENER_CSA定義了兩個監(jiān)聽服務(wù),服務(wù)名字格式SID_LIST_<lsnrname>,lsnrname就是上面兩個監(jiān)聽器的名字,指定了這個服務(wù)將會接受的服務(wù)將提交給那個監(jiān)聽器;監(jiān)聽的實例名zjdevcsb,zjdevcsa是在tnsnames.ora中需要指定的SERVICE_NAME參數(shù)對應(yīng)。
詳細的參數(shù)說明可以查看示例的listener.ora文件。
啟動數(shù)據(jù)庫
先說一下數(shù)據(jù)庫的相關(guān)定義術(shù)語
數(shù)據(jù)庫 是指在物理磁盤上的文件數(shù)據(jù),就是表空間文件的集合,只能有一個,并唯一;就像類的定義。
實例 是加載數(shù)據(jù)庫文件的一個服務(wù),或者進程。對同一個數(shù)據(jù)庫,可以有多個實例,比如rac模式,多個實例都是加載同一份物理數(shù)據(jù)。
oracle用戶登錄主機:
1) 啟動數(shù)據(jù)庫實例
首先執(zhí)行命令sqlplus "/ as sysdba"用數(shù)據(jù)庫系統(tǒng)管理員角色登錄,然后執(zhí)行startup啟動數(shù)據(jù)庫實例,關(guān)閉數(shù)據(jù)庫實例執(zhí)行用shutdown命令。如果不需要從遠程連接數(shù)據(jù)庫,那么你就可以在本機登錄數(shù)據(jù)庫了。執(zhí)行sqlplus username/password就可以正確登錄數(shù)據(jù)庫。
2) 監(jiān)聽
啟動監(jiān)聽,執(zhí)行命令lsnrctl start,可以用lsnrctl status查看監(jiān)聽狀態(tài),如果監(jiān)聽成功啟動,那么就可以在遠程連接數(shù)據(jù)庫了,執(zhí)行命令sqlplus [email=username/password@tnsname]username/password@tnsname[/email];
關(guān)閉監(jiān)聽,執(zhí)行命令lsnrctl stop。
遠程連接數(shù)據(jù)庫
當你執(zhí)行命令sqlplus [email=username/password@tnsname]username/password@tnsname[/email]的時,一般處理過程如下:
1) 查詢sqlnet.ora看看名稱的解析方式,發(fā)現(xiàn)是TNSNAME,或者hostname。
2) 則查詢tnsnames.ora文件,從里邊找tnsname的記錄,并且找到主機名,端口和service_name。
3) 如果listener進程沒有問題的話,建立與listener進程的連接。
4) 根據(jù)不同的服務(wù)器模式如專用服務(wù)器模式或者共享服務(wù)器模式,listener采取接下去的動作。默認是專用服務(wù)器模式,沒有問題的話客戶端就連接上了數(shù)據(jù)庫的server process。
5) 這時候網(wǎng)絡(luò)連接已經(jīng)建立,listener進程的歷史使命也就完成了。
如果在連接數(shù)據(jù)庫的時候,出現(xiàn)什么錯誤,可以按照上面的順序查找相應(yīng)的配置,解決問題。
幾種連接數(shù)據(jù)庫用到的命令形式
sqlplus "/ as sysdba" 這是典型的操作系統(tǒng)認證,不需要listener進程,數(shù)據(jù)庫即使不可用也可以登錄。
sqlplus username/password 不需要listener進程,登錄本機數(shù)據(jù)庫,數(shù)據(jù)庫實例啟動即可。
sqlplus [email=username/password@tnsname]username/password@tnsname[/email]需要listener進程,最常見的遠程登錄模式,需要啟動數(shù)據(jù)庫實例和listener進程。
本文涉及的相關(guān)術(shù)語
Db_domain:定義一個數(shù)據(jù)庫所在的域,該域的命名同互聯(lián)網(wǎng)的’域’沒有任何關(guān)系,只是數(shù)據(jù)庫管理員為了更好的管理分布式數(shù)據(jù)庫而根據(jù)實際情況決定的。當然為了管理方便,可以將其等于互聯(lián)網(wǎng)的域。
Global_name:對一個數(shù)據(jù)庫(Oracle database)的唯一標識,oracle建議用此種方法命令數(shù)據(jù)庫。該值是在創(chuàng)建數(shù)據(jù)庫是決定的,缺省值為Db_name. Db_domain。在以后對參數(shù)文件中Db_name與Db_domain參數(shù)的任何修改不影響Global_name的值,如果要修改 Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令進行修改,然后修改相應(yīng)參數(shù)。
Service_name:該參數(shù)是oracle8i新引進的。在8i以前,我們用SID來表示標識數(shù)據(jù)庫的一個實例,但是在Oracle的并行環(huán)境中,一個數(shù)據(jù)庫對應(yīng)多個實例,這樣就需要多個網(wǎng)絡(luò)服務(wù)名,設(shè)置繁瑣。為了方便并行環(huán)境中的設(shè)置,引進了Service_name參數(shù),該參數(shù)對應(yīng)一個數(shù)據(jù)庫,而不是一個實例,而且該參數(shù)有許多其它的好處。該參數(shù)的缺省值為Db_name. Db_domain,即等于Global_name。一個數(shù)據(jù)庫可以對應(yīng)多個Service_name,以便實現(xiàn)更靈活的配置。該參數(shù)與SID沒有直接關(guān)系,即不必Service name 必須與SID一樣。

轉(zhuǎn)載于:https://www.cnblogs.com/jiechn/archive/2012/12/22/2829511.html

總結(jié)

以上是生活随笔為你收集整理的Oracle配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。