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 <DIR> .
2006-08-16 14:14 <DIR> ..
2006-08-16 14:14 <DIR> ora10gR2
0 個文件 0 字節
3 個目錄 941,744,128 可用字節
我的數據文件位於D:oradata下:
D:>dir d:oradata
驅動器 D 中的卷是 PRIVAT
卷的序列號是 94B0-FD3B
d:oradata 的目錄
2006-08-16 14:25 <DIR> .
2006-08-16 14:25 <DIR> ..
2005-09-12 16:40 <DIR> flash_recovery_area
2005-09-12 16:40 <DIR> 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