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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

备份恢复基础复习

發(fā)布時(shí)間:2025/7/14 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 备份恢复基础复习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、數(shù)據(jù)庫備份

數(shù)據(jù)庫的備份分為一致性備份 和 非一致性備份。。。。備份數(shù)據(jù)庫也就是備份數(shù)據(jù)庫的四個(gè)文件:數(shù)據(jù)文件、控制文件、參數(shù)文件、口令文件。

數(shù)據(jù)庫的一致性備份: ? ? ? ? ? ? ? ? 需要關(guān)閉數(shù)據(jù)庫,所以也就是傳說中的冷備份,基本步驟非常簡單:

1)列出數(shù)據(jù)庫內(nèi)的所有數(shù)據(jù)文件和控制文件:通過查詢v$controlfile和v$datafile中的name列即可。

2)關(guān)閉數(shù)據(jù)庫SQL>shutdown immediate

3)利用操作系統(tǒng)命令拷貝所有的:數(shù)據(jù)文件,控制文件,參數(shù)文件、口令文件到指定的目錄中。

4)重新啟動數(shù)據(jù)庫SQL>startup ? 備份完成。


數(shù)據(jù)庫的非一致性備份: ? ? ? ? ? ? ? ?不需要關(guān)閉數(shù)據(jù)庫,數(shù)據(jù)庫處于open狀態(tài),不影響業(yè)務(wù)正常的運(yùn)行。注意非一致性數(shù)據(jù)庫備份只能在archivelog模式下,而一致性備份可以在archivelog和noarchivelog模式下都是可以的。

1)列出數(shù)據(jù)庫內(nèi)的所有數(shù)據(jù)文件和控制文件:通過查詢v$controlfile和v$datafile中的name列即可。

2)將數(shù)據(jù)庫設(shè)置為備份模式,在設(shè)置備份模式后,數(shù)據(jù)庫會做一個(gè)全局的檢查點(diǎn),然后再所有的數(shù)據(jù)文件的頭塊加鎖,以確保數(shù)據(jù)備份中數(shù)據(jù)文件頭塊不會發(fā)生變化,執(zhí)行:alter database begin backup

3)備份數(shù)據(jù)文件和控制文件,其中數(shù)據(jù)文件和一致性備份一樣,使用操作系統(tǒng)命令即可,但是控制文件的備份,需要使用:alter database backup controlfile to '/u01/app/oracle/ctl.bak

4)結(jié)束數(shù)據(jù)庫備份。為了確保數(shù)據(jù)文件備份的同步性,還應(yīng)該歸檔當(dāng)前日志組'SQL>alter database end backup; SQL> alter system archive log current;


2、備份表空間

備份表空間,就是指的是當(dāng)數(shù)據(jù)庫處于open狀態(tài),備份其數(shù)據(jù)文件的方法。。。注意表空間的備份只能是archivelog模式下的備份,而不能是noarchivelog。表空間的備份可以分為脫機(jī)備份和聯(lián)機(jī)備份。


脫機(jī)備份

脫機(jī)備份是指當(dāng)表空間處于offline的時(shí)候,對單個(gè)數(shù)據(jù)文件或多個(gè)數(shù)據(jù)文件進(jìn)行備份,與聯(lián)機(jī)備份的相比,可以產(chǎn)生較少的重做日志。

脫機(jī)備份有一個(gè)缺點(diǎn),那就是system表空間,正在使用的undo表空間,都不能脫機(jī),也就不能備份。下面以備份USER表空間為例,來說明:

1)確定表空間所包含的數(shù)據(jù)文件,可以通過視圖:DBA_DATA_FILES 查看表空間和數(shù)據(jù)文件的對應(yīng)關(guān)系:select file_name ,tablespace_name from dba_data_files;

2)將表空間脫機(jī):alter tablespace USER offline;

3)利用操作系統(tǒng)命令復(fù)制數(shù)據(jù)文件。

4)備份完數(shù)據(jù)文件之后,將表空間設(shè)置為聯(lián)機(jī):alter tablespace USER online;


聯(lián)機(jī)備份

連接備份是指表空間處于online狀態(tài),進(jìn)行數(shù)據(jù)文件的備份,這種備份的優(yōu)點(diǎn)是能對所有的表空間數(shù)據(jù)文件進(jìn)行備份,不管是system還是正在使用的undo表空間。但是其缺點(diǎn)是產(chǎn)生大量的重做日志信息和歸檔信息。

為什么會產(chǎn)生大量的的重做和歸檔呢?這是一個(gè)很復(fù)雜的問題,簡單解釋一下:因?yàn)閷τ谔幱赽ackup 模式的表空間內(nèi)的數(shù)據(jù)文件,當(dāng)?shù)谝淮问艿紻ML操作(此時(shí)dba正在使用操作系統(tǒng)命令來備份數(shù)據(jù)文件)時(shí),因?yàn)椴僮飨到y(tǒng)的copy是以操作系統(tǒng)的數(shù)據(jù)塊大小來執(zhí)行的,而數(shù)據(jù)庫內(nèi)的數(shù)據(jù)文件的數(shù)據(jù)塊的大小一般會比操作系統(tǒng)的大。還有,copy是操作系統(tǒng)命令,不能與oracle內(nèi)部命令進(jìn)行交互,這就造成了多次copy系統(tǒng)塊的的數(shù)據(jù)來完成一個(gè)db數(shù)據(jù)塊的拷貝,這就造成了數(shù)據(jù)的不一致。所以oracle把所有進(jìn)行DML操作的數(shù)據(jù)塊全部先存入redo,然后再進(jìn)行DML操作。。。。這就是為什么聯(lián)機(jī)備份表空間會產(chǎn)生大量的重做信息。更詳細(xì)的資料請參考:http://blog.csdn.net/changyanmanman/article/details/7899056

1)確定表空間所包含的數(shù)據(jù)文件,利用dba_data_files查看就可以了。

2)修改表空間位備份模式,此時(shí)會在表空間的所有數(shù)據(jù)文件塊頭上加上鎖,scn被凍結(jié)。執(zhí)行:alter tablespace USERS begin backup;

3)利用操作系統(tǒng)命令copy數(shù)據(jù)文件。

4)設(shè)置表空間位正常模式:alter tablespace USERS end backup;

模擬并處理聯(lián)機(jī)備份失敗的處理:

在進(jìn)行聯(lián)機(jī)備份數(shù)據(jù)文件的時(shí)候,如果數(shù)據(jù)庫突然因?yàn)閿嚯娀蛘吣承┕收隙鴮?shí)例崩潰,當(dāng)再次進(jìn)行數(shù)據(jù)庫裝載的時(shí)候,會提示需要進(jìn)行實(shí)例恢復(fù):

ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/test.dbf'

如何進(jìn)行處理呢?下面我們通過:首先修改表空間備份模式,然后關(guān)閉數(shù)據(jù)庫,再然后啟動數(shù)據(jù)庫,來模擬此情景:

SQL> alter tablespace TEST begin backup;


Tablespace altered.

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
/u01/app/oracle/oradata/orcl/users01.dbf
USERS


/u01/app/oracle/oradata/orcl/sysaux01.dbf
SYSAUX


/u01/app/oracle/oradata/orcl/undotbs01.dbf
UNDOTBS1



FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
SYSTEM


/u01/app/oracle/oradata/orcl/example01.dbf
EXAMPLE


/u01/app/oracle/oradata/orcl/test.dbf
TEST



6 rows selected.


SQL> host cp /u01/app/oracle/oradata/orcl/test.dbf /u01/app/oracle/test.bak


SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area ?608174080 bytes
Fixed Size ? ? ? ? ? ? ? ? ?1220820 bytes
Variable Size ? ? ? ? ? ? 243273516 bytes
Database Buffers ? ? ? ? ?356515840 bytes
Redo Buffers ? ? ? ? ? ? ? ?7163904 bytes
Database mounted.
ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/test.dbf'

SQL> startup force mount;
ORACLE instance started.

Total System Global Area ?608174080 bytes
Fixed Size ? ? ? ? ? ? ? ? ?1220820 bytes
Variable Size ? ? ? ? ? ? 243273516 bytes
Database Buffers ? ? ? ? ?356515840 bytes
Redo Buffers ? ? ? ? ? ? ? ?7163904 bytes
Database mounted.
SQL> desc v$backup
?Name ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Null? ? ?Type
?----------------------------------------- -------- ----------------------------
?FILE# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NUMBER
?STATUS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? VARCHAR2(18)
?CHANGE# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NUMBER
?TIME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? DATE


SQL> select status,change#,time from v$backup where file#=6;


STATUS ? ? ? ? ? ? ? ?CHANGE# TIME
------------------ ---------- ---------
ACTIVE ? ? ? ? ? ? ? ?1060636 30-JUL-13 ? ? ? ? ? ? -----active說明此數(shù)據(jù)文件正在被備份


SQL> alter database datafile '/u01/app/oracle/oradata/orcl/test.dbf' end backup; ? ?
Database altered.

上面這條是關(guān)鍵,通過強(qiáng)制掛載數(shù)據(jù)庫之后,可以使用alter database end backup,也可以使用上面的針對某個(gè)數(shù)據(jù)文件的結(jié)束;還有一種通過recover命令結(jié)束數(shù)據(jù)文件的備份:recover datafile 6;


SQL> alter database open;
Database altered.

好了,現(xiàn)在數(shù)據(jù)庫可以正常啟動了,再看一下現(xiàn)在對應(yīng)的數(shù)據(jù)文件的狀態(tài):

SQL> select * from v$backup where file#=6;

? ? ?FILE# STATUS ? ? ? ? ? ? ? ?CHANGE# TIME
---------- ------------------ ---------- ---------
? ? ? ?6 NOT ACTIVE ? ? ? ? ? ?1060636 30-JUL-13


3、備份控制文件

當(dāng)發(fā)生涉及數(shù)據(jù)庫的配置改變,如增加減少表空間,數(shù)據(jù)文件,日志文件組或日志文件成員。當(dāng)執(zhí)行數(shù)據(jù)庫一致性備份的時(shí)候,數(shù)據(jù)庫的控制文件是不活動的,我們可以直接用操作系統(tǒng)命令來備份;當(dāng)數(shù)據(jù)庫處于open狀態(tài)時(shí),我們用alter database 命令既可以建立控制文件副本,也可以把控制文件備份到跟蹤文件中。

演示alter database備份控制文件:

alter database backup controlfile to '/u01/app/oracle/ctl.bak'但是如果該目錄下已經(jīng)有控制文件了,我們可以用:alter database backup controlfile to '/u01/app/oracle/ctl.bak' reuse;

演示備份到跟蹤文件中:

1)查看跟蹤文件位置:show parameter user_dump_dest

2)確定跟蹤文件名稱,我們可以通過v$process,v$session確定當(dāng)前的會話的的操作系統(tǒng)對應(yīng)的pid,為什么需要操作系統(tǒng)的pid呢?這就要從跟蹤文件的命名規(guī)則說起了,跟蹤文件的命名規(guī)則如下:<SID>_ora_<SPID>.trc,其中SID代表數(shù)據(jù)的的sid,SPID對應(yīng)的是此次會話的進(jìn)程id所對應(yīng)的操作系統(tǒng)進(jìn)程號。好了,這就是為什么需要確定操作系統(tǒng)的pid的原因了。

SQL> select a.spid from v$process a,v$session b where a.addr=b.paddr and b.username='SYS';

3)執(zhí)行控制文件備份命令:alter database bakcup controlfile to trace;'

4)跟蹤文件時(shí)文本格式,去掉了其中的注釋,就可以看到真正創(chuàng)建控制文件的語句了。在nomount的模式下,我們創(chuàng)建數(shù)據(jù)文件即可:


4、備份歸檔日志,參數(shù)文件,口令文件

————備份歸檔日志直接用操作系統(tǒng)命令;

————對于參數(shù)文件,如果是用的pfile,那直接可以用操作系統(tǒng)備份copy,但是如果是spfile,因?yàn)槠涫嵌M(jìn)制文件,我們必須用下面的語句進(jìn)行備份:

SQL>create pfile='/u01/app/oracle/pfile.bak' from spfile='$ORACLE_HOME/dbs/spfileorcl.ora'

————備份口令文件直接用操作系統(tǒng)命令。



5、用戶管理的完全恢復(fù)










轉(zhuǎn)載于:https://www.cnblogs.com/cymm/p/3390356.html

總結(jié)

以上是生活随笔為你收集整理的备份恢复基础复习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。