oracle的三種備份方式「數據庫數據備份與恢復」

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

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

二、啟動控制文件的自動備份

RMAN>configure controlfile autobackup on;

RMAN>show controlfile autobackup ;(驗證)

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

三、全庫備份

3.1最簡單的全庫備份

RMAN>backup database;

RMAN>list backup;(驗證)

RMAN>list backup summary;(驗證)

四、腳本備份

4.1查看linux系統oracle用戶的環境變量,從而知道需要備份數據庫的名稱和實例

$ cat /home/oracle/.bash_profile

主要看ORACLE_SID=orcl

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

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權限。

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用
Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

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增量備份腳本

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

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。

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

一、恢復dbf文件

前提條件是Oracle數據庫的初始化spfile文件,控制文件、重組日誌文件、歸檔日誌、備份都可以正常使用。

現在先刪除dbf文件。

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

1、關閉數據庫,再重新數據庫,進入數據庫

1.1 $ sqlplul / as sysdba

SQL>shutdown immediate(無法正常關閉,原因是沒有數據庫文件)

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

SQL>shutdown abort(強制關閉)

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

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

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

1.3恢復

$ rman target/

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

Oracle數據庫沒有處於open狀態,這是因為數據庫找不到數據文件,所以目前的數據庫處於mount狀態。

1.3.1 還原文件

RMAN> restore database;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

1.3.2驗證

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

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

1.3.3繼續恢複數據

RMAN> recover database;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

1.3.4打開數據庫的open狀態

RMAN> sql ‘alter database open’;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

恢復完成,下面退出oracle數據庫的rman環境,重新進入數據庫。

[oracle@shell ~]$ sqlplus / as sysdba

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

SQL> select instance_name,status from v$instance;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

查看重做日誌文件是否為原來的重做日誌文件

SQL> archive log list;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

由上圖顯示,數據庫的重做日誌的序號沒有從1開始,證明還是原來的重做日誌。數據庫進行了完全恢復。

恢復成功後,最好立刻備份數據。

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用
Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

二、重做日誌文件損壞的恢復

2.1確定數據庫的備份狀態

必須是oracle用戶,執行rman target/

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

查看數據庫備份信息

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用
Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

2.2刪除重做日誌文件

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

2.3重做日誌

$sqlplus / as sysdba

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

SQL> alter system switch logfile;

數據庫會報錯

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

這裡第一行主要出現

ORA-01034: ORACLE not available的錯誤

此時可以重新啟動到mount狀態

SQL> startup mount;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

繼續恢復

SQL> alter database open resetlogs;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

SQL> select * from v$log;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

SQL> alter database open resetlogs;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

第一行出現錯誤,ORA-01139:RESETLOGS選項僅在不完全數據庫恢復後有效。

SQL> recover database until time ‘2021-06-16 09:09:09’;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

完成介質恢復。把數據恢復到6月19日9點09分09秒。

SQL> alter database open resetlogs;

數據庫已經更改

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

SQL> shutdown

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

數據庫已經關閉。

已經卸載數據庫。

ORACLE例程已經關閉。

SQL> startup

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

ORACLE實例已經啟動。

數據庫裝載完畢。

數據庫已經打開。

SQL> select instance_name,status from v$instance;

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

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

Oracle數據庫的備份與恢復,實用易學簡單,轉發收藏備用

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/274275.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:12
下一篇 2024-12-17 14:12

相關推薦

發表回復

登錄後才能評論