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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

oracle冷备份/恢复

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

1.備份

停止所有的oracle服務(wù),復(fù)制Oracle目錄下的oradata文件夾下的數(shù)據(jù)庫名整個(gè)目錄復(fù)制備份。

這樣冷備份就完成了,當(dāng)然也可以像網(wǎng)上所說的:

示例一、windows環(huán)境下的冷備份與恢復(fù)
?? 在本例中,數(shù)據(jù)庫實(shí)例名wh,所有數(shù)據(jù)文件、所有控制文件和所有聯(lián)機(jī)REDO LOG 文件都在文件夾D:\oracle\ora92\wh中,備份恢復(fù)的操作如下:

1、 進(jìn)入 sql*plus,以sysdba的身份登錄數(shù)據(jù)庫
SQL>sys/oracle@wh as sysdba
2、 關(guān)閉數(shù)據(jù)庫SQL>shutdown immediate
3、 拷貝D:\oracle\ora92\wh到目標(biāo)備份目錄E:\bacakupora\wh

數(shù)據(jù)庫冷備份完成。下面對數(shù)據(jù)庫中的內(nèi)容進(jìn)行更改:
4、啟動(dòng)數(shù)據(jù)庫
SQL>startup
5、刪除數(shù)據(jù)
SQL>delete from wh.test (刪除某個(gè)用戶的表)

???? 此時(shí)進(jìn)行數(shù)據(jù)庫恢復(fù)。
???? 6、SQL>shutdown immediate;
7、拷貝目標(biāo)備份目錄E:\bacakupora\wh到D:\oracle\ora92\wh
???? 數(shù)據(jù)庫恢復(fù)完畢。通過查詢可以發(fā)現(xiàn)數(shù)據(jù)庫恢復(fù)到進(jìn)行備份時(shí)刻的狀態(tài),備份后所進(jìn)行的所有操作無效。

2.恢復(fù):

今天網(wǎng)上找了很多恢復(fù)的都不管用,結(jié)果今天下午搞了一個(gè)下午,試了很多方法,終于可以了,以下我是總結(jié)的方法:

1.首先要注意恢復(fù)的到Oracle 版本和路徑必須與原來備份的一樣。

2.新建一個(gè)數(shù)據(jù)庫與原來名稱一樣的數(shù)據(jù)庫(如SD)

3.停止所有的Oracle服務(wù),到Oracle目錄下的oradata把新建的數(shù)據(jù)庫(SD)刪除,把備份的文件復(fù)制進(jìn)來。

4.重啟一下Oracle服務(wù)

5.如果用PL\SQL連接會(huì)提示ora-01033:oracle initialization or shutdown in progress錯(cuò)誤。解決辦法如下,引用他人文章:

分析:應(yīng)該是Oracle在啟動(dòng)后,用戶登錄時(shí)是要將方案中原有配置信息裝載進(jìn)入,裝載過程中遇到原有文件指定的位置上沒有找到,所以就報(bào)出錯(cuò)誤。

四、解決過程:

1、我在解決時(shí)由于著急使用,便用Database Configuration Assistant工具重新創(chuàng)建了一個(gè)新的庫,臨時(shí)解決急用的問題,同時(shí)也給后期解決ora-01033問題埋下了隱患。
2、在9i中是沒有svrmgrl 命令的,要用sqlplus。
3、先在windows下運(yùn)行cmd,進(jìn)入DOS環(huán)境。
4、以DBA用戶登錄,具體命令是
sqlplus /NOLOG
SQL>connect sys/change_on_install as sysdba
提示:已成功

SQL>shutdown normal
提示:數(shù)據(jù)庫已經(jīng)關(guān)閉
已經(jīng)卸載數(shù)據(jù)庫
ORACLE 例程已經(jīng)關(guān)閉

SQL>startup mount
提示:ORACLE例程已經(jīng)啟動(dòng)
Total System Global Area 118255568 bytes
Fixed Size????????????????? 282576 bytes
Variable Size???????????? 82886080 bytes
Database Buffers????????? 33554432 bytes
Redo Buffers??????????????? 532480 bytes
數(shù)據(jù)庫裝載完畢

SQL>alter database open;
提示:
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01157: 無法標(biāo)識/鎖定數(shù)據(jù)文件 19 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數(shù)據(jù)文件 19: ''''C:\oracle\oradata\oradb\FYGL.ORA''
這個(gè)提示文件部分根據(jù)每個(gè)人不同情況有點(diǎn)差別。

繼續(xù)輸入
SQL>alter database datafile 19 offline drop;
提示:數(shù)據(jù)庫已更改。

循環(huán)使用最后兩步,直到alter database open;后不再提示錯(cuò)誤,出現(xiàn)“數(shù)據(jù)庫已更改”。
然后接著輸入即可
SQL>shutdown normal
提示:數(shù)據(jù)庫已經(jīng)關(guān)閉
已經(jīng)卸載數(shù)據(jù)庫
ORACLE 例程已經(jīng)關(guān)閉

SQL>startup
提示:ORACLE例程已經(jīng)啟動(dòng)
Total System Global Area 118255568 bytes
Fixed Size????????????????? 282576 bytes
Variable Size???????????? 82886080 bytes
Database Buffers????????? 33554432 bytes
Redo Buffers??????????????? 532480 bytes
數(shù)據(jù)庫裝載完畢

就可以解決了。
5、最后說一下,第一條提到的隱患,因?yàn)閯?chuàng)建了新的庫,ORACLE_SID也就發(fā)生了變化,在用戶登錄的時(shí)候會(huì)有ORA-12560錯(cuò)誤,解決這個(gè)問題是將系統(tǒng)注冊表中的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\ORACLE_SID
鍵值修改成之前那個(gè)SID就可以了,用戶也能就能正常登錄了。

附:oracle備份比較

Oracle的備份與恢復(fù)有三種標(biāo)準(zhǔn)的模式,大致分為兩大類,備份恢復(fù)(物理上的)以及導(dǎo)入導(dǎo)出(邏輯上的),而備份恢復(fù)又可以根據(jù)數(shù)據(jù)庫的工作模式分為非歸檔模式(Nonarchivelog-style)和歸檔模式(Archivelog-style),通常,我們把非歸檔模式稱為冷備份,而相應(yīng)的把歸檔模式稱為熱備份,他們的關(guān)系如下所示

  三種方式各有優(yōu)點(diǎn),我們做個(gè)比較(這個(gè)是用Fireworks畫的,有點(diǎn)糙):

  

   $A:?? 現(xiàn)在先來介紹一下邏輯備份方式的方法,利用Export可將數(shù)據(jù)從數(shù)據(jù)庫中提取出來,利用Import則可將提取出來的數(shù)據(jù)送回到Oracle數(shù)據(jù)庫中去。理論基礎(chǔ):Oracle提供的Export和Import具有三種不同的操作方式(就是備份的數(shù)據(jù)輸出(入)類型):

  1,表方式(T)??? 可以將指定的表導(dǎo)出備份;

  2,全庫方式(Full)???? 將數(shù)據(jù)庫中的所有對象導(dǎo)出;

  3,用戶方式(U)???? 可以將指定的用戶相應(yīng)的所有數(shù)據(jù)對象導(dǎo)出;

  *在導(dǎo)入導(dǎo)出備份方式中,提供了很強(qiáng)大的一種方法,就是增量導(dǎo)出/導(dǎo)入,但是它必須作為System來完成增量的導(dǎo)入導(dǎo)出,而且只能是對整個(gè)數(shù)據(jù)庫進(jìn)行實(shí)施。增量導(dǎo)出又可以分為三種類別:

  1,完全增量導(dǎo)出(Complete Export)???? 這種方式將把整個(gè)數(shù)據(jù)庫文件導(dǎo)出備份;exp system/manager inctype=complete file=20041125.dmp(為了方便檢索和事后的查詢,通常我們將備份文件以日期或者其他有明確含義的字符命名)

  2,增量型增量導(dǎo)出(Incremental Export)???? 這種方式將只會(huì)備份上一次備份后改變的結(jié)果;exp system/manager inctype=incremental file=20041125.dmp

  3,累積型增量導(dǎo)出(Cumulate Export)????? 這種方式的話,是導(dǎo)出自上次完全增量導(dǎo)出后數(shù)據(jù)庫變化的信息。exp system/manager inctype=cumulative file=20041125.dmp

  通常情況下,DBA們所要做的,就是按照企業(yè)指定或者是自己習(xí)慣的標(biāo)準(zhǔn)(如果是自己指定的標(biāo)準(zhǔn),建議寫好計(jì)劃說明),一般,我們采用普遍認(rèn)可的下面的方式進(jìn)行每天的增量備份:

  Mon: 完全備份(A)?
   Tue: 增量導(dǎo)出(B)?
   Wed:增量導(dǎo)出(C)?
   Thu: 增量導(dǎo)出(D)?
   Fri:?? 累計(jì)導(dǎo)出(E)?
   Sat: 增量導(dǎo)出(F)?
  ?
Sun: 增量導(dǎo)出(G)

  這樣,我們可以保證每周數(shù)據(jù)的完整性,以及恢復(fù)時(shí)的快捷和最大限度的數(shù)據(jù)損失。恢復(fù)的時(shí)候,假設(shè)事故發(fā)生在周末,DBA可按這樣的步驟來恢復(fù)數(shù)據(jù)庫:?
   第一步:用命令CREATE DATABASE重新生成數(shù)據(jù)庫結(jié)構(gòu);?
   第二步:創(chuàng)建一個(gè)足夠大的附加回滾。?
   第三步:完全增量導(dǎo)入A:?
   imp system/manager inctype=RESTORE FULL=y FILE=A?
   第四步:累計(jì)增量導(dǎo)入E:?
   imp system/manager inctype=RESTORE FULL=Y FILE=E?
   第五步:最近增量導(dǎo)入F:?
  imp system/manager inctype=RESTORE FULL=Y FILE=F?
  
  通常情況下,DBA所要做的導(dǎo)入導(dǎo)出備份就算完成,只要科學(xué)的按照規(guī)律作出備份,就可以將數(shù)據(jù)的損失降低到最小,提供更可靠的服務(wù)。另外,DBA最好對每次的備份做一個(gè)比較詳細(xì)的說明文檔,使得數(shù)據(jù)庫的恢復(fù)更加可靠。

  $B 物理備份之冷備份(條件-NonArchiveLog):

  當(dāng)數(shù)據(jù)庫可以暫時(shí)處于關(guān)閉狀態(tài)時(shí),我們需要將它在這一穩(wěn)定時(shí)刻的數(shù)據(jù)相關(guān)文件轉(zhuǎn)移到安全的區(qū)域,當(dāng)數(shù)據(jù)庫遭到破壞,再從安全區(qū)域?qū)浞莸臄?shù)據(jù)庫相關(guān)文件拷貝回原來的位置,這樣,就完成了一次快捷安全等數(shù)據(jù)轉(zhuǎn)移。由于是在數(shù)據(jù)庫不提供服務(wù)的關(guān)閉狀態(tài),所以稱為冷備份。冷備份具有很多優(yōu)良特性,比如上面圖中我們提到的,快速,方便,以及高效。一次完整的冷備份步驟應(yīng)該是:

  1,首先關(guān)閉數(shù)據(jù)庫(shutdown normal)

  2,拷貝相關(guān)文件到安全區(qū)域(利用操作系統(tǒng)命令拷貝數(shù)據(jù)庫的所有的數(shù)據(jù)文件、日志文件、控制文件、參數(shù)文件、口令文件等(包括路徑))

  3,重新啟動(dòng)數(shù)據(jù)庫(startup)

  以上的步驟我們可以用一個(gè)腳本來完成操作:

  su – oracle <????? sqlplus /nolog?
   con
nect / as sysdba
  shutdown immediate;
   !cp 文件?? 備份位置(所有的日志、數(shù)據(jù)、控制及參數(shù)文件);
   startup;
   exit;
   這樣,我們就完成了一次冷備份,請確定你對這些相應(yīng)的目錄(包括寫入的目標(biāo)文件夾)有相應(yīng)的權(quán)限。

  恢復(fù)的時(shí)候,相對比較簡單了,我們停掉數(shù)據(jù)庫,將文件拷貝回相應(yīng)位置,重啟數(shù)據(jù)庫就可以了,當(dāng)然也可以用腳本來完成。

  $C 物理備份之熱備份:(條件-ArchiveLog)

  當(dāng)我們需要做一個(gè)精度比較高的備份,而且我們的數(shù)據(jù)庫不可能停掉(少許訪問量)時(shí),這個(gè)情況下,我們就需要?dú)w檔方式下的備份,就是下面討論的熱備份。熱備份可以非常精確的備份表空間級和用戶級的數(shù)據(jù),由于它是根據(jù)歸檔日志的時(shí)間軸來備份恢復(fù)的,理論上可以恢復(fù)到前一個(gè)操作,甚至就是前一秒的操作。具體步驟如下:

  1,通過視圖v$database,查看數(shù)據(jù)庫是否在Archive模式下:??????? SQL> select log_mode from v$database;
  如果不是Archive模式

  則設(shè)定數(shù)據(jù)庫運(yùn)行于歸檔模式下:SQL>shutdown immediate
  SQL>startup mount
  SQL> alter database archivelog;
  SQL> alter database open;
   如果Automaticarchival顯示為“Enabled”,則數(shù)據(jù)庫歸檔方式為自動(dòng)歸檔。否則需要手工歸檔,或者將歸檔方式修改為自動(dòng)歸檔,如:
   正常shutdown數(shù)據(jù)庫,在參數(shù)文件中init.ora中加入如下參數(shù)
  SQL>shutdown immediate
   修改init.ora:
  LOG_ARCHIVE_START=TRUE
  LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(歸檔日值存放位置可以自己定義)
  SQL>startup
   然后,重新啟動(dòng)數(shù)據(jù)庫,此時(shí)Oracle數(shù)據(jù)庫將以自動(dòng)歸檔的方式工作在Archive模式下。其中參數(shù)LOG_ARCHIVE_DEST1是指定的歸檔日志文件的路徑,建議與Oracle數(shù)據(jù)庫文件存在不同的
硬盤,一方面減少磁盤I/O競爭,另外一方面也可以避免數(shù)據(jù)庫文件所在硬盤毀壞之后的文件丟失。歸檔路徑也可以直接指定為磁帶等其它物理存儲設(shè)備,但可能要考慮讀寫速度、可寫條件和性能等因素。??????

  注意:當(dāng)數(shù)據(jù)庫處在ARCHIVE模式下時(shí),一定要保證指定的歸檔路徑可寫,否則數(shù)據(jù)庫就會(huì)掛起,直到能夠歸檔所有歸檔信息后才可以使用。另外,為創(chuàng)建一個(gè)有效的備份,當(dāng)數(shù)據(jù)庫在創(chuàng)建時(shí),必須履行一個(gè)全數(shù)據(jù)庫的冷備份,就是說數(shù)據(jù)庫需要運(yùn)行在歸檔方式,然后正常關(guān)閉數(shù)據(jù)庫,備份所有的數(shù)據(jù)庫組成文件。這一備份是整個(gè)備份的基礎(chǔ),因?yàn)樵搨浞萏峁┝艘粋€(gè)所有數(shù)據(jù)庫文件的拷貝。(體現(xiàn)了冷備份與熱備份的合作關(guān)系,以及強(qiáng)大的能力)

   2,備份表空間文件:

  a,首先,修改表空間文件為備份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;

  b,然后,拷貝表空間文件到安全區(qū)域 !CP tablespace_name D_PATH;

  c,最后,將表空間的備份模式關(guān)閉??? ALTER TABLESPACE tablespace_name END BACKUP;

  3,對歸檔日志文件的備份:

  停止歸檔進(jìn)程-->備份歸檔日志文件-->啟動(dòng)歸檔進(jìn)程

  如果日志文檔比較多,我們將它們寫入一個(gè)文件成為一個(gè)恢復(fù)的參考:$?? files `ls <歸檔文件路徑>/arch*.dbf`;export files

  4,備份控制文件:
  SQL> alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;

  當(dāng)然,我們也可以將上面的東東寫為一個(gè)腳本,在需要的時(shí)候執(zhí)行就可以了:

  腳本范例:

  su – oracle <????? sqlplus /nolog?
  connect / as sysdba
  ALTER TABLESPACE tablespace_name BEGIN BACKUP

  !CP tablespace_name D_PATH

  ALTER TABLESPACE tablespace_name END BACKUP
  

  alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;

  !files `ls <歸檔文件路徑>/arch*.dbf`;export files

   熱備份的恢復(fù),對于歸檔方式數(shù)據(jù)庫的恢復(fù)要求不但有有效的日志備份還要求有一個(gè)在歸檔方式下作的有效的全庫備份。歸檔備份在理論上可以無數(shù)據(jù)丟失,但是對于硬件以及操作人員的要求都比較高。在我們使用歸檔方式備份的時(shí)候,全庫物理備份也是非常重要的。歸檔方式下數(shù)據(jù)庫的恢復(fù)要求從全備份到失敗點(diǎn)所有的日志都要完好無缺。
  恢復(fù)步驟:LOG_ARCHIVE_DEST_1
   shutdown數(shù)據(jù)庫。
  將全備份的數(shù)據(jù)文件放到原來系統(tǒng)的目錄中。
   將全備份到失敗點(diǎn)的所有歸檔日志放到參數(shù)LOG_ARCHIVE_DEST_1所指定的位置。
  利用sqlplus登陸到空實(shí)例。(connect / as sysdba)
  然后 startup mount
  set autorecovery on
  recover database;
  alter database open;

?

?

?

?

--------------------------------------------路徑不一致的恢復(fù)方法--------------------------------------------

?

近日,我想把oracle數(shù)據(jù)庫從我的電腦上遷移到機(jī)房的電腦上,一開始采用dmp/imp方式,但是發(fā)現(xiàn)需要導(dǎo)出很多用戶,太麻煩。所以決定采用冷備份/冷恢復(fù)的方式。

過程如下:

通過v$controlfile查看控制文件,通過v$logfile查看重做日志文件,通過V$DATAFILE查看數(shù)據(jù)文件,發(fā)現(xiàn)他們都處于同一文件夾中i:\oracle\oradata\test中,索性都復(fù)制到另一臺機(jī)器的e:\oracle\oradata\test中,復(fù)制之前shutdown系統(tǒng)。還復(fù)制了inittest.ora后來發(fā)現(xiàn)他指向另一個(gè)init.ora,又復(fù)制了這個(gè)init.ora,還復(fù)制了一個(gè)口令文件PWDtest.ora到機(jī)房電腦的相應(yīng)位置。startup后,發(fā)現(xiàn)無法運(yùn)行,我想應(yīng)該是兩個(gè)oracle安裝路徑不同的原因,首先修改了init.ora中的控制文件的路徑,還是不行,我想應(yīng)該修改控制文件中的數(shù)據(jù)文件路徑信息,如何修改呢?網(wǎng)上一頓查找,終于找到了如下方法:

首先,在原電腦上:

1. 備份數(shù)據(jù)庫中的數(shù)據(jù),以防不測。

2. svrmgrl

3. svrmgrl>connect internal/oracle

4. svrmgrl>alter database backup controlfile to trace; 備份控制文件

5. 在/home/oracle//admin/ora7/udump下可找到最新生成的TRACE文件,假設(shè)為ora_15269.trc,此文件就包含了當(dāng)前控制文件的參數(shù)及生成語法。

6. 提取ora_15269.trc中有關(guān)控制文件生成的語句另存為creatctl.sql。7. 修改creatctl.sql中的路徑信息;8.然后,復(fù)制到目標(biāo)電腦上,并且在目標(biāo)電腦上9. svrmgrl

10. svrmgrl>connect internal

11. svrmgrl>shutdown immediate

12. svrmgrl>@creatctl.sql

13. svrmgrl>alter database open;數(shù)據(jù)庫遷移成功.]

總結(jié):

冷備份需要在oracle shutdown的情況下,拷貝如下文件:1.數(shù)據(jù)文件;2.控制文件;3。日志文件;4。init數(shù)據(jù)庫實(shí)例名.ora文件,及其內(nèi)部指向的init.ora文件;5 口令文件PWD數(shù)據(jù)庫實(shí)例名.ora;然后,安裝oracle,實(shí)例名和以前相同,安裝路徑等最好也相同,shutdown,拷貝上述文件到相應(yīng)位置,如果安裝位置和以前不同,需要修改init*.ora,和控制文件中的路徑信息。

?

?

--------------------------------------------路徑不一致的恢復(fù)方法--------------------------------------------

總結(jié)

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

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