Oradim工具的用法

47328983發表於2011-12-07
1、什麼是oradim
=============
ORADIM工具是Oracle在Windows上的一個命令列工具,用於手工進行Oracle服務的建立、修改、刪除等工作。ORADIM的使用很簡單,通過幫助檔案可以看到常用的命令示例,此處不再贅述。

ORADIM在資料庫恢復中也常被用到,很多朋友都問過這樣的問題:在Windows上,如果系統崩潰了,可能資料庫軟體丟掉了,但是資料檔案、控制檔案、日誌檔案等都還在,該怎樣來恢復Oracle資料庫?

其實過程很簡單,通常只要按原來的目錄結構重新安裝Oracle軟體,然後通過ORADIM工具重建服務,就可以啟動例項、載入資料庫(當然相關的引數檔案和口令檔案等需要在$ORACLE_HOME\database目錄存在)。

來看以下過程,通過ORADIM建立一個服務後,例項會隨之啟動:

C:\>oradim -new -sid eygle

例項已建立。

用net命令可以檢視系統啟動了哪些服務,看到Oracle的服務已經啟動:

C:\>net start

已經啟動以下 Windows 服務:

...............

   OracleServiceeygle

   Plug and Play

   Print Spooler

命令成功完成。

如果你的系統裝了一些UNIX增強工具,那麼可以通過grep過濾一下:

C:\>net start |grep Oracle

   OracleServiceeygle

使用ORADIM工具後,會在$ORACLE_HOME\database目錄下生成一個日誌檔案。


2、Oradim工具的用法
================
建立例程:
-NEW -SID sid | -SRVC 服務 [-INTPWD 口令] [-MAXUSERS 數量] [-STARTMODE a|m] [-PFILE 檔案] [-TIMEOUT 秒]
  
編輯例程:
-EDIT -SID sid [-NEWSID sid] [-INTPWD 口令] [-STARTMODE auto|manual] [-PFILE 檔名]     [-SHUTMODE a|i|n]    [-SHUTTYPE srvc|inst|srvc,inst] [-TIMEOUT 秒]
  
刪除例程:
      -DELETE -SID sid | -SRVC 服務名稱

啟動服務和例程:
        -STARTUP -SID sid [-USRPWD 口令] [-STARTTYPE srvc|inst|srvc,inst] [-PFILE 檔名]

關閉服務和例程:
        -SHUTDOWN -SID sid [-USRPWD 口令] [-SHUTTYPE srvc|inst|srvc,inst] [-SHUTMODE a | i | n]

查詢幫助:
        -? | -h | -help

相關說明:
-SID      sid        指定要啟動的例項名稱
-SRVC     服務       指定要啟動的服務名稱
-USRPWD   口令       指定內部使用者的口令,如果作為NT管理員登入,不用此引數
-PFILE    檔名     為例項指明初始化引數檔案,如果引數檔案在Oracle的預設位置,則不需要此命令
-STARTTYPE srvc|inst|srvc,inst  表示要啟動什么srvc—只啟動服務inst—啟動例項,服務必須已經啟動並開始工作了srvc,inst —服務和例項都啟動
-SHUTTYPE srvc|inst|srvc,inst   表示要終止什么,引數選項同上
-STARTMODE a|m   表示啟動例項所使用的模式a—auto方式(自動)m—manual方式(手動)
-SHUTMODE a|i|n   表示終止例項所使用的關閉模式a—abort方式i—immediate方式n—normal方式

例子:
1.在服務裡生成一個新的例項管理服務,啟動方式為手工
       oradim -NEW -SID test -STARTMODE manual -PFILE "D:\Oracle\admin\test\pfile\inittest.ora
       oradim -NEW -SRVC OracleServicetest -STARTMODE manual -PFILE "D:\Oracle\admin\test\pfile\inittest.ora
注:有效的服務名為 “OracleService” 後跟“ SID”
        -SID test 與 -SRVC OracleServicetest 等價
       
2.刪除此例項或服務
  oradim -DELETE -SID test
  oradim -DELETE -SRVC OracleServicetest
3.編輯此例項,啟動方式改為手動
  oradim -EDIT -SID test -STARTMODE manual
4.編輯此例項,啟動方式改為自動
   oradim -EDIT -SID test -STARTMODE auto
5. 啟動test
   oradim -STARTUP -SID test
   oradim -STARTUP -SID test -STARTTYPE srvc,inst
6.只啟動test服務
   oradim -STARTUP -SID test -STARTTYPE srvc
7.只啟動test例項
   oradim -STARTUP -SID test -STARTTYPE inst
8. 關閉test
    oradim -SHUTDOWN -SID test
    oradim -SHUTDOWN -SID test -SHUTTYPE srvc,inst


3、舉一個windows的例子助於理解
===================
在Windows上如果系統崩潰了,資料檔案、控制檔案、日誌檔案等都還在,怎樣來恢復Oracle資料庫?

前幾天重新安裝了系統,正好需要恢復一下資料庫。
如果軟體也損失了,那麼需要重新安裝一下資料庫軟體,以恢復Windows相關環境變數等資訊。

很多人抱怨我的新書很少關於Windows的內容,實際上,Windows和Linux/Unix上的操作沒有什麼不同,Windows本身就是一個仿Unix的系統。
那麼好吧,我還是用一個系列的文章介紹一下我所使用的Windows系統,以及我所認為的資料庫系統無關性。

大家可以跟隨我看一下這樣一個過程。
首先開啟一個cmd命令列視窗。
開始->執行->cmd

我的Oracle軟體安裝在D:oracle :

D:>dir oracle
驅動器 D 中的卷是 PRIVAT
卷的序列號是 94B0-FD3B

D:oracle 的目錄

2006-08-16  14:14              .
2006-08-16  14:14              ..
2006-08-16  14:14              ora10gR2
               0 個檔案              0 位元組
               3 個目錄    941,744,128 可用位元組


我的資料檔案位於D:oradata下:

D:>dir d:oradata
驅動器 D 中的卷是 PRIVAT
卷的序列號是 94B0-FD3B

d:oradata 的目錄

2006-08-16  14:25              .
2006-08-16  14:25              ..
2005-09-12  16:40              flash_recovery_area
2005-09-12  16:40              EYGLE
               0 個檔案              0 位元組
               4 個目錄    941,744,128 可用位元組


現在讓我們用oradim建立一個例項,實際上也就是建立一個Windows服務:

C:>oradim -new -sid eygle
例項已建立。

我們用net命令可以檢視系統啟動了哪些服務,我們看到Oracle的服務已經啟動:

C:>net start
已經啟動以下 Windows 服務:

...............
   O&O Defrag
   OracleServiceeygle
   Plug and Play
   Print Spooler
...............

命令成功完成。


如果你的系統裝了一些Unix增強工具,那麼可以通過grep過濾一下:

C:>net start |grep Oracle
   OracleServiceeygle

Unix命令工具可以在Sourceforge (http://sourceforge.net/projects/gnuwin32/) 下載.

此時我們就可以通過啟動例項,掛接原有資料庫,啟動Oracle資料庫了。當然你可能還有一些其他工作需要完成,比如重建口令檔案等。

如果你想刪除這個服務,那麼也很簡單:

C:>oradim -delete -sid eygle
例項已刪除。

當然做好備份仍然是最重要的,我見過有的企業將檔案分散在很多邏輯分割槽上,結果隨系統崩潰丟失了部分檔案,損失也是相當慘重的。

在Linux/Unix上不需要服務來啟動例項,也就不存在這樣類似的操作。不過在命令列操作,一切都是類似的。

系列文章參考:
http://www.eygle.com/archives/2006/08/oracle10g_on_windows.html

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

相關文章