備份與恢復

1、oracle的故障類型:語句故障、用戶進程故障、實例故障、介質故障
2、備份類型:1)根據物理與邏輯分物理備份(備份物理文件)和邏輯備份(備份表等邏輯組件)
2)根據備份策略分:完全備份、增量備份、差異備份
3、恢復分類:實例恢復、介質恢復(分完全和不完全恢復)。
4、rman:恢復管理器:
組件:目標數據庫target(需要備份的數據庫)、服務器會話、rman資料庫、恢復目錄catalog、mml(磁帶備份的媒體管理器)、快閃恢復區、輔助數據庫。
步驟:創建恢復目錄、註冊目標數據庫到恢復目錄、配置通道、備份與恢復
注意事項:1)目標數據庫必須配置爲歸檔模式 2)備份使用backup命令,還原使用restore(重建文件)和recover(同步恢復)兩個命令
5、數據泵邏輯備份:
導出數據:導出文件後綴爲.dmp,命令expdp,可以導出庫、表空間、表、用戶模式。
導入數據:恢復數據,命令impdp
6、閃回技術:從任何邏輯錯誤中快速恢復。
包括:閃回查詢、閃回版本查詢、閃回事務查詢、閃回數據庫、閃回刪除、閃回表。
需要設置閃回恢復區,可以基於scn和時間點閃回。
閃回數據庫:需要在歸檔模式下、需要建立閃回恢復區
閃回表:需要啓動row movement特性,
閃回刪除:需要啓動回收站(默認啓動),清楚回收站用purge命令。
閃回表和刪除不能用sys用戶。
實驗命令:
1、rman物理備份,備份整個數據庫所有物理文件
sql>shutdown immediate ---在sql中執行
startup mount
alter database archivelog ---設置數據庫爲歸檔日誌模式
alter database open;
$rman target sys/oracle11g ---在linux命令行中進入rman模式
rman>backup database ---備份整個數據庫所有文件
rman>shutdown immediate ---關閉數據庫
此時改名user01表空間文件
rman>startup mount
restore database; ---恢復數據庫,完成後應該可以看到user01恢復回來了
recover database;
alter database open;
2、用expdp和impdp導入導出邏輯對象實現邏輯備份。
sql>host mkdir '/opt/oracle/backup'; ---創建本地目錄用於存儲備份文件
create directory dump_dir as '/opt/oracle/backup'; ---指定操作目錄名並與本地目錄綁定
解鎖scott用戶並設置connect,resource權限
grant read,write on directory dump_dir to scott; ---授予scott用戶操作dump_dir的權限
$expdp scott/密碼 directory=dump_dir dumpfile=scotttab.dmp tables=emp,dept ---在linux命令行導出
導出完成後可以刪除scott的emp表,並驗證表已經刪除
$impdp scott/密碼 directory=dump_dir dumpfile=scotttab.dmp tables=emp,dept ---在linux命令行導入
導入完成後查看scott的emp表,確保可查詢到
3、使用flashback閃回技術
1)閃回數據庫
sql>startup mount
alter database flashback on; ---打開閃回日誌功能
alter database open;
set time on; ---顯示系統時間
刪除scott用戶的表emp,再次關閉數據庫並裝載
flashback database to timestamp to_timestamp('2017-6-10 10:40:25','yyyy-mm-dd hh24:mi:ss');
---將數據庫閃回到設定的時間(刪除前的時間),查看emp表恢復是否成功
alter database open resetlogs;
2)閃回表:必須使用普通用戶,sys用戶禁止閃回表,使用scott用戶操作
sql>alter table dept enable row movement;
插入或者刪除dept表的數據,查詢操作成功
sql> flashback table dept to timestamp to_timestamp('2017-6-10 10:40:25','yyyy-mm-dd hh24:mi:ss'));
驗證閃回成功
3)閃回刪除:可恢復drop table語句刪除的表,利用的是回收站功能,默認啓用,不支持sys用戶
sql>drop table emp;
select object_name,original_name,type from user_recyclebin; ---查看回收站
flashback table emp to before drop; ---恢復刪除的emp表
4)閃回查詢:可以查詢舊數據也可以恢復到舊數據
sql>update scott.emp set sal=2000 where empno=7844; ---改變emp表的值
commit;
select from scott.emp ---查當前值
select
from scott.emp as of timestamp to_timestamp('2017-6-10 10:40:25','yyyy-mm-dd hh24:mi:ss'));
---查過去時間點的值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章