Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)技術(shù)方案
[Q]如何開(kāi)啟/關(guān)閉歸檔
[A]如果開(kāi)啟歸檔,請(qǐng)保證log_archive_start=true開(kāi)啟自動(dòng)歸檔,否則只能手工歸檔,如果是關(guān)閉了歸檔,則設(shè)置該參數(shù)為false
注意:如果是OPS/RAC環(huán)境,需要先把parallel_server = true注釋掉,然后執(zhí)行如下步驟,最后用這個(gè)參數(shù)重新啟動(dòng)
1、開(kāi)啟歸檔
a. 關(guān)閉數(shù)據(jù)庫(kù)shutdown immediate -
b. startup mount
c. alter database archivelog
d. alter database opne
2、禁止歸檔
a. 關(guān)閉數(shù)據(jù)庫(kù)shutdown immediate
b. startup mount
c. alter database noarchivelog
d. alter database open
歸檔信息可以通過(guò)如下語(yǔ)句查看
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination E:\Oracle\ora92\database\archive
Oldest online log sequence 131
Next log sequence to archive 133
Current log sequence 133
[Q]怎樣設(shè)置定時(shí)歸檔
[A]9i以上版本,保證歸檔的最小間隔不超過(guò)n秒
設(shè)置Archive_lag_target = n
單位:秒 范圍:0~7200
[Q]不同版本怎么導(dǎo)出/導(dǎo)入
[A]導(dǎo)出用低版本,導(dǎo)入用當(dāng)前版本
如果版本跨越太大,需要用到中間版本過(guò)渡
[Q]不同的字符集之前怎么導(dǎo)數(shù)據(jù)
[A]a.前條件是保證導(dǎo)出/導(dǎo)入符合其他字符集標(biāo)準(zhǔn),如客戶環(huán)境與數(shù)據(jù)庫(kù)字符集一致。
b.修改dmp文件的2、3字節(jié)為目標(biāo)數(shù)據(jù)庫(kù)的字符集,注意要換成十六進(jìn)制。
參考函數(shù)(以下函數(shù)中的ID是十進(jìn)制的):
nls_charset_name 根據(jù)字符集ID獲得字符集名稱
nls_charset_id 根據(jù)字符集名稱獲得字符集ID
[Q]怎么樣備份控制文件
[A]再線備份為一個(gè)二進(jìn)制的文件
alter database backup controlfile to '$BACKUP_DEPT/controlfile.000' [reuse];
備份為文本文件方式
alter database backup controlfile to trace [resetlogs|noresetlogs];
[Q]控制文件損壞如何恢復(fù)
[A]1、如果是損壞單個(gè)控制文件
只需要關(guān)閉數(shù)據(jù)庫(kù),拷貝一個(gè)好的數(shù)據(jù)文件覆蓋掉壞的數(shù)據(jù)文件即可
或者是修改init.ora文件的相關(guān)部分
2、如果是損失全部控制文件,則需要?jiǎng)?chuàng)建控制文件或從備份恢復(fù)
創(chuàng)建控制文件的腳本可以通過(guò)alter database backup controlfile to trace獲取。
[Q]怎么樣熱備份一個(gè)表空間
[A]Alter tablespace 名稱 begin backup;
host cp 這個(gè)表空間的數(shù)據(jù)文件 目的地;
Alter tablespace 名稱 end backup;
如果是備份多個(gè)表空間或整個(gè)數(shù)據(jù)庫(kù),只需要一個(gè)一個(gè)表空間的操作下來(lái)就可以了。
[Q]怎么快速得到整個(gè)數(shù)據(jù)庫(kù)的熱備腳本
[A]可以寫一段類似的腳本
SQL>set serveroutput on
begin
dbms_output.enable(10000);
for bk_ts in (select t.ts#,t.name from v$tablespace t,v$datafile d where t.ts#=d.ts#) loop
dbms_output.put_line('--'||bk_ts.name);
dbms_output.put_line('alter tablespace '||bk_ts.name||' begin backup;');
for bk_file in (select file#,name from v$datafile where ts#=bk_ts.ts#) loop
dbms_output.put_line('host cp '||bk_file.name||' $BACKUP_DEPT/');
end loop;
dbms_output.put_line('alter tablespace '||bk_ts.name||' end backup;');
end loop;
end;
/
[Q]丟失一個(gè)數(shù)據(jù)文件,但是沒(méi)有備份,怎么樣打開(kāi)數(shù)據(jù)庫(kù)
[A]如果沒(méi)有備份只能是刪除這個(gè)數(shù)據(jù)文件了,會(huì)導(dǎo)致相應(yīng)的數(shù)據(jù)丟失。
SQL>startup mount
--ARCHIVELOG模式命令
SQL>Alter database datafile 'file name' offline;
--NOARCHIVELOG模式命令
SQL>Alter database datafile 'file name' offline drop;
SQLl>Alter database open;
注意:該數(shù)據(jù)文件不能是系統(tǒng)數(shù)據(jù)文件
[Q]丟失一個(gè)數(shù)據(jù)文件,沒(méi)有備份但是有該數(shù)據(jù)文件創(chuàng)建以來(lái)的歸檔怎么恢復(fù)
[A]保證如下條件
a. 不能是系統(tǒng)數(shù)據(jù)文件
b. 不能丟失控制文件
如果滿足以上條件,則
SQL>startup mount
SQL>Alter database create datafile 'file name' as 'file name' size ... reuse;
SQL>recover datafile n; -文件號(hào)
或者
SQL>recover datafile 'file name';
或者
SQL>recover database;
SQL>Alter database open;
[Q]聯(lián)機(jī)日志損壞如何恢復(fù)
[A]1、如果是非當(dāng)前日志而且歸檔,可以使用
Alter database clear logfile group n來(lái)創(chuàng)建一個(gè)新的日志文件
如果該日志還沒(méi)有歸檔,則需要用
Alter database clear unarchived logfile group n
2、如果是當(dāng)前日志損壞,一般不能clear,則可能意味著丟失數(shù)據(jù)
如果有備份,可以采用備份進(jìn)行不完全恢復(fù)
如果沒(méi)有備份,可能只能用_allow_resetlogs_corruption=true來(lái)進(jìn)行強(qiáng)制恢復(fù)了,但是,這樣的方法是不建議的,最好在有Oracle support的指導(dǎo)下進(jìn)行。
[Q]怎么樣在恢復(fù)的時(shí)候移動(dòng)數(shù)據(jù)文件,恢復(fù)到別的地點(diǎn)
[A]給一個(gè)RMAN的例子
run {
set until time 'Jul 01 1999 00:05:00';
allocate channel d1 type disk;
set newname for datafile '/u04/Oracle/prod/sys1prod.dbf'
to '/u02/Oracle/prod/sys1prod.dbf';
set newname for datafile '/u04/Oracle/prod/usr1prod.dbf'
to '/u02/Oracle/prod/usr1prod.dbf';
set newname for datafile '/u04/Oracle/prod/tmp1prod.dbf'
to '/u02/Oracle/prod/tmp1prod.dbf';
restore controlfile to '/u02/Oracle/prod/ctl1prod.ora';
replicate controlfile from '/u02/Oracle/prod/ctl1prod.ora';
restore database;
sql "alter database mount";
switch datafile all;
recover database;
sql "alter database open resetlogs";
release channel d1;
} 本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|