文章詳情頁(yè)
UNIX和WINDOWS2000上的ORACLE的差異 PartII
瀏覽:4日期:2023-11-18 19:42:41
Ian Adam ,SAIC LtdDavid Stien,SAIC Ltd翻譯:Fenng PartII數(shù)據(jù)庫(kù)啟動(dòng)與關(guān)閉在windows 2000上數(shù)據(jù)庫(kù)可以通過啟動(dòng)相關(guān)的服務(wù)打開。通過控制面板的服務(wù)選項(xiàng)或者是通過命令行模式,如: net start OracleServiceatei就可以打開相關(guān)服務(wù)。這依靠于一些注冊(cè)表參數(shù),我們?cè)诤竺嬗懻摗MV瓜嚓P(guān)的服務(wù),例如:net stop OracleServiceatei可以關(guān)閉一個(gè)數(shù)據(jù)庫(kù)。在所有的平臺(tái)上,ORACLE8i實(shí)例都可以從服務(wù)治理器(或者SQL*Plus!)中通過startup命令啟動(dòng)。在Unix中,這個(gè)命令啟動(dòng)后臺(tái)進(jìn)程并且打開數(shù)據(jù)庫(kù)。它還生成了一個(gè)Unix特定文件,叫做$ORACLE_HOME/dbs/lk<DBNAME>,這是個(gè)MOUNT鎖文件[6 Metalink, 2000]。這會(huì)阻止兩個(gè)實(shí)例mount在同一數(shù)據(jù)庫(kù)上,當(dāng)不使用并行服務(wù)器的模式下,要使用不同的ORACLE_SID。原來這是個(gè)0長(zhǎng)度文件,不過現(xiàn)在包含文本'DO NOT DELETE THIS FILE!'。不要試圖通過查看這個(gè)文件來得知是否數(shù)據(jù)庫(kù)是可用的,它不是很準(zhǔn)確的。在Windows 2000中,startup命令并不啟動(dòng)ORACLE服務(wù),不過,假如服務(wù)已經(jīng)運(yùn)行的話,這將打開數(shù)據(jù)庫(kù)。類似的,服務(wù)治理器Server Manager的shutdown命令在任何平臺(tái)上都會(huì)關(guān)掉數(shù)據(jù)庫(kù),不過在Windows 2000上它并不停掉服務(wù)。很有可能的情況就是ORACLE服務(wù)被啟動(dòng)但是數(shù)據(jù)庫(kù)卻關(guān)掉了。UNIX上的數(shù)據(jù)庫(kù)的自動(dòng)啟動(dòng)與關(guān)閉在 Unix上,ORACLE 提供了dbstart和dbshut 腳本以供使用。在Linux 中ORACLE檢測(cè)文件/etc/oratab 來決定哪個(gè)數(shù)據(jù)庫(kù)自動(dòng)的啟動(dòng)/關(guān)閉。在 Solaris (和一些其他版本的Unix)中,檢查/var/opt/oracle/oratab文件。要注重:8.1.6 版本的dbstart有個(gè)bug,在8.1.7中已經(jīng)被修復(fù),察看[7 Metalink, 2000]有具體說明。在Linux上,作為root用戶,在/etc/rc.d/init.d目錄中創(chuàng)建一個(gè)一個(gè)名為dbora的文件。這個(gè)文件將會(huì)檢查參數(shù)是否是'start' 或者 'stop' 并且適當(dāng)?shù)膱?zhí)行 dbstart/dbshut;通常也從這個(gè)腳本啟動(dòng)listener 。再生成兩個(gè)符號(hào)聯(lián)接 /etc/rc.d/rc2.d/S99dbora 和 /etc/rc.d/rc0.d/K10dbora。數(shù)據(jù)庫(kù)在運(yùn)行級(jí)2(多用戶)時(shí)通過/etc/rc.d/rc2.d/S99dbora啟動(dòng),在系統(tǒng)關(guān)閉到運(yùn)行級(jí)0的時(shí)候通過/etc/rc.d/rc0.d/K10dbora關(guān)閉數(shù)據(jù)庫(kù) 。在Solaris上,這個(gè)腳本的在/etc/init.d中而不是在/etc/rc.d/init.d.要注重默認(rèn)的dbshut執(zhí)行了一個(gè)正常(normal)的關(guān)閉操作。在Unix 中可以通過編輯$ORACLE_HOME/bin/dbshut中的這一行來改變數(shù)據(jù)庫(kù)的關(guān)閉模式。把shutdown修改成shutdown immediate假如啟動(dòng)一個(gè)已經(jīng)運(yùn)行的實(shí)例,dbstart 還會(huì)執(zhí)行一個(gè) shutdown abort 。在dbstart script腳本的頂部警告說 'It should ONLY be executed as part of the system boot procedure'。這個(gè)腳本要常被復(fù)制、修改,這樣在其它的時(shí)候使用才能足夠安全。WINDOWS 2000上的數(shù)據(jù)庫(kù)自動(dòng)的啟動(dòng)與關(guān)閉在以前的版本(8i)中,當(dāng)oracle的啟動(dòng)被一個(gè)額外的服務(wù)ORACLEStartSID處理,服務(wù)器的啟動(dòng)和關(guān)閉的時(shí)候ORACLE不能被自動(dòng)的干凈的關(guān)掉。從ORACLE8i開始,stop/start功能成為了主要的ORACLE服務(wù),并通過注冊(cè)表控制。注重當(dāng)ORADIM用于創(chuàng)建或者修改實(shí)例的時(shí)候,自動(dòng)的在注冊(cè)表中設(shè)定這些值。這些設(shè)置在HKEY_LOCAL_MACHINE OFTWAREORACLEHOMEID鍵值下。ID 號(hào)從0開始,每有一個(gè)額外的ORACLE home遞增。-----------------------------------------------------------------參數(shù); 描述-----------------------------------------------------------------ORA_SID_AUTOSTART;;;;設(shè)定為TRUE的時(shí)候 (默認(rèn)值),ORACLEServiceSID啟動(dòng)的時(shí)候啟動(dòng)數(shù)據(jù)庫(kù)。 ORA_SID_PFILE ; 設(shè)定INIT.ORA參數(shù)文件的全路徑。ORA_SHUTDOWN ; 當(dāng)設(shè)定為TRUE的時(shí)候,在當(dāng)前任何ORACLE home下的任何數(shù)據(jù)庫(kù)將shutdown。 ORA_SID_SHUTDOWN;;;設(shè)定為TRUE的時(shí)候,關(guān)閉標(biāo)記SID值的ORACLE8i數(shù)據(jù)庫(kù)。 -----------------------------------------------------------------假如 SHUTDOWN參數(shù)設(shè)定為FALSE,停掉ORACLEServiceSID將會(huì)abort的方式關(guān)閉實(shí)例,下次啟動(dòng)的時(shí)候要進(jìn)行實(shí)例恢復(fù)。下面的可選參數(shù)可以在注冊(cè)表中設(shè)為合適的值-----------------------------------------------------------------參數(shù); 描述-----------------------------------------------------------------ORA_SID_SHUTDOWNTYPE;;;;;;; 指明數(shù)據(jù)庫(kù)關(guān)閉模式Aabort),I (immediate), N (normal)。假如你不設(shè)定這個(gè)參數(shù)的話,默認(rèn)的模式是 I (immediate)。 ORA_SID_SHUTDOWN_TIMEOUT;;;在一個(gè)SID停止前等待的最大時(shí)間。-----------------------------------------------------------------操作系統(tǒng)認(rèn)證OS認(rèn)證在兩個(gè)平臺(tái)間是相似的,參數(shù)文件中設(shè)定os_authent_prefix 參數(shù),創(chuàng)建用戶都標(biāo)記為externally。在Windows2000中創(chuàng)建用戶要指定大寫的域名并且用戶名要在 '' 中,否則不起作用。假如你在注冊(cè)表中把 OSAUTH_PREFIX_DOMAIN 設(shè)定成FALSE的話,你可以忽略掉域。客戶機(jī)和服務(wù)器的機(jī)器還需要在sqlnet.ora中包含sql net.authentication_services=(nts)這一行。在 Windows 2000 中,可以答應(yīng)一個(gè)域用戶登陸到一個(gè)遠(yuǎn)程pc上,無需提供額外的密碼就可以連接到數(shù)據(jù)庫(kù)中。參見[2 K elly III,2000]可以得到具體內(nèi)容。LISTENER 在 Windows 2000上面 listener作為一個(gè)服務(wù)實(shí)現(xiàn)的,所以listener可以通過啟動(dòng) ORACLETNSListener 服務(wù)來啟動(dòng)。兩種平臺(tái)上listener都可以從lsnrctl命令控制。在Unix上lsnrctl start啟動(dòng) listener 進(jìn)程;在 Windows 2000啟動(dòng) ORACLETNSListener 服務(wù)就可以。 假如listener第一次啟動(dòng)的時(shí)候沒有ORACLETNSListener服務(wù)將創(chuàng)建它。假如從你的計(jì)算機(jī)中刪除ORACLE的話,listener 服務(wù)要手工從注冊(cè)表中刪除。在兩個(gè)平臺(tái)上的listener都可以監(jiān)聽不同版本的數(shù)據(jù)庫(kù)。在win2000中, 在LISTENER.ORA中不需要ORACLE_HOME參數(shù)(在UNIX中要使用到的),因?yàn)槊總€(gè)SID在SERVER中是唯一的。listener可以從注冊(cè)表中得到正確的ORACLE_HOME。ORACLE8i 有個(gè)特性叫服務(wù)器注冊(cè),pmon自動(dòng)對(duì)listener注冊(cè)信息。這意味著Net8 listener可以無需在listener.ora文件中設(shè)置就可以監(jiān)聽一個(gè)數(shù)據(jù)庫(kù)。不過這樣做的話,Enterprise Manager要直到啟動(dòng)后才可以連接到數(shù)據(jù)庫(kù)。所以這個(gè)例子不能用來啟動(dòng)一個(gè)遠(yuǎn)程的實(shí)例。通常最好在listener.ora中設(shè)置所有的實(shí)例以避免沖突,尤其在一個(gè)有多位DBA的站點(diǎn)中,,可以避免我們提到的 Enterprise Manager 問題。加長(zhǎng)的SID名字Windows NT上的ORACLE 7 實(shí)例名字有著4個(gè)字符長(zhǎng)的限制,這可能會(huì)產(chǎn)生很晦澀的實(shí)例名--慶幸的是在8i中SID名字已經(jīng)加長(zhǎng)了。 不過在包括命名服務(wù)的幾個(gè)場(chǎng)合中使用太長(zhǎng)的實(shí)例名字也不總是很有用。在Windows 2000上面有個(gè)bug,限制了實(shí)例名字最長(zhǎng)15個(gè)字符。---------------------------------------------------------------- Unix;;;;;NT---------------------------------------------------------------- 數(shù)據(jù)庫(kù)名;實(shí)例名 ;數(shù)據(jù)庫(kù)名;;;實(shí)例名----------------------------------------------------------------ORACLE7;8;;;;;8 8;;;4ORACLE8;8;;;;;8 8;;;;4ORACLE8i;8;;;64 8;;; ;;64----------------------------------------------------------------數(shù)據(jù)庫(kù)的創(chuàng)建當(dāng)你在安裝過程中的時(shí)候選擇創(chuàng)建ORACLE 8i數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)生成助手就會(huì)通過ORACLE Universal Installer 自動(dòng)運(yùn)行。在安裝后它也可以作為一個(gè)單獨(dú)的工具手工運(yùn)行。用它還可以手工的輸入SID代替默認(rèn)的ORCL,默認(rèn)的情況下,不在ORACLE_HOME下面創(chuàng)建數(shù)據(jù)庫(kù),完全遵循OFA的意圖。建議你運(yùn)行Database Creation Assistant,不過在最后一頁(yè)選擇Save information to a batch file(保存信息到一個(gè)批處理文件中),再點(diǎn)擊'完成'按鈕。這會(huì)產(chǎn)生幾個(gè)腳本。從不同的平臺(tái)對(duì)比它們的內(nèi)容很有趣的。在Unix 和 Windows上的內(nèi)容很相似,除了windows上對(duì)oradim的調(diào)用不同。第一次對(duì)它的調(diào)用產(chǎn)生了一個(gè)與ORACLE 數(shù)據(jù)庫(kù)相關(guān)聯(lián)的ORACLE服務(wù):D:ORACLEOra817binoradim -new -sid ATEI -intpwd man -startmode manual -pfile 'D:ORACLEadminateipfileinitatei.ora'第二次對(duì)oradim的調(diào)用把服務(wù)更改為自動(dòng)啟動(dòng):D:ORACLEOra817binoradim -edit -sid atei -startmode auto可以用這些文件作為創(chuàng)建其它數(shù)據(jù)庫(kù)的模版。若你不使用上面建議的方式創(chuàng)建數(shù)據(jù)庫(kù)的話,Database Creation Assistant 生成的這些文件和目錄沒什么大用處。在使用這些腳本創(chuàng)建額外的數(shù)據(jù)庫(kù)之前,這些文件和目錄不得實(shí)現(xiàn)創(chuàng)建。非凡注明一下,腳本假定一個(gè)密碼文件已經(jīng)存在,密碼文件可以用orapwd命令預(yù)創(chuàng)建[2 H Kelly III, 2000]。Database Creation Assistant創(chuàng)建的目錄:Windows 2000 ORACLE_BASE = D:oracle UnixORACLE_BASE = /db01/app/oracleORACLE_BASEoradataatei$ORACLE_BASE/oradata/eightiORACLE_BASEoradataateiarchive$ORACLE_BASE/oradata/eighti/archiveORACLE_BASEadminatei$ORACLE_BASE/admin/eighti還有這些子文件夾sadhoc; bdump; cdump; create; eXP; pfile; udump通過Database Creation Assistant創(chuàng)建/改動(dòng)的文件:Windows 2000 ORACLE_HOME = D:oracleora817UnixORACLE_HOME = /db01/app/oracle/prodUCt/8.1.7ORACLE_HOMEdatabasePWDatei.ora$ORACLE_HOME/dbs/orapweighti.oraORACLE_BASEadminateipfileinitatei.ora$ORACLE_BASE/admin/eighti/pfile/initeighti.oraORACLE_HOMEdatabaseinitatei.ora包含一行IFILE='d:oracleadminateipfileinitatei.ora‘$ORACLE_HOME/dbs/initeighti.ora符號(hào)鏈接到: /db01/app/oracle/admin/eighti/pfile/initeighti.ora添加到 tnsnames.ora的條目添加到 tnsnames.ora的條目添加到 listener.ora的條目添加到 listener.ora的條目windows沒有相關(guān)的操作添加項(xiàng)目到oratab通過Database Creation Assistant創(chuàng)建的腳本:Windows 2000 Unix注釋atei.bateighti調(diào)用其它腳本,在Windows上還可以調(diào)用ORADIM ateirun.sqleightirun.sh包含創(chuàng)建數(shù)據(jù)庫(kù)的語(yǔ)句ateirun1.sqleightirun1.sh創(chuàng)建表空間/ 創(chuàng)建回滾段不創(chuàng)建系統(tǒng)中的第二個(gè)回滾段N/aeightirun2.sh額外的腳本(如,catproc),這些在Windows上從ateirun1.sql中運(yùn)行ateisqlplus.sqleightisqlplus.sh添加 SQL*Plus 幫助@c:oracleora817 qlplusadminhelphelpbld.sql helpus.sqlateialterTablespace.sqleightialterTablespace.sh為SYSTEM用戶更改默認(rèn)的和臨時(shí)的表空間ateireplicate.sqlateiJava.sqlateiordinst.sqlateiiMedia.sqlateidrsys.sqlateicontext.sqlateispatial1.sqlateitimeseries.sqlateivirage.sqleightireplicate.sheightijava.sheightiordinst.sheightiiMedia.sheightidrsys.sheighticontext.sheightispatial1.sheightitimeseries.sheightivirage.sh各種腳本,只有在你選擇相應(yīng)的選項(xiàng)的時(shí)候才會(huì)生成。 遠(yuǎn)程掛接的文件系統(tǒng),如UNIX上的NFS和Windows 2000上UNC,在兩個(gè)平臺(tái)上都不支持。
標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
相關(guān)文章:
排行榜
