[Oracle] UNIX与Windows 2000上Oracle的差异(II)
日期:19-Dec-2003
出處:http://www.dbanotes.net
翻譯:Fenng
?
數據庫啟動與關閉
在 Windows2000 上數據庫可以通過啟動相關的服務打開。通過控制面板的服務選項或者是通過命令行模式,如: 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\SOFTWARE\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 | 指明數據庫關閉模式 A (abort ), I (immediate) , N(normal) 。 如果你不設定這個參數的話,默認的模式是 I (immediate) 。 |
| ORA_SID_SHUTDOWN_TIMEOUT | 在一個 SID 停止前等待的最大時間。 |
操作系統認證
OS 認證在兩個平臺間是相似的,參數文件中設定 os_authent_prefix 參數,創建用戶都標記為 externally 。在 Windows2000 中創建用戶要指定大寫的域名并且用戶名要在 " " 中,否則不起作用。如果你在注冊表中把 OSAUTH_PREFIX_DOMAIN 設定成 FALSE 的話,你可以忽略掉域。客戶機和服務器的機器還需要在 sqlnet.ora 中包含 sqlnet.authentication_services=(nts) 這一行。
在 Windows 2000 中,可以允許一個域用戶登陸到一個遠程 pc 上,無需提供額外的密碼就可以連接到數據庫中。 參見 [2 Kelly 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 操作系統 | ||||
| ? | 數據庫名長度 | SID名字長度 | 數據庫名長度 | SID 名字長度 | ||
| 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 | Unix |
| ORACLE_BASE = D:\oracle | 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 | Unix |
| ORACLE_HOME = D:\oracle\ora817 | 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\sqlplus\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 | 各種腳本,只有在你選擇相應的選項的時候才會生成。 |
遠程掛接(mount)的文件系統,如 UNIX 上的 NFS 和 Windows 2000 上 UNC ,在兩個平臺上都不支持。
轉載于:https://www.cnblogs.com/ZeroTiny/p/6122684.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的[Oracle] UNIX与Windows 2000上Oracle的差异(II)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 添加sudo权限
- 下一篇: java信息管理系统总结_java实现科