UNIX和WINDOWS2000上的ORACLE的差異 PartII
最後更新:2017-02-28
來源:互聯網
上載者:User
oracle|unix|window
Ian Adam ,SAIC Ltd
David Stien,SAIC Ltd
翻譯:Fenng
PartII
資料庫啟動與關閉
在Windows 2000上資料庫可以通過啟動相關的服務開啟。通過控制台的服務選項或者是通過命令列模式,如:
net start OracleServiceatei就可以開啟相關服務。這依賴於一些註冊表參數,我們在後面討論。停止相關的服務,例如:net stop OracleServiceatei可以關閉一個資料庫。
在所有的平台上,ORACLE8i執行個體都可以從服務管理員(或者SQL*Plus!)中通過startup命令啟動。在Unix中,這個命令啟動後台進程並且開啟資料庫。它還產生了一個Unix特定檔案,叫做$ORACLE_HOME/dbs/lk<DBNAME>,這是個MOUNT鎖檔案[6 Metalink, 2000]。這會阻止兩個執行個體mount在同一資料庫上,當不使用並行伺服器的模式下,要使用不同的ORACLE_SID。原來這是個0長度檔案,不過現在包含文本'DO NOT DELETE THIS FILE!'。不要試圖通過查看這個檔案來得知是否資料庫是可用的,它不是很準確的。在Windows 2000中,startup命令並不啟動ORACLE服務,不過,如果服務已經啟動並執行話,這將開啟資料庫。
類似的,服務管理員Server Manager的shutdown命令在任何平台上都會關掉資料庫,不過在Windows 2000上它並不停掉服務。很有可能的情況就是ORACLE服務被啟動但是資料庫卻關掉了。
UNIX上的資料庫的自動啟動與關閉
在 Unix上,ORACLE 提供了dbstart和dbshut 指令碼以供使用。在Linux
中ORACLE檢測檔案/etc/oratab 來決定哪個資料庫自動的啟動/關閉。在 Solaris (和一些其他版本的Unix)中,檢查/var/opt/oracle/oratab檔案。要注意:8.1.6 版本的dbstart有個bug,在8.1.7中已經被修複,察看[7 Metalink, 2000]有詳細說明。
在Linux上,作為root使用者,在/etc/rc.d/init.d目錄中建立一個一個名為dbora的檔案。這個檔案將會檢查參數是否是 'start' 或者 'stop' 並且適當的執行 dbstart/dbshut;通常也從這個指令碼啟動listener 。再產生兩個符號聯結
/etc/rc.d/rc2.d/S99dbora 和
/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_MACHINE OFTWARE\ORACLE\HOMEID索引值下。
識別碼從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。在Windows2000中建立使用者要指定大寫的網域名稱並且使用者名稱要在 "" 中,否則不起作用。如果你在註冊表中把 OSAUTH_PREFIX_DOMAIN 設定成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都可以監聽不同版本的資料庫。在win2000中,
在LISTENER.ORA中不需要ORACLE_HOME參數(在UNIX中要使用到的),因為每個SID在SERVER中是唯一的。listener可以從註冊表中得到正確的ORACLE_HOME。
ORACLE8i 有個特性叫伺服器註冊,pmon自動對listener註冊資訊。這意味著Net8 listener可以無需在listener.ora檔案中設定就可以監聽一個資料庫。不過這樣做的話,Enterprise Manager要直到啟動後才可以串連到資料庫。所以這個例子不能用來啟動一個遠端執行個體。通常最好在listener.ora中設定所有的執行個體以避免衝突,尤其在一個有多位DBA的網站中,,可以避免我們提到的 Enterprise Manager 問題。
加長的SID名字
Windows NT上的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:\ORACLE\Ora817\bin\oradim -new -sid ATEI -intpwd man -startmode manual -pfile
"D:\ORACLE\admin\atei\pfile\initatei.ora"
第二次對oradim的調用把服務更改為自動啟動:
D:\ORACLE\Ora817\bin\oradim -edit -sid atei -startmode auto
可以用這些檔案作為建立其它資料庫的模版。若你不使用上面建議的方式建立資料庫的話,Database Creation Assistant 產生的這些檔案和目錄沒什麼大用處。在使用這些指令碼建立額外的資料庫之前,這些檔案和目錄不得實現建立。特別註明一下,指令碼假定一個密碼檔案已經存在,密碼檔案可以用orapwd命令預建立[2 H Kelly III, 2000]。
Database Creation Assistant建立的目錄:
Windows 2000
ORACLE_BASE = D:\oracle
Unix
ORACLE_BASE = /db01/app/oracle
ORACLE_BASE\oradata\atei
$ORACLE_BASE/oradata/eighti
ORACLE_BASE\oradata\atei\archive
$ORACLE_BASE/oradata/eighti/archive
ORACLE_BASE\admin\atei
$ORACLE_BASE/admin/eighti
還有這些子檔案夾
sadhoc bdump cdump create exp pfile udump
通過Database Creation Assistant建立/改動的檔案:
Windows 2000
ORACLE_HOME = D:\oracle\ora817
Unix
ORACLE_HOME = /db01/app/oracle/product/8.1.7
ORACLE_HOME\database\PWDatei.ora
$ORACLE_HOME/dbs/orapweighti.ora
ORACLE_BASE\admin\atei\pfile\initatei.ora
$ORACLE_BASE/admin/eighti/pfile/initeighti.ora
ORACLE_HOME\database\initatei.ora
包含一行
IFILE='d:\oracle\admin\atei\pfile\initatei.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:\oracle\ora817 qlplus\admin\help\helpbld.sql helpus.sql
ateialterTablespace.sql
eightialterTablespace.sh
為SYSTEM使用者更改預設的和臨時的資料表空間
ateireplicate.sql
ateijava.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,在兩個平台上都不支援。