您當(dāng)前所在位置:
首頁(yè) →
數(shù)據(jù)庫(kù) →
Oracle →
oracle FAQ之備份與恢復(fù)
oracle FAQ之備份與恢復(fù)
時(shí)間:2015-06-28 00:00:00
來源:IT貓撲網(wǎng)
作者:網(wǎng)管聯(lián)盟
我要評(píng)論(0)
- [Q]如何開啟/關(guān)閉歸檔
[A]如果開啟歸檔,請(qǐng)保證log_archive_start=true開啟自動(dòng)歸檔,否則只能手工歸檔,如果是關(guān)閉了歸檔,則設(shè)置該參數(shù)為false
注意:如果是OPS/RAC環(huán)境,需要先把parallel_server = true注釋掉,然后執(zhí)行如下步驟,最后用這個(gè)參數(shù)重新啟動(dòng)
1、開啟歸檔
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
歸檔信息可以通過如下語(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以上版本,保證歸檔的最小間隔不超過n秒
設(shè)置Archive_lag_target = n
單位:秒 范圍:0~7200
[Q]不同版本怎么導(dǎo)出/導(dǎo)入
[A]導(dǎo)出用低版本,導(dǎo)入用當(dāng)前版本
如果版本跨越太大,需要用到中間版本過渡
[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)建控制文件的腳本可以通過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è)表空間的操作下來就可以了。
[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ù)文件,但是沒有備份,怎么樣打開數(shù)據(jù)庫(kù)
[A]如果沒有備份只能是刪除這個(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ù)文件,沒有備份但是有該數(shù)據(jù)文件創(chuàng)建以來的歸檔怎么恢復(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來創(chuàng)建一個(gè)新的日志文件
如果該日志還沒有歸檔,則需要用
Alter database clear unarchived logfile group n
2、如果是當(dāng)前日志損壞,一般不能clear,則可能意味著丟失數(shù)據(jù)
如果有備份,可以采用備份進(jìn)行不完全恢復(fù)
如果沒有備份,可能只能用_allow_resetlogs_corruption=true來進(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;
}關(guān)鍵詞標(biāo)簽:恢復(fù),備份,文件,datab
相關(guān)閱讀
熱門文章
Oracle中使用alter table來增加,刪除,修改列的語(yǔ)法
oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例
誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件
為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行
oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例
Oracle中使用alter table來增加,刪除,修改列的語(yǔ)法
ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句
ORACLE和SQL語(yǔ)法區(qū)別歸納(1)
oracle grant 授權(quán)語(yǔ)句
ORACLE修改IP地址后如何能夠使用
如何加速Oracle大批量數(shù)據(jù)處理
Oracle刪除表的幾種方法