任何軟件都有可能在有意或無意的情況下被重新安裝,如Oracle重裝后數(shù)據(jù)庫怎么恢復(fù)呢?情況發(fā)生在你是無意的情況下!ORACLE數(shù)據(jù)庫恢復(fù)的方法我們經(jīng)常會用到,下面就為您介紹重裝系統(tǒng)后ORACLE數(shù)據(jù)庫恢復(fù)的方法,希望對您學(xué)習(xí)ORACLE數(shù)據(jù)庫恢復(fù)方面能有所幫助。\x0d\x0a\x0d\x0a我的電腦突然掛了,不得不重裝系統(tǒng),不過我的ORACLE裝在了D盤,所有的文件都還在,我相信一定能夠恢復(fù),直到搞定工作,我才開始整我的數(shù)據(jù)庫,花了兩天時間,終于恢復(fù)了,慶祝一下,同時總結(jié)一下,希望有遇到同樣問題的朋友能夠快速搞定此類問題\x0d\x0a\x0d\x0a第一種:\x0d\x0a\x0d\x0a首先,備份數(shù)據(jù)庫(X:\oracle\oradata)下的數(shù)據(jù)文件,重新命名即可(否則裝數(shù)據(jù)庫的時候會提示sid已存在)。重新安裝數(shù)據(jù)\x0d\x0a庫,當(dāng)然數(shù)據(jù)庫的名字就是你要恢復(fù)的名字。安裝完成后,打開控制面板,停止oracle的服務(wù)。把(X:\oracle\oradata)下新生成的文件\x0d\x0a改名,把原先目錄下的文件恢復(fù)名字。再重新啟動oracle服務(wù)和監(jiān)聽。用sys/as dba \x0d\x0a登陸數(shù)據(jù)庫,可能會提示權(quán)限不夠(ora-01031)修改(X:\oracle\ora92\network\admin \x0d\x0a)文件夾下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES= \x0d\x0a(NTS),增加權(quán)限。登陸進(jìn)去后,打開table提示不能打開。打開common頁,執(zhí)行命令alert database \x0d\x0aopen;這時再刷新table,發(fā)現(xiàn)原先的表可以打開了。恢復(fù)成功了。再用原先數(shù)據(jù)庫的普通用戶進(jìn)入。發(fā)現(xiàn)一切正常。至此,大功告成。\x0d\x0a\x0d\x0a第二種:\x0d\x0a\x0d\x0a1、首先,將原來的ORACLE文件夾改名,原來的路徑是D:/oracle.我暫時改成D:/oracle_old.找來ORACLE(我用\x0d\x0a的是ORACLE 9I)安裝光盤,將ORACLE安裝在原來安裝的目錄下,這樣恢復(fù)起來更加方便,主要是注冊表的內(nèi)容不用修改。\x0d\x0a\x0d\x0a2、安裝完了之后,系統(tǒng)中又有一個可以使用的ORACLE了。這個時候要做的就是將原來的文件和數(shù)據(jù)恢復(fù)過來。第一步,先關(guān)閉ORACLE的所\x0d\x0a有已經(jīng)啟動的項目,在"服務(wù)"里面逐一關(guān)閉。然后,將安裝目錄改名。我現(xiàn)在用的是D:/oracle.改成D:/oracle_new.再將D:\x0d\x0a/oracle_old改成D:/oracle. \x0d\x0a這樣理論上說從物理層面恢復(fù)了ORACLE了。但是我們發(fā)現(xiàn),現(xiàn)在還不能啟動ORACLE的監(jiān)聽程序和服務(wù)程序。我們還要從邏輯上解決。\x0d\x0a\x0d\x0a3、在dos環(huán)境下執(zhí)行一個刪除命令:oradim -delete -sid mm,其中mm為創(chuàng)建oracle時候創(chuàng)建的實例 \x0d\x0a建議執(zhí)行這個命令后重新啟動機(jī)器,重啟后就可以建立和原來實例名相同的實例。當(dāng)然你懶,不重新啟動也可以,但是你的實例名就不能和原來的一樣了。\x0d\x0a\x0d\x0a4、在dos環(huán)境下執(zhí)行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "創(chuàng)建一個新的實例,其中 "mm"為新數(shù)據(jù)庫的名稱。\x0d\x0a\x0d\x0a5、啟動服務(wù),先打開數(shù)據(jù)庫,然后可以用以前的用戶名和密碼登陸進(jìn)去。 \x0d\x0a要補(bǔ)充的是,一般的ORACLE數(shù)據(jù)庫的監(jiān)聽程序都是用電腦的名稱來識別地址的,而不是127.0.0.1或者localhost.所以,如果我們安裝系\x0d\x0a統(tǒng)的時候用的是不同的電腦名稱(比如我原來用的是wm_mm.重新安裝后用的是wenming_mm),那么我們還有一個工作要做,就是修改文件 \x0d\x0alistener.ora.將里面的相關(guān)的東西改過來就可以了。\x0d\x0a\x0d\x0a需要耐心、細(xì)心,可能在一步里有一個細(xì)小的差別就會出些古怪的錯誤提示,有時需要根據(jù)錯誤提示采取策略,總之原理是,先裝一個一模一樣的ORACLE,安裝目錄、數(shù)據(jù)庫名稱都一樣,這樣保證注冊表里不用更改;再覆蓋物理文件,最后重新實例化,打開數(shù)據(jù)庫就可以進(jìn)去了。
站在用戶的角度思考問題,與客戶深入溝通,找到武鳴網(wǎng)站設(shè)計與武鳴網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋武鳴地區(qū)。
一。有數(shù)據(jù)文件、控制文件和日志文件的備份1.服務(wù)器重裝了操作系統(tǒng),oracle也重裝了。如果重裝的oracle和以前損壞的數(shù)據(jù)庫是一模一樣的結(jié)構(gòu),那么此時的恢復(fù)是比較簡單的。
1)刪除掉新建數(shù)據(jù)庫的所有數(shù)據(jù)文件、控制文件和日志文件。Copy原數(shù)據(jù)庫的數(shù)據(jù)文件、控制文件和日志文件到對應(yīng)目錄下。
2)
Cmdsqlplus /nolog
Sqlconn as sysdba
用戶名:system
密碼:(此處密碼為新創(chuàng)建數(shù)據(jù)庫的密碼)
Sqlshutdown immediate
Sqlstartup nomount
Sqlalter database mount
此時看數(shù)據(jù)庫是不是能mount起來,有時會提示沒有口令文件PWDdemo.ora文件找不到。查看對應(yīng)的目錄(database下)會發(fā)現(xiàn)該文件是存在的。此時需要注意,該口令文件是新安裝數(shù)據(jù)庫后創(chuàng)建實例時生成的口令文件,不是以前所用數(shù)據(jù)庫的口令文件,而現(xiàn)在,我們是用以前數(shù)據(jù)庫的控制文件和數(shù)據(jù)文件來打開以前的數(shù)據(jù)庫,所以此時需要重新創(chuàng)建一個口令文件。
Sqlshutdown immediate
Sqlhost orapwd file=c:/oracle9i/database/PWDdemo.ora password=oracle
Entries=10 (放在database 目錄下)
Sqlstartup nomount
Sqlalter database mount
Sqlalter database open
打開數(shù)據(jù)庫
2.如果新數(shù)據(jù)庫的安裝目錄和原有數(shù)據(jù)庫的目錄不一樣,那么此時可以重建控制文件來打開數(shù)據(jù)庫。因為原控制文件中記錄的數(shù)據(jù)文件地址和現(xiàn)有的數(shù)據(jù)文件位置不一樣。此時和下面第二中情況一樣。當(dāng)然,此時也可以創(chuàng)建和原數(shù)據(jù)庫一樣的目錄結(jié)構(gòu)(前提是要記得原數(shù)據(jù)庫的目錄結(jié)構(gòu)),需要注意的就是參數(shù)文件中記錄的控制文件位置和控制文件中記錄的數(shù)據(jù)文件位置。
說明:我們需要清楚數(shù)據(jù)庫在打開的三個階段中,需要讀取的文件
Sqlstartup nomount (此時讀取參數(shù)文件)
Sqlalter database mount (根據(jù)參數(shù)文件中記錄的控制文件地址,去讀取控制文件)
Sqlalter database open (根據(jù)控制文件中記錄的數(shù)據(jù)文件地址,讀取數(shù)據(jù)文件,打開數(shù)據(jù)庫)
二。只有數(shù)據(jù)文件備份,沒有控制文件和日志文件
由于只有數(shù)據(jù)文件備份,沒有控制文件和日志文件,此時只能采用重建控制文件來恢復(fù)數(shù)據(jù)庫。以下通過兩中方法來介紹如何通過重建控制文件來進(jìn)行數(shù)據(jù)庫的恢復(fù)。
1)僅安裝數(shù)據(jù)庫軟件,通過新建oracle服務(wù),引用數(shù)據(jù)文件來創(chuàng)建一個實例。下面以實例名為demo為例進(jìn)行說明。
1.創(chuàng)建存儲demo相關(guān)文件的目錄。即::各類文件的存放地址。
C:/documents and settings/mkdir c:/demo
C:/documents and settings/mkdir c:/demo/bdump
C:/documents and settings/mkdir c:/demo/udump
C:/documents and settings/mkdir c:/demo/cdump
C:/documents and settings/mkdir c:/demo/pfile
C:/documents and settings/mkdir c:/demo/create
C:/documents and settings/mkdir c:/demo/oradata
C:/documents and settings/mkdir c:/demo/oradata/demo (放置datafile、logfile、controlfile)
2.創(chuàng)建初始化參數(shù)文件(pfile)
此處pfile文件可以從其他能正常運(yùn)行的數(shù)據(jù)庫上copy一個過來進(jìn)行修改。(判斷其他正常運(yùn)行的數(shù)據(jù)庫使用的是pfile還是spfile,如是pfile可以直接copy,如是spfile,則可根據(jù)spfile創(chuàng)建一個pfile文件)
Copy過來的pfile需要修改的地方:
background_dump_dest=c:/demo/bdump
core_dump_dest=c:/demo/cdump
user_dump_dest=c:/demo/udump
control_files=("c:/demo/oradata/demo/CONTROL01.CTL", "c:/demo/oradata/demo/CONTROL02.CTL", "c:/demo/oradata/demo/CONTROL03.CTL")
dispatchers="(PROTOCOL=TCP) (SERVICE=demoXDB)"(實例名)
dispatchers="(PROTOCOL=TCP) (SERVICE=demoXDB)"
db_domain=""
db_name=demo
3.創(chuàng)建oracle服務(wù)和口令文件
C:/documents and settings/oradim — new —sid demo —intpwd oracle
4.配置監(jiān)聽和服務(wù)
用net manager 進(jìn)行配置(demo實例的配置)
5.復(fù)制數(shù)據(jù)文件備份到指定的目錄下。此處為c:/demo/oradata/demo
6.重建controlfile
C:/Documents and Settings/hefansqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 12月 29 10:57:07 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL conn as sysdba
請輸入用戶名: system
請輸入口令:
已連接。
SQL shutdown immediate
ORA-01507: 未安裝數(shù)據(jù)庫
ORACLE 例程已經(jīng)關(guān)閉。
SQL startup nomount file= c:/demo/pfile/initdemo.ora
ORACLE 例程已經(jīng)啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL @d:/controlfile.sql
控制文件已創(chuàng)建
Controlfile.sql內(nèi)容如下:(此處也可以直接在sql下輸入以下內(nèi)容進(jìn)行創(chuàng)建controlfile)
CREATE CONTROLFILE REUSE DATABASE "demo" RESETLOGS NOARCHIVELOG
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'c:/demo/oradata/demo/redo01.log' SIZE 50M,
GROUP 2 'c:/demo/oradata/demo/redo02.log' SIZE 50M,
GROUP 3 'c:/demo/oradata/demo/redo03.log' SIZE 50M
DATAFILE
'c:/demo/oradata/demo/system01.dbf',
'c:/demo/oradata/demo/odm01.dbf',
'c:/demo/oradata/demo/indx01.dbf',
'c:/demo/oradata/demo/tools01.dbf',
'c:/demo/oradata/demo/undotbs01.dbf',
'c:/demo/oradata/demo/users01.dbf',
'c:/demo/oradata/demo/xdb01.dbf',
'c:/demo/oradata/demo/cwmlite01.dbf',
'c:/demo/oradata/demo/drsys01.dbf',
'c:/demo/oradata/demo/example01.dbf'
CHARACTER SET zhs16gbk
說明:此時沒有日志文件,所以只能進(jìn)行reserlogs,如果是有l(wèi)ogfile,則此處不需要resetlogs,noresetlogs就可以
1、一種方法是重裝數(shù)據(jù)庫后用IMP來導(dǎo)入原來的數(shù)據(jù),但使用這種方法的前提是你有以前數(shù)據(jù)的備份,并且這種方法還有許多不足的地方,如備份過舊,可能會丟失許多數(shù)據(jù)、導(dǎo)入數(shù)據(jù)太長等。
一般情況下我們可以采用重用原來的數(shù)據(jù)庫的方法來恢復(fù)。在講步驟前先說說這種方法的原理。
數(shù) 據(jù)庫與實例對應(yīng),當(dāng)數(shù)據(jù)庫服務(wù)啟動后,我們可以用SQLPLUS "/AS SYSDBA"方法連接到一個空閑的例程,當(dāng)執(zhí)行startup啟動數(shù)據(jù)庫時,首先會在%ORACLE_HOME%/database下找當(dāng)前SID對應(yīng) 的參數(shù)文件(PFILE或者SPFILE)和密碼文件,然后啟動例程;接著根據(jù)參數(shù)文件記錄的信息找到控制文件,讀取控制文件的信息,這就是mount數(shù) 據(jù)庫了;最終根據(jù)控制文件的信息打開數(shù)據(jù)庫。這個過程相當(dāng)于對數(shù)據(jù)庫著了一次冷備份的恢復(fù)。
下面的具體步驟:(我們假設(shè)原庫的所有相關(guān)文件都存在)1、安裝數(shù)據(jù)庫軟件只需安裝同版本的數(shù)據(jù)庫軟件即可,不需要創(chuàng)建數(shù)據(jù)庫。最好安裝在和原來數(shù)據(jù)庫同樣的%ORACLE_HOME%下,省得還要修改參數(shù)文件路徑等。(直接覆蓋原來的oracle即可)再次強(qiáng)調(diào),只安裝軟件,不創(chuàng)建數(shù)據(jù)庫,否則將數(shù)據(jù)庫軟件安裝在同樣的目錄下舊的部分?jǐn)?shù)據(jù)文件會被覆蓋,這樣數(shù)據(jù)庫也不能被恢復(fù)了。
2、新建一個實例在cmd窗口執(zhí)行oradim -new -sid xinhai注意,這個SID名稱最好與你以前的SID一樣,否則在啟動的數(shù)據(jù)需要指明pfile,并且需要重建密碼文件,比較麻煩。(當(dāng)然,如果你就不想用原來的SID也可以,把參數(shù)文件、密碼文件的名稱都改成與新SID對應(yīng)的名稱)。
3、啟動數(shù)據(jù)庫做完以上兩步,就可以啟動數(shù)據(jù)庫了。用net start 檢查oracle服務(wù)是否已經(jīng)啟動,如果oracle服務(wù)沒有啟動,則在cmd下運(yùn)行如下命令:net start oracleservicexinhai然后設(shè)定必要的環(huán)境變量,在cmd窗口運(yùn)行set ORACLE_SID=xinhai
接著連接數(shù)據(jù)庫sqlplus "/as sysdba"startup
如果正常的話,數(shù)據(jù)庫應(yīng)該就能起來了
4、啟動監(jiān)聽lsnrctl start
5、后續(xù)工作經(jīng)過以上幾步后,基本上就可以使用oracle了,但是使用起來有點(diǎn)不方便,如每次在cmd中啟動數(shù)據(jù)庫都需要先SET ORACLE_SID、在本機(jī)連接數(shù)據(jù)庫也都需要加上@TNSNAME等。我們可以修改注冊表,添加ORACLE_SID的信息,避免這些麻煩。
在注冊表的HKEY_LOCAL_MACHINESOFTWAREORACLE下新建字符串值,名稱為ORACLE_SID,值為xinhai。也可以將以下內(nèi)容保持成一個后綴名為reg的文件(文件名隨便起),然后雙擊,即可將信息導(dǎo)入到注冊表中。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREORACLE]"ORACLE_SID"="xinhai"
注意,以上步驟都是在%ORACLE_HOME%、%ORACLE_SID%都與原庫一樣的情況下討論的,雖然%ORACLE_HOME%和%ORACLE_SID%可以與原庫不一樣,但為了減少麻煩和出錯的幾率,建議不要改變則兩個值。
6、如果系統(tǒng)啟動時 還不能啟動oracle就增加以下
編輯一個oracle_startup.bat文檔 內(nèi)容為:
set sid=xinhailsnrctl starte:/oracle_startuplog.logsqlplus /nolog @e:oracle_startupsql.txte:/ oracle_startuplog.log
在e盤下增加文檔oracle_startuplog.log,內(nèi)容為:
connect / as sysdba;startup nomount;alter database mount;alter database open;quit
然后把oracle_startup.bat放到系統(tǒng)啟動項里面,這樣每次啟動系統(tǒng)時oracle就自動啟動了。
不知道你重裝前都備份了哪些文件,只要你那五種文件都有備份,恢復(fù)起來不是很難。主要?dú)w納為以下幾步:
1.將原來的oracle文件夾重命名,比如oracle_old;然后重新安裝oracle
到原目錄,即跟重裝操作系統(tǒng)前同一目錄,假設(shè)為d:\oracle;安裝過程選擇"只安裝軟件"
即不創(chuàng)建數(shù)據(jù)庫,這樣可以節(jié)省很多時間.
注:恢復(fù)必須要有以下文件
a、初始化參數(shù)文件INIT.ORA
b、所有數(shù)據(jù)文件 .dbf
c、所有重做日志文件(聯(lián)機(jī)日志、歸檔日志)redo
d、所有控制文件 crtl
e、internal密碼文件
2.配置listener和tns:
運(yùn)行l(wèi)snrctl start,即可在創(chuàng)建監(jiān)聽服務(wù);
使用net manager配置tns,但不要測試(數(shù)據(jù)庫沒有起來肯定測試不通過的);
3.將oradata文件夾拷貝回原目錄(如d:oracleoradata);
4.將spfile拷貝回原目錄(如d:oracleora92database);
5.創(chuàng)建實例服務(wù):
oradim -new -sid orcl -startmode auto
6.重建口令文件:或是復(fù)制原來的pwdorcl.ora yhy9為實例名
orapwd file=d:oracleora92database password=orcl entries=5
7.重啟監(jiān)聽和實例.
8.如果數(shù)據(jù)庫沒有啟動就進(jìn)入sqlplus手工打開數(shù)據(jù)庫
sqlplus /nolog
sqlconn sys/orcl@orcl as sysdba
sqlstartup;
一定要有提示成功打開,否則重復(fù)以上辦法解決。
9.如果數(shù)據(jù)庫順利打開,整個實例恢復(fù)過程即完成.
經(jīng)驗證通過以上操作,完全可以恢復(fù)成功。需要的是耐心、細(xì)心。
如果中間有報錯,則一步步根據(jù)報錯到網(wǎng)上查找解決辦法。
很多網(wǎng)友在把某個數(shù)據(jù)庫實例的REDO01~03.LOG三個重做日志刪掉后,會出現(xiàn)無法正常登陸數(shù)據(jù)庫的現(xiàn)象,下面的示例是具體的恢復(fù)過程,希望能為大家解決難題: 一: c:/sqlplus /nolog 二: sqlconnect /@instancename as sysdba;三: startup mount; --啟動實例,安裝數(shù)據(jù)庫,但不打開數(shù)據(jù)庫,可以開始操作控制文件、日志文件、數(shù)據(jù)文件等。四: select * from v$logfile; --察看Redo文件的信息 五; select * from v$log;--察看Redo日志的狀態(tài),一般有unused,current,clearing,clearing-。六:非當(dāng)前(current)的未歸檔日志文件恢復(fù)alter database clear logfile group N; --N就是日志組的順序號。 歸檔日志文件恢復(fù):alter database clear logfile unarchived group N;七;當(dāng)前日志文件用上述方法不能恢復(fù)的話使用recover database until cancel。
對于這個問題,不是一句,兩句能說清的。從你敘述的問題來看,能看出你對oracle的框架非常混亂、模糊。
建議你系統(tǒng)的看一下oracle體系結(jié)構(gòu)的內(nèi)容,英文好,可以直接看官方文檔的concept,不好的話可以找一些基礎(chǔ)的書籍看
這里,跟你簡單說一下oracle的恢復(fù)問題
oracle的恢復(fù)包括兩種:1、實例恢復(fù);2、介質(zhì)恢復(fù)
1、實例恢復(fù):并不需要dba來接入,你只要保證undo、redo完整,oracle能自行完成實例恢復(fù)。
2、介質(zhì)恢復(fù):就是物理文件損壞一類的恢復(fù),或者物理數(shù)據(jù)的丟失,需要介質(zhì)恢復(fù)。對于介質(zhì)恢復(fù)的方法,需要看你當(dāng)初是如何進(jìn)行備份的。
至于日志:分為聯(lián)機(jī)在線日志和歸檔日志。聯(lián)機(jī)在線日志不可以隨便刪除。但是都不絕對。
而歸檔日志也一樣,也不能隨便刪除,但是如果對于恢復(fù)數(shù)據(jù)庫有用,那么你就不能刪除它
總之,這里三言兩語是說不清這個問題的。你想徹底弄明白這樣的問題,必須自己把oracle基礎(chǔ)的東西掌握了才可以。
當(dāng)前題目:oracle壞了怎么恢復(fù) oracle升級失敗怎么還原
新聞來源:http://vcdvsql.cn/article40/hhheho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航、做網(wǎng)站、品牌網(wǎng)站制作、外貿(mào)建站、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)