UNIX和WINDOWS2000上的ORACLE的差異 PartII (轉)

amyz發表於2007-11-05
UNIX和WINDOWS2000上的ORACLE的差異 PartII (轉)[@more@]

 

Ian Adam ,SAIC Ltd
David Stien,SAIC Ltd

翻譯:Fenng
PartII

啟動與關閉

在 2000上資料庫可以透過啟動相關的服務開啟。透過控制皮膚的服務選項或者是透過命令列,如:

.NET start Serviceatei就可以開啟相關服務。這依賴於一些登錄檔引數,我們在後面討論。停止相關的服務,例如:net stop OracleServiceatei可以關閉一個資料庫。

在所有的平臺上,例項都可以從服務管理器(或者*Plus!)中透過startup命令啟動。在中,這個命令啟動後臺程式並且開啟資料庫。它還生成了一個Unix特定,叫做$ORACLE_HOME/s/lk,這是個MOUNT鎖檔案[6 Metalink, 2000]。這會阻止兩個例項mount在同一資料庫上,當不使用並行的模式下,要使用不同的ORACLE_SID。原來這是個0長度檔案,不過現在包含文字'DO NOT DELETE THIS FILE!'。不要試圖透過檢視這個檔案來得知是否資料庫是可用的,它不是很準確的。在中,startup命令並不啟動ORACLE服務,不過,如果服務已經執行的話,這將開啟資料庫。

類似的,服務管理器Server Manager的shutdown命令在任何平臺上都會關掉資料庫,不過在Windows 2000上它並不停掉服務。很有可能的情況就是ORACLE服務被啟動但是資料庫卻關掉了。


UNIX上的資料庫的自動啟動與關閉

在 Unix上,ORACLE 提供了dbstart和dbshut 指令碼以供使用。在
中ORACLE檢測檔案/etc/oratab 來決定哪個資料庫自動的啟動/關閉。在 (和一些其他版本的Unix)中,檢查/var/opt/oracle/oratab檔案。要注意:8.1.6 版本的dbstart有個,在8.1.7中已經被修復,察看[7 Metalink, 2000]有詳細說明。

在Linux上,作為,在/etc/rc.d/init.d目錄中建立一個一個名為dbora的檔案。這個檔案將會檢查引數是否是  'start' 或者 'stop' 並且適當的 dbstart/dbshut;通常也從這個指令碼啟動listener 。再生成兩個符號聯接
/etc/rc.d/rc2.d/S99db和
/etc/rc.d/rc0.d/K10dbora。資料庫在執行級2(多使用者)時透過/etc/rc.d/rc2.d/S99dbora
啟動,在關閉到執行級0的時候透過/etc/rc.d/rc0.d/K10dbora關閉資料庫
。在Solaris上,這個指令碼的在/etc/init.d中而不是在/etc/rc.d/init.d.

要注意預設的dbshut執行了一個正常(normal)的關閉操作。在Unix 中可以透過編輯$ORACLE_HOME/bin/dbshut中的這一行來改變資料庫的關閉模式。


shutdown
修改成
shutdown immediate

如果啟動一個已經執行的例項,dbstart 還會執行一個 shutdown abort 。在dbstart script指令碼的頂部警告說 'It should ONLY be executed as part of the system boot procedure'。這個指令碼要常被複制、修改,這樣在其它的時候使用才能足夠。


WINDOWS 2000上的資料庫自動的啟動與關閉

在以前的版本(8i)中,當oracle的啟動被一個額外的服務ORACLEStartSID處理,伺服器的啟動和關閉的時候ORACLE不能被自動的乾淨的關掉。從ORACLE8i開始,stop/start功能成為了主要的ORACLE服務,並透過登錄檔控制。注意當ORADIM用於建立或者修改例項的時候,自動的在登錄檔中設定這些值。這些設定在HKEY_LOCAL_MACHINESOFTWAREORACLEHOMEID鍵值下。

ID 號從0開始,每有一個額外的ORACLE home遞增。

-----------------------------------------------------------------
引數  描述
-----------------------------------------------------------------
ORA_SID_AUTOSTART  設定為TRUE的時候
             (預設值),ORACLEServiceSID啟動的時候啟動資料
              庫。
ORA_SID_PFILE   設定INIT.ORA引數檔案的全路徑。
ORA_SHUTDOWN   當設定為TRUE的時候,在當前任何ORACLE
              home下的任何資料庫將shutdown。
ORA_SID_SHUTDOWN  設定為TRUE的時候,關閉標記SID值的ORACLE8i資料庫。
-----------------------------------------------------------------
如果
SHUTDOWN引數設定為FALSE,停掉ORACLEServiceSID將會abort的方式關閉例項,下次啟動的
時候要進行例項恢復。


下面的可選引數可以在登錄檔中設為合適的值

-----------------------------------------------------------------
引數  描述
-----------------------------------------------------------------ORA_SID_SHUTDOWNTYPE  指明資料庫關閉模式Aabort),

 I (immediate), N (normal)。
 如果你不設定這個引數的話,
                預設的模式是 I (immediate)。
ORA_SID_SHUTDOWN_TIMEOUT  在一個SID停止前等待的最大時間。
-----------------------------------------------------------------

 

OS認證在兩個平臺間是相似的,引數檔案中設定os_authent_prefix
引數,建立使用者都標記為externally。在中建立使用者要指定大寫的域名並且使用者名稱要在 "" 中,否則不起作用。如果你在登錄檔中把 OSAUTH_PREFIX_AIN 設定成FALSE的話,你可以忽略掉域。客戶機和伺服器的機器還需要在sqlnet.ora中包含sql net.authentication_services=(nts)這一行。

在 Windows 2000 中,可以允許一個域使用者登陸到一個pc上,無需提供額外的密碼就可以連線到資料庫中。參見[2 K elly III,2000]可以得到詳細內容。


LISTENER

在 Windows 2000上面 listener作為一個服務實現的,所以listener可以透過啟動 ORACLETNSListener 服務來啟動。兩種平臺上listener都可以從lsnrctl命令控制。在Unix上lsnrctl start啟動 listener 程式;在 Windows
2000啟動 ORACLETNSListener 服務就可以。 如果listener第一次啟動的時候沒有ORACLETNSListener服務將建立它。如果從你的中刪除ORACLE的話,listener 服務要手工從登錄檔中刪除。
 
在兩個平臺上的listener都可以不同版本的資料庫。在中,
在LISTENER.ORA中不需要ORACLE_HOME引數(在UNIX中要使用到的),因為每個SID在SERVER中是唯一的。listener可以從登錄檔中得到正確的ORACLE_HOME。

ORACLE有個特性叫伺服器註冊,pmon自動對listener註冊資訊。這意味著Net8 listener可以無需在listener.ora檔案中設定就可以監聽一個資料庫。不過這樣做的話,Enterprise Manager要直到啟動後才可以連線到資料庫。所以這個例子不能用來啟動一個遠端的例項。通常最好在listener.ora中設定所有的例項以避免衝突,尤其在一個有多位的站點中,,可以避免我們提到的 Enterprise Manager 問題。


加長的SID名字

上的ORACLE 7 例項名字有著4個字元長的限制,這可能會產生很晦澀的例項名--慶幸的是在8i中SID名字已經加長了。不過在包括命名服務的幾個場合中使用太長的例項名字也不總是很有用。在Windows 2000上面有個bug,限制了例項名字最長15個字元。

----------------------------------------------------------------
       Unix  NT
----------------------------------------------------------------
     資料庫名  例項名     資料庫名  例項名
----------------------------------------------------------------
ORACLE7  8  8       8  4
ORACLE8  8  8       8      4
ORACLE8i  8  64       8     64
----------------------------------------------------------------


資料庫的建立

當你在過程中的時候選擇建立ORACLE 8i資料庫,資料庫生成助手就會透過ORACLE Universal Installer
自動執行。在安裝後它也可以作為一個單獨的工具手工執行。用它還可以手工的輸入SID代替預設的ORCL,預設的情況下,不在ORACLE_HOME下面建立資料庫,完全遵循OFA的意圖。

建議你執行Database Creation Assistant,不過在最後一頁選擇Save information to a batch file(儲存資訊到一個批處理檔案中),再點選"完成"按鈕。這會產生幾個指令碼。從不同的平臺對比它們的內容很有趣的。在Unix 和
Windows上的內容很相似,除了windows上對oradim的不同。第一次對它的呼叫產生了一個與ORACLE 資料庫相關聯的ORACLE服務:

D:ORACLEOra817binoradim -new -sid ATEI -intpwd man -startmode manual -pfile
"D:ORACLEadminateipfileinitatei.ora"

第二次對oradim的呼叫把服務更改為自動啟動:

D:ORACLEOra817binoradim -edit -sid atei -startmode auto

可以用這些檔案作為建立其它資料庫的模版。若你不使用上面建議的方式建立資料庫的話,Database Creation Assistant 生成的這些檔案和目錄沒什麼大用處。在使用這些指令碼建立額外的資料庫之前,這些檔案和目錄不得實現建立。特別註明一下,指令碼假定一個密碼檔案已經存在,密碼檔案可以用orapwd命令預建立[2 H Kelly III, 2000]。


 

Database Creation Assistant建立的目錄::namespace prefix = o ns = "urn:schemas--com::office" />

Windows 2000

ORACLE_BASE = D:oracle

Unix

ORACLE_BASE = /db01/app/oracle

ORACLE_BASEoradataatei

$ORACLE_BASE/oradata/eighti

ORACLE_BASEoradataateiarchive

$ORACLE_BASE/oradata/eighti/archive

ORACLE_BASEadminatei

$ORACLE_BASE/admin/eighti

還有這些子資料夾

sadhoc  bdump  cdump  create  exp  pfile  udump


 

透過Database Creation Assistant建立/改動的檔案:

Windows 2000

ORACLE_HOME = D:oracleora817

Unix

ORACLE_HOME = /db01/app/oracle/product/8.1.7

ORACLE_HOMEdatabasePWDatei.ora

$ORACLE_HOME/dbs/orapweighti.ora

ORACLE_BASEadminateipfileinitatei.ora

$ORACLE_BASE/admin/eighti/pfile/initeighti.ora

ORACLE_HOMEdatabaseinitatei.ora

包含一行

IFILE='d:oracleadminateipfileinitatei.ora‘

$ORACLE_HOME/dbs/initeighti.ora

符號連結到:

/db01/app/oracle/admin/eighti/pfile/initeighti.ora

新增到 tnsnames.ora的條目

新增到 tnsnames.ora的條目

新增到 listener.ora的條目

新增到 listener.ora的條目

windows沒有相關的操作

新增專案到oratab

透過Database Creation Assistant建立的指令碼:

Windows 2000

Unix

註釋

atei.bat

eighti

呼叫其它指令碼,在Windows上還可以呼叫ORADIM

ateirun.sql

eightirun.sh

包含建立資料庫的語句

ateirun1.sql

eightirun1.sh

建立表空間/ 建立回滾段

不建立系統中的第二個回滾段

N/a

eightirun2.sh

額外的指令碼(如,catproc),
這些在Windows上從ateirun1.sql中執行

ateisqlplus.sql

eightisqlplus.sh

新增 SQL*Plus 幫助

@c:oracleora817sqlplusadminhelphelpbld.sql helpus.sql

ateialterTablespace.sql

eightialterTablespace.sh

為SYSTEM使用者更改預設的和臨時的表空間

 

ateireplicate.sql

atei.sql

ateiordinst.sql

ateiiMedia.sql

ateidrsys.sql

ateicontext.sql

ateispatial1.sql

ateitimeseries.sql

ateivirage.sql

eightireplicate.sh

eightijava.sh

eightiordinst.sh

eightiiMedia.sh

eightidrsys.sh

eighticontext.sh

eightispatial1.sh

eightitimeseries.sh

eightivirage.sh

各種指令碼,只有在你選擇相應的選項的時候才會生成。


遠端掛接的檔案系統,如UNIX上的NFS和Windows 2000上UNC,在兩個平臺上都不支援。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-980885/,如需轉載,請註明出處,否則將追究法律責任。

相關文章