UNIX和WINDOWS2000上的ORACLE的差異 PartII
2024-08-29 13:49:25
供稿:網友
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鍵值下。
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。在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,在兩個平臺上都不支持。