Oracle資料庫非常強大,有其自己的備份與恢復機制,並且細分,只要配置合理,完全可以保證資料庫的完整,免去運維人員的後顧之憂。
Oracle資料庫使用RMAN備份,需要把資料庫的非歸檔模式改成歸檔模式。
資料庫的備份
一、更改資料庫的歸檔模式需要重新啟動資料庫,在mount模式下修改(三種啟動模式nomount—mount— open)。
具體步驟如下:
1、進入資料庫後,關閉資料庫
SQL>shutdown immediate
2、啟動資料庫到mount狀態
SQL>startup mount
3、改變資料庫為歸檔模式
SQL>alter database archivelog;(歸檔改為非歸檔語句為alter database noarchivelog;)
4、驗證方式
SQL>alter database open;(打開資料庫)
SQL>archive log list

二、啟動控制文件的自動備份
RMAN>configure controlfile autobackup on;
RMAN>show controlfile autobackup ;(驗證)

三、全庫備份
3.1最簡單的全庫備份
RMAN>backup database;
RMAN>list backup;(驗證)
RMAN>list backup summary;(驗證)
四、腳本備份
4.1查看linux系統oracle用戶的環境變數,從而知道需要備份資料庫的名稱和實例
$ cat /home/oracle/.bash_profile
主要看ORACLE_SID=orcl

4.2在RMAN中設置冗餘數(備份的次數,根據需要,一次備份的數據大小,備份的磁碟空間大小來決定)。
$ rman target/
RMAN>configure retenticn policy to redundancy 10;(這裡設置為10次)
4.3規劃備份的目錄
/usr/local/oradata/orcl/RmanBackup,如果沒有,創建即可,這裡需要注意這個文件夾必須屬於oracle用戶。
4.4全量備份腳本如下圖
這個0級全量備份腳本需要在oracle用戶下執行,並且需要把腳本chmod為775許可權。


export ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
rman target/ << EOF_RMAN
run{
allocate channel c1 type disk;
backup incremental level 0 tag ‘db0’ format
‘/usr/local/oradata/orcl/RmanBackup/db0_%d_%U’ database include current controlfile;
delete noprompt obsolete;
release channel c1;
}
#end
把以上腳本放置到crontab中,可以設置自動執行。
4.3增量備份腳本

export ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
rman target/ << EOF_RMAN
run{
allocate channel c1 type disk;
backup incremental level 1 tag ‘db1’ format
/usr/local/oradata/orcl/RmanBackup/db1_%d_%T_%s’ database include current controlfile;
delete noprompt obsolete;
release channel c1;
}
#end
Oracle資料庫的恢復(一)
Oracle資料庫的恢復需要在oracle用戶下執行,恢復內容包括控制文件*.ctl,重組日誌文件*.log,資料庫文件*.dbf。

一、恢復dbf文件
前提條件是Oracle資料庫的初始化spfile文件,控制文件、重組日誌文件、歸檔日誌、備份都可以正常使用。
現在先刪除dbf文件。

1、關閉資料庫,再重新資料庫,進入資料庫
1.1 $ sqlplul / as sysdba
SQL>shutdown immediate(無法正常關閉,原因是沒有資料庫文件)

SQL>shutdown abort(強制關閉)

1.2 SQL>startup(無法正常啟動,原因是沒有資料庫文件)

1.3恢復
$ rman target/

Oracle資料庫沒有處於open狀態,這是因為資料庫找不到數據文件,所以目前的資料庫處於mount狀態。
1.3.1 還原文件
RMAN> restore database;

1.3.2驗證
進入存放dbf文件的目錄查看,dfb文件已經被恢復。

1.3.3繼續恢複數據
RMAN> recover database;

1.3.4打開資料庫的open狀態
RMAN> sql ‘alter database open’;

恢復完成,下面退出oracle資料庫的rman環境,重新進入資料庫。
[oracle@shell ~]$ sqlplus / as sysdba

SQL> select instance_name,status from v$instance;

查看重做日誌文件是否為原來的重做日誌文件
SQL> archive log list;

由上圖顯示,資料庫的重做日誌的序號沒有從1開始,證明還是原來的重做日誌。資料庫進行了完全恢復。
恢復成功後,最好立刻備份數據。


二、重做日誌文件損壞的恢復
2.1確定資料庫的備份狀態
必須是oracle用戶,執行rman target/

查看資料庫備份信息


2.2刪除重做日誌文件

2.3重做日誌
$sqlplus / as sysdba

SQL> alter system switch logfile;
資料庫會報錯

這裡第一行主要出現
ORA-01034: ORACLE not available的錯誤
此時可以重新啟動到mount狀態
SQL> startup mount;

繼續恢復
SQL> alter database open resetlogs;

SQL> select * from v$log;

SQL> alter database open resetlogs;

第一行出現錯誤,ORA-01139:RESETLOGS選項僅在不完全資料庫恢復後有效。
SQL> recover database until time ‘2021-06-16 09:09:09’;

完成介質恢復。把數據恢復到6月19日9點09分09秒。
SQL> alter database open resetlogs;
資料庫已經更改

SQL> shutdown

資料庫已經關閉。
已經卸載資料庫。
ORACLE常式已經關閉。
SQL> startup

ORACLE實例已經啟動。
資料庫裝載完畢。
資料庫已經打開。
SQL> select instance_name,status from v$instance;

查看文件.log文件在/usr/local/oradata/orcl目錄下

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274275.html
微信掃一掃
支付寶掃一掃