一.有資料檔案、控制檔案和記錄檔的備份
1.伺服器重裝了作業系統,oracle也重裝了。如果重裝的oracle和以前損壞的資料庫是一模一樣的結構,那麼此時的恢複是比較簡單的。
1)刪除掉建立資料庫的所有資料檔案、控制檔案和記錄檔。Copy原資料庫的資料檔案、控制檔案和記錄檔到對應目錄下。
2)
Cmd>sqlplus /nolog
Sql>conn as sysdba
使用者名稱:system
密碼:(此處密碼為新建立資料庫的密碼)
Sql>shutdown immediate
Sql>startup nomount
Sql>alter database mount
此時看資料庫是不是能mount起來,有時會提示沒有口令檔案PWDdemo.ora檔案找不到。查看對應的目錄(database下)會發現該檔案是存在的。此時需要注意,該口令檔案是新安裝資料庫後建立執行個體時產生的口令檔案,不是以前所用資料庫的口令檔案,而現在,我們是用以前資料庫的控制檔案和資料檔案來開啟以前的資料庫,所以此時需要重新建立一個口令檔案。
Sql>shutdown immediate
Sql>host orapwd file=c:/oracle9i/database/PWDdemo.ora password=oracle
Entries=10 (放在database 目錄下)
Sql>startup nomount
Sql>alter database mount
Sql>alter database open
開啟資料庫
2.如果新資料庫的安裝目錄和原有資料庫的目錄不一樣,那麼此時可以重建控制檔案來開啟資料庫。因為原控制檔案中記錄的資料檔案地址和現有的資料檔案位置不一樣。此時和下面第二中情況一樣。當然,此時也可以建立和原資料庫一樣的目錄結構(前提是要記得原資料庫的目錄結構),需要注意的就是參數檔案中記錄的控制檔案位置和控制檔案中記錄的資料檔案位置。
說明:我們需要清楚資料庫在開啟的三個階段中,需要讀取的檔案
Sql>startup nomount (此時讀取參數檔案)
Sql>alter database mount (根據參數檔案中記錄的控制檔案地址,去讀取控制檔案)
Sql>alter database open (根據控制檔案中記錄的資料檔案地址,讀取資料檔案,開啟資料庫)
二.只有資料檔案備份,沒有控制檔案和記錄檔
由於只有資料檔案備份,沒有控制檔案和記錄檔,此時只能採用重建控制檔案來恢複資料庫。以下通過兩中方法來介紹如何通過重建控制檔案來進行資料庫的恢複。
1)僅安裝資料庫軟體,通過建立oracle服務,引用資料檔案來建立一個執行個體。下面以執行個體名為demo為例進行說明。
1.建立儲存demo相關檔案的目錄。即::各類檔案的存放地址。
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.建立初始化參數檔案(pfile)
此處pfile檔案可以從其他能正常啟動並執行資料庫上copy一個過來進行修改。(判斷其他正常啟動並執行資料庫使用的是pfile還是spfile,如是pfile可以直接copy,如是spfile,則可根據spfile建立一個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.建立oracle服務和口令檔案
C:/documents and settings/oradim — new —sid demo —intpwd oracle
4.配置監聽和服務
用net manager 進行配置(demo執行個體的配置)
5.複製資料檔案備份到指定的目錄下。此處為c:/demo/oradata/demo
6.重建controlfile
C:/Documents and Settings/hefan>sqlplus /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: 未安裝資料庫
ORACLE 常式已經關閉。
SQL> startup nomount file= c:/demo/pfile/initdemo.ora
ORACLE 常式已經啟動。
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
控制檔案已建立
Controlfile.sql內容如下:(此處也可以直接在sql>下輸入以下內容進行建立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
說明:此時沒有記錄檔,所以只能進行reserlogs,如果是有logfile,則此處不需要resetlogs,noresetlogs就可以
7.恢複資料庫
SQL> recover database using backup controlfile until cancel;
ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ????
ORA-00289: ??: C:/ORACLE9I/RDBMS/ARC00005.001
ORA-00280: ?? 523637 ???? 1 ???? # 5 ???
指定日誌: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介質恢複已取消。
SQL> recover database using backup controlfile until cancel;
ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ????
ORA-00289: ??: C:/ORACLE9I/RDBMS/ARC00005.001
ORA-00280: ?? 523637 ???? 1 ???? # 5 ???
指定日誌: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介質恢複已取消。
SQL> alter database open resetlogs;
資料庫已更改。
Resetlog後要進行資料庫的全備,以前的備份不可用。
2)安裝資料庫,建立一個執行個體,用備份的資料檔案代替新建立執行個體的資料檔案。
1.刪除安裝目錄下所有的datafile、comtrolfile、logfile。(oradata目錄下的檔案)
2.Copy備份的資料檔案到oradata目錄下
3.重建控制檔案
C:/Documents and Settings/hefan>sqlplus /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: 未安裝資料庫
ORACLE 常式已經關閉。
SQL> startup nomount
ORACLE 常式已經啟動。
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
控制檔案已建立
4.恢複資料庫
SQL> recover database using backup controlfile until cancel;
ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ????
ORA-00289: ??: C:/ORACLE9I/RDBMS/ARC00005.001
ORA-00280: ?? 523637 ???? 1 ???? # 5 ???
指定日誌: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介質恢複已取消。
SQL> recover database using backup controlfile until cancel;
ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ????
ORA-00289: ??: C:/ORACLE9I/RDBMS/ARC00005.001
ORA-00280: ?? 523637 ???? 1 ???? # 5 ???
指定日誌: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介質恢複已取消。
SQL> alter database open resetlogs;
資料庫已更改。
進行資料庫的全備份,resetlogs後以前的備份不可以用。
說明:此處建立執行個體的作用就是不需要建立參數檔案、oracle服務。(建立執行個體時,這些都已經建立好了,此時只需要用備份的資料檔案代替新建立執行個體的資料檔案)。