[Oracle] UNIX與Windows 2000上Oracle的差異(II)

來源:互聯網
上載者:User
資料庫啟動與關閉

在 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 索引值下。 識別碼從 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 ,在兩個平台上都不支援。

http://www.dbanotes.net/database/oracle_unix_windows_2000_ii.html 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.