日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库备份 恢复

發布時間:2023/12/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库备份 恢复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

臨時表空間恢復

1.建立臨時表空間

SQL> create temporary tablespace temp123 tempfile '/u01/app/oracle/oradata/orcl/temp123.dbf' size 20M;


2.更改為默認

SQL> alter database default temporary tablespace temp123;


3.SQL> drop tablespace temp;(刪除)

==========================================================

日志文件,控制文件恢復


1.刪除2個日志文件

[oracle@sq orcl]$ rm -rf redo01.log redo03.log?


刪除所有控制文件

[oracle@sq orcl]$ rm -rf *.ctl


2.

SQL> startup force(報錯)


3.


CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ?ARCHIVELOG

? ? MAXLOGFILES 16

? ? MAXLOGMEMBERS 3

? ? MAXDATAFILES 100

? ? MAXINSTANCES 8

? ? MAXLOGHISTORY 292

LOGFILE

? GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' ?SIZE 50M,

? GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' ?SIZE 50M,

? GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' ?SIZE 50M

-- STANDBY LOGFILE

DATAFILE

? '/u01/app/oracle/oradata/orcl/system01.dbf',

? '/u01/app/oracle/oradata/orcl/undotbs01.dbf',

? '/u01/app/oracle/oradata/orcl/sysaux01.dbf',

? '/u01/app/oracle/oradata/orcl/users01.dbf',

? '/u01/app/oracle/oradata/orcl/aaa.dbf'

CHARACTER SET WE8ISO8859P1

;


4.SQL> select open_mode from v$database;

5.SQL> alter database open;(報錯)

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SQL> alter database open resetlogs;(報錯)


SQL> recover database; (報錯)


查看恢復目錄

SQL> show parameter DB_RECOVERY_FILE_DEST



SQL> recover database using BACKUP CONTROLFILE;

(using backup controlfile. ?恢復就不會受“當前controlfile所紀錄的SCN”的限制) 成功

提示中輸入: ?/u01/app/oracle/oradata/orcl/redo02.log (當前就一個日志文件)


SQL> alter database open resetlogs;


==========================================

部分數據庫恢復

1.SQL> alter tablespace users begin backup;

? [oracle@sq orcl]$ cp users01.dbf /home/oracle/db_bak/


2.SQL> alter tablespace users end backup;?

??

3.SQL> create table tt as select * from dba_objects;

? SQL> select count(*) from tt;

? SQL> commit;


4.[oracle@sq orcl]$ rm -rf users01.dbf (模擬損壞)


5.SQL> alter system flush buffer_cache;

SQL> conn sys/123456 as sysdba


6.SQL> startup force;(報錯 缺少4號文件)


7.SQL> alter database datafile 4 offline;

? [oracle@sq orcl]$ cp /home/oracle/db_bak/users01.dbf .


8.SQL> recover datafile 4;

SQL> alter database datafile 4 online;


9.SQL> startup force;




============================================

完全數據庫恢復

步驟跟上面一樣

recover database


============================================

歸檔模式數據文件恢復

1.SQL> create tablespace tbs_recover datafile '/oracle/app/oradata/TEST/tbs_recover.dbf' size 10M;


2.

SQL> create table tab_recover tablespace tbs_recover as select * from dba_objects;

SQL> commit;


3.SQL> alter system switch logfile;

SQL> /


4.[oracle@sq123 TEST]$ rm -rf tbs_recover.dbf?


5.SQL> alter system flush buffer_cache;


6.SQL> conn sys/123456 as sysdba

? SQL> select * from tab_recover;(報錯)


7.SQL> alter database datafile 5 offline;


8.SQL> alter database create datafile '/oracle/app/oradata/TEST/tbs_recover.dbf';

(創建出表空間)


9.SQL> alter database datafile 5 online;(報錯)

SQL> recover datafile 5;

AUTO


10.SQL> alter database datafile 5 online;(成功)

? ?SQL> select * from tab_recover;(數據回來了)


=============================================

不完全數據庫恢復


日志挖掘技術確定誤操作時間與scn


查看當前時間


alter database begin backup;

cp *.dbf /home/oracle/db_bak

alter database end backup;


SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ?2012-04-24 07:20:34

SQL> drop table tab_recover;


1.日志挖掘技術,確定誤刪除表的時間

[oracle@sq123 ~]$ mkdir logminer


存儲目錄

SQL> alter system set utl_file_dir='/home/oracle/logminer' scope=spfile;

SQL> shutdown immediate

SQL> startup


2.創建存儲數據字典文件的文件

SQL> execute dbms_logmnr_d.build('shwdict.ora','/home/oracle/logminer');


cd /home/oracle/logminer/


3.

SQL> execute dbms_logmnr.add_logfile('/oracel/app/oradtaa/TEST/',dbms_logmnr.new);


4.挖掘數據

SQL> exec dbms_logmnr.start_logmnr (dictfilename=>'/home/oracle/logminer/shwdict.ora');


5.

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';



SQL> select SCN,TIMESTAMP,SQL_REDO from v$LOGMNR_CONTENTS where SQL_REDO like '%drop%';

結果:

? ? 716922 2012-03-12 06:12:38

drop table tab_recover AS "BIN$uv7sdpUIi1TgQAB/AQByfw==$0" ;




恢復數據


6.

SQL> shutdown abort;

SQL> startup mount

[oracle@sq123 db_bak]$ cp *.dbf /oracle/app/oradata/TEST/


SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';



7.

SQL> recover database until time '2012-04-24 07:20:34';


SQL> alter database open resetlogs;



8.

SQL> conn sys/123456 as sysdba

SQL> select count(*) from tab_recover; (數據恢復出來了)



=============================================

日志文件恢復

1.[oracle@sq orcl]$ rm *.log

? SQL> startup force(報錯)


2.SQL> alter database open resetlogs;(報錯)


3.SQL> recover database until cancel;

(執行RECOVER命令,在提示輸入歸檔日志時,應用這些歸檔日志提示輸入歸檔日志序列號時,不輸入這個文件的名稱或者不接受建議的名稱,而是輸入CANCEL)


(恢復不能成功,因為我們沒有歸檔日志了)


4.添加隱藏參數

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;

(強制啟動數據庫,設置此參數之后,在數據庫Open過程中,Oracle會跳過某些一致性檢查,從而使數據庫可能跳過不一致狀態,Open打開)


5.SQL> startup force

? SQL> alter database open resetlogs;

? (可以啟動,但是剛才沒有同步到硬盤的數據丟失了)



--后續操作

SQL> create pfile from spfile

然后vi pfile文件?

刪除 *._allow_resetlogs_corruption

SQL> create spfile from pfile;

SQL> startup force


===============================================




轉載于:https://blog.51cto.com/chenjisong/1737391

總結

以上是生活随笔為你收集整理的数据库备份 恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。