1. 程式人生 > >oracle 備份與恢復學習總結

oracle 備份與恢復學習總結

Oracle資料庫的備份與恢復

http://jingyan.baidu.com/article/b2c186c8eb7713c46ef6ff22.html


Oracle資料庫有三種標準的備份方法,它們分別是匯出/匯入(EXP/IMP)、熱備份和冷備份。匯出備件是一種邏輯備份,冷備份和熱備份是物理備份。


匯出/匯入(Export/Import)
  利用Export可將資料從資料庫中提取出來,利用Import則可將提取出來的資料送回到Oracle資料庫中去。


1、 簡單匯出資料(Export)和匯入資料(Import)


  Oracle支援三種方式型別的輸出:


  (1)、表方式(T方式),將指定表的資料匯出。


  (2)、使用者方式(U方式),將指定使用者的所有物件及資料匯出。


  (3)、全庫方式(Full方式),瘵資料庫中的所有物件匯出。


  資料匯入(Import)的過程是資料匯出(Export)的逆過程,分別將資料檔案匯入資料庫和將資料庫資料匯出到資料檔案。


2、 增量匯出/匯入


  增量匯出是一種常用的資料備份方法,它只能對整個資料庫來實施,並且必須作為SYSTEM來匯出。在進行此種匯出時,系統不要求回答任何問題。匯出檔名預設為export.dmp,如果不希望自己的輸出檔案定名為export.dmp,必須在命令列中指出要用的檔名。


  增量匯出包括三種類型:


  (1)、“完全”增量匯出(Complete)


  即備份三個資料庫,比如:


  exp system/manager inctype=complete file=040731.dmp


  (2)、“增量型”增量匯出


  備份上一次備份後改變的資料,比如:


  exp system/manager inctype=incremental file=040731.dmp


  (3)、“累積型”增量匯出


  累計型匯出方式是匯出自上次“完全”匯出之後資料庫中變化了的資訊。比如:


  exp system/manager inctype=cumulative file=040731.dmp


資料庫管理員可以排定一個備份日程表,用資料匯出的三個不同方式合理高效的完成。


  比如資料庫的被封任務可以做如下安排:


  星期一:完全備份(A)


  星期二:增量匯出(B)


  星期三:增量匯出(C)


  星期四:增量匯出(D)


  星期五:累計匯出(E)


  星期六:增量匯出(F)


  星期日:增量匯出(G)


  如果在星期日,資料庫遭到意外破壞,資料庫管理員可按一下步驟來回複數據庫:


  第一步:用命令CREATE DATABASE重新生成資料庫結構;


  第二步:建立一個足夠大的附加回滾。


  第三步:完全增量匯入A:


  imp system/manager inctype=RESTORE FULL=y FILE=A


  第四步:累計增量匯入E:


  imp system/manager inctype=RESTORE FULL=Y FILE=E


  第五步:最近增量匯入F:


  imp system/manager inctype=RESTORE FULL=Y FILE=F


冷備份
  冷備份發生在資料庫已經正常關閉的情況下,當正常關閉時會提供給我們一個完整的資料庫。冷備份時將關鍵性檔案拷貝到另外的位置的一種說法。對於備份Oracle資訊而言,冷備份時最快和最安全的方法。冷備份的優點是:


  1、 是非常快速的備份方法(只需拷檔案)


  2、 容易歸檔(簡單拷貝即可)


  3、 容易恢復到某個時間點上(只需將檔案再拷貝回去)


  4、 能與歸檔方法相結合,做資料庫“最佳狀態”的恢復。


  5、 低度維護,高度安全。


  但冷備份也有如下不足:


  1、 單獨使用時,只能提供到“某一時間點上”的恢復。


  2、 再實施備份的全過程中,資料庫必須要作備份而不能作其他工作。也就是說,在冷備份過程中,資料庫必須是關閉狀態。


  3、 若磁碟空間有限,只能拷貝到磁帶等其他外部儲存裝置上,速度會很慢。


  4、 不能按表或按使用者恢復。


  如果可能的話(主要看效率),應將資訊備份到磁碟上,然後啟動資料庫(使使用者可以工作)並將備份的資訊拷貝到磁帶上(拷貝的同時,資料庫也可以工作)。冷備份中必須拷貝的檔案包括:


  1、 所有資料檔案


  2、 所有控制檔案


  3、所有聯機REDO LOG檔案


  4、 Init.ora檔案(可選)


  值得注意的使冷備份必須在資料庫關閉的情況下進行,當資料庫處於開啟狀態時,執行資料庫檔案系統備份是無效的。


  下面是作冷備份的完整例子。


  (1) 關閉資料庫


  sqlplus /nolog


  sql>connect /as sysdba


  sql>shutdown normal;


  (2) 用拷貝命令備份全部的時間檔案、重做日誌檔案、控制檔案、初始化引數檔案


  sql>cp


  (3) 重啟Oracle資料庫


  sql>startup


熱備份
  熱備份是在資料庫執行的情況下,採用archivelog mode方式備份資料庫的方法。所以,如果你有昨天夜裡的一個冷備份而且又有今天的熱備份檔案,在發生問題時,就可以利用這些資料恢復更多的資訊。熱備份要求資料庫在Archivelog方式下操作,並需要大量的檔案空間。一旦資料庫執行在archivelog狀態下,就可以做備份了。熱備份的命令檔案由三部分組成:


  1. 資料檔案一個表空間一個表空間的備份。


  (1) 設定表空間為備份狀態


  (2) 備份表空間的資料檔案


  (3) 回覆表空間為正常狀態


  2. 備份歸檔log檔案


  (1) 臨時停止歸檔程序


  (2) log下那些在archive rede log目標目錄中的檔案


  (3) 重新啟動archive程序


  (4) 備份歸檔的redo log檔案


  3. 用alter database bachup controlfile命令來備份控制檔案


  熱備份的優點是:


  1. 可在表空間或資料庫檔案級備份,備份的時間短。


  2. 備份時資料庫仍可使用。


  3. 可達到秒級恢復(恢復到某一時間點上)。


  4. 可對幾乎所有資料庫實體做恢復


  5. 恢復是快速的,在大多數情況下愛資料庫仍工作時恢復。


  熱備份的不足是:


  1. 不能出錯,否則後果嚴重


  2. 若熱備份不成功,所得結果不可用於時間點的恢復


  3. 因難於維護,所以要特別仔細小心,不允許“以失敗告終”。
========

ORACLE資料庫備份與還原命令

http://blog.csdn.net/rowisdom/article/details/8994318
簡介:


資料泵使用指南
10g開始引入了最新的資料泵(Data Dump)技術,使DBA或開發人員可以將資料庫元資料(物件定義)和資料快速移動到另一個Oracle資料庫中.
資料泵匯出匯入(EXPDP和IMPDP)的作用
1,實現邏輯備份和邏輯恢復.
2,在資料庫使用者之間移動物件.
3,在資料庫之間移動物件
4,實現表空間搬移.


資料泵匯出匯入與傳統匯出匯入的區別
在10g之前,傳統的匯出和匯入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了資料泵匯出匯入工具EXPDP和IMPDP.使用EXPDP和IMPDP時應該注意的事項;
EXP和IMP是客戶段工具程式,它們既可以在可以客戶端使用,也可以在服務端使用.
EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在客戶端使用
IMP只適用於EXP匯出檔案,不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出檔案,而不適用於EXP匯出檔案.
資料泵匯出包括匯出表,匯出方案,匯出表空間,匯出資料庫4種方式.


匯出功能
使用EXPDP工具時,其轉儲檔案只能被存放在DIRECTORY物件對應的OS目錄中,而不能直接指定轉儲檔案所在的OS目錄.
因此,使用EXPDP工具時,必須首先建立DIRECTORY物件.並且需要為資料庫使用者授予使用DIRECTORY物件許可權.
CREATE DIRECTORY dump dir AS '/home/oracle/dump_dir';
GRANT READ, WIRTE ON DIRECTORY dump_dir TO public;
注意:這個目錄賦許可權給oracle使用者
1,匯出表
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp logfile=tab.log TABLES=dept,emp
2,匯出方案
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=system,scott
3.匯出表空間
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01,user02
4,匯出資料庫
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y


我們經常用到的是第二種
expdp system/**** directory=dump_dir dumpfile=ngboss_yueyang20130514.dmp logfile=expyueyang20130514.log schemas=ngboss_yueyang
對引數功能不瞭解請expdp -help檢視


匯入功能
和匯出一樣,先要建立DIRECTORY物件.並且需要為資料庫使用者授予使用DIRECTORY物件許可權.
CREATE DIRECTORY dump dir AS '/home/oracle/dump_dir';
GRANT READ, WIRTE ON DIRECTORY dump_dir TO public;
注意:這個目錄賦許可權給oracle使用者
將dmp檔案copy到對應的目錄
同樣有四種情況
1, 匯入表
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM
第一種方法表示將DEPT和EMP表匯入到SCOTT方案中,第二種方法表示將DEPT和EMP表匯入的SYSTEM方案中.
注意,如果要將表匯入到其他方案中,必須指定REMAP SCHEMA選項.
2,匯入方案
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott REMAP_SCHEMA=scott:system
3,匯入表空間
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01
4,匯入資料庫
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y


針對我們系統的特點有兩種情況
1.匯入庫的使用者名稱和表空間跟匯出的庫一致,例如從201上的ngboss_yueyang匯入到196上的ngboss_yueyang使用者上,兩邊的表空間名也一樣
impdp system/**** directory=dump_dir dumpfile=ngboss_yueyang20130514.dmp logfile=impngboss_yueyang20130514.log schemas=ngboss_yueyang


2.匯入庫的使用者名稱和表空間跟匯出的庫不一致
例如:從岳陽的生產庫上匯出的庫匯入到公司201上ngboss_yueyang使用者上
使用者名稱和表空間名都不一樣
impdp system/****  directory=dump_dir dumpfile=ngboss20130513.dmp logfile=impyueyang20130514.log remap_schema=ngboss:ngboss_yueyang remap_tablespace=ngboss_data:ngboss_yy_data,NGBOSS_DATA_CRM1:NGBOSS_YY_DATA_CRM1,NGBOSS_DATA_CRM2:NGBOSS_YY_DATA_CRM2,NGBOSS_DATA_HIST:NGBOSS_YY_DATA_HIST,NGBOSS_DATA_HIST_CRM:NGBOSS_YY_DATA_HIST_CRM,NGBOSS_INDX:NGBOSS_YY_INDX,NGBOSS_INDX_CRM:NGBOSS_YY_INDX_CRM,NGBOSS_WORK:NGBOSS_YY_WORK 
對引數功能不瞭解請impdp -help檢視


注意事項:用dba賬戶匯出的dmp檔案必須要用dba賬戶匯入。
推薦文章:
ORACLE資料庫備份與還原命令 http://www.blogjava.net/paulwong/archive/2013/05/12/399172.html
========

Oracle資料庫備份與還原操作具體步驟

http://www.cnblogs.com/newlooker/p/3564939.html
Oracle資料庫匯出操作


匯入匯出都要進行目錄建立與授權。


在pl/sql裡面編寫也可以


select * from dba_directories(這個是檢視建立的目錄)


drop directory exp_dir(刪除指定名稱的目錄)


create or replace directory expdp_dir as ‘E:/exp’


grant read ,write on directory expdp_dir to public


如圖(圖片網上找的):


查詢建立了那些子目錄:SELECT * FROM dba_directories;


1.如下是bat命令匯出


@echo off


echo 備份執行開始!


set filename=%date:~8,2%  ::設定獲取當前系統日期


expdp gdxaorcl/
[email protected]
schemas=gdxaorcl dumpfile=%filename%.dmp DIRECTORY=expdp_dir


::使用expdp匯出,schemas指定使用者名稱,dumpfile指定匯出檔名稱,DIRECTORY即指導到指定目錄下


echo 備份執行完成!


2.Oracle資料庫匯入操作


資料庫匯入bat命令:


@echo 


set /a tui = %date:~8,2%-1 ::設定系統日期前一天的資料庫備份檔案


impdp gdxaorcl/[email protected]/ecampus file=%tui%.dmp log=%tui%.log full=y TABLE_EXISTS_ACTION=replace  ::(file指定要匯入的備份檔案注意:已經把%tui%.dmp複製到F:\app\Administrator\admin\ecampus\dpdump 下面了),log即日誌檔案,full=y ( 全庫匯出): 匯出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 這些系統使用者之外的所有使用者的資料。replace引數先drop表,然後建立表,最後插入資料。
========

Oracle資料庫備份、恢復及常見問題

http://www.cnblogs.com/Joanna-Yan/p/5070658.html
通常我們都是使用PL/SQL Developer來對Oracle中的資料物件和資料進行管理。如果我們想方便快速還原或者部署Oracle到新機器上,怎麼進行資料庫的備份、匯入恢復呢?


這裡我們必須要考慮的:如何建立Oracle表空間、建立Oracle資料庫;如何把Oracle物件、表資料匯出到sql指令碼中。


1、資料庫備份


(1)匯出資料庫物件


Tools-->ExportUser Objects,選擇需要匯出的資料庫物件,包括:表、序列、儲存過程、檢視、函式等。


(2)匯出表資料


Tools-->Export Tables,匯出資料到PL/SQL資料庫指令碼中。


2、新建表空間和Oracle資料庫


File-->New-->SQL Window,開啟SQL視窗輸入:


表空間、使用者名稱都為IGSC。


create tablespace IGSC datafile 'E:\IGSOracle\IGSC.dbf' size 10240M; 
--DROP TABLESPACE IGSC INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; 
create user IGSC identified by IGSC default tablespace IGSC; 
  
grant connect,resource to IGSC;  
grant dba to IGSC; 
--Revoke dba from IGSC;
複製程式碼
點選執行sql。此時,資料庫表空間、表結構、表資料齊全,可以開始遷移出一個完整的資料庫了。


3、匯入資料庫及物件


Tools-->Import Tables,先匯入資料庫物件,再匯入表資料,此時,你的表資料檔案可以分幾個檔案匯入也是不會報錯的,因為表結構已經存在。


執行過程中會出現如下介面:


到這,整個oracle資料庫的遷移工作已完成。注意:我們匯出的Oracle物件和資料庫預設還是原來Oracle資料庫的表空間和資料庫使用者名稱。如果想在新的資料庫伺服器中指定不同的表空間和資料庫使用者,則需要替換生成的sql指令碼中的表空間和使用者名稱的設定,並且第二步指定合理的表空間和資料庫使用者。


4、常見問題


(1)就是上面說的注意


我遇到的問題:新環境的資料庫中存在IGS表空間,我匯出的資料庫檔案IGSOracle.sql表空間預設也為IGS,結果在匯入資料庫物件到新表空間IGSC時,沒有匯入成功,卻匯入到了已存在的IGS表空間中。檢視IGSOracle.sql:


發現匯出的Oracle物件和資料庫預設還是原來Oracle資料庫的表空間和資料庫使用者名稱,我們要將表空間和使用者名稱都改為IGSC,重新匯入。


(2)ORACLE initialization or shutdown in progress


想刪除不想要了的資料庫和dbf檔案,停掉服務後刪除,重啟服務啟動資料庫例項時報錯。


 解決:


開始-->輸入,sqlplus /nolog


SQL> connect system/hope;


ERROR:
ORA-01033: ORACLE initialization or shutdown in progress【就是這個錯誤】
 
SQL> connect sys/hope as sysdba
已連線。
 
SQL> shutdown normal
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
 
SQL> start mount
SP2-0310: 無法開啟檔案 "mount.sql"
 
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area  612368384 bytes
Fixed Size                  1332348 bytes
Variable Size             183151492 bytes
Database Buffers          423624704 bytes
Redo Buffers                4259840 bytes
資料庫裝載完畢。
 
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01157: 無法標識/鎖定資料檔案 8 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 8: 'C:\TYKM.DBF'
 
SQL> alter database datafile 8 offline drop;【8是資料檔案中的8】
資料庫已更改。
 
SQL> alter database open;【一直迴圈這個語句,直至不再提示錯誤】
資料庫已更改。
 
SQL> shutdown normal
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
 
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area  612368384 bytes
Fixed Size                  1332348 bytes
Variable Size             187345796 bytes
Database Buffers          419430400 bytes
Redo Buffers                4259840 bytes
資料庫裝載完畢。
資料庫已經開啟。
 (3)ORA-1658 無法為表空間的段建立initial區
 原因:表空間大小
  解決:因為表資料比較大,我這裡將步驟二中的size改為了10240M。


(4)PL/SQL匯入表資料報錯Error reading file


當表資料檔案很大時,選擇Use Command Window方式匯入報錯。對大量資料的匯入選擇Use SQL*Plus,前者不能讀取大檔案,後者可以。
========

相關推薦

oracle 備份恢復學習總結

Oracle資料庫的備份與恢復 http://jingyan.baidu.com/article/b2c186c8eb7713c46ef6ff22.html Oracle資料庫有三種標準的備份方法,它們分別是匯出/匯入(EXP/IMP)、熱備份和冷備份。匯出備件是一種邏輯備

Oracle備份恢復

ron 還原 類型 修改 文件拷貝 per esp 主機數 segment 步驟:(面試) 1,在新主機DBCA建庫,實例名和原主機數據庫名一致2,在新主機創建用戶3,dbms_metadata.get_ddl導出表空間生成語句4,在新主機創建表空間5,exp導出原庫全部數

Oracle備份恢復(五)

備份 oracle 恢復 備份: 定義: 把數據庫復制到轉儲設備的過程。 轉儲設備: 放置數據庫副本的磁帶或磁盤。 原數據庫的備份: 存放於轉儲設備中的數據庫的副本。 分類: 物理與邏輯角度: 物理備份:

Oracle 備份恢復基礎

  Oracle 備份與恢復基礎 :三思筆記  備份與恢復 A whole database backup is either a consistent backup or an inconsistent backup. Whether a backup is consiste

oracle備份恢復--rman

(一)、建立恢復目錄1、建立恢復目錄資料庫#mkdir -p /u01/app/oracle/oradata/rmandb#chown -R oracle /u01/app/oracle/oradata/rmandb[[email protected] ~]#su - oracle[[email&#

oracle備份恢復--閃回技術

一•啟用閃回資料庫1.啟用歸檔模式sql>shutdown immediate;sql>startup mount;sql>alter database archivelog;2.建立閃回區sql>alter system set db_recovey_file_dest='/opt/

Oracle備份恢復方案設計及運維:23個典型問題解答及經驗分享

為了最大限度保障資料的安全性,同時能在不可預計災難的情況下保證資料的快速恢復,需要根據資料的型別和重要程度制定相應的備份和恢復方案。在這個過程中,DBA的職責就是要保證資料庫(其它資料由其它崗位負責)的高可用和高效能,比如:如何避免資料庫發生常規錯誤、如何增加MTBF、如

Linux運維學習之數據庫備份恢復

數據庫備份與恢復 linux xtrabackup 今天給大家帶來的是關於數據庫備份與恢復的教程,當我們手賤或者不知道什麽原因導致數據庫的崩潰,甚至刪除數據庫時怎麽辦,總不能跑路吧?所以我們做好日常的備份和相關的災後重建很有必要。 那麽備份都有什麽方式,方法呢?一,文件備份,就是很笨

Mysql DBA 高級運維學習筆記-MySQL備份恢復實戰案例及生產方案

人員 副本 and null logs 維護成本 2-0 register pos 1.全量備份與增量備份 1.1 全量備份 全量數據就是數據庫中所有的數據,全量備份就是把數據庫中所有的數據進行備份。 備份所有庫: mysqldump -uroot -p123456 -S

Oracle用戶管理的備份恢復介紹

Oracle備份恢復數據庫維護中,備份或恢復是重中之重的問題。盡管很多時候數據庫系統運行緩慢,但對數據庫數據的丟失而言,顯然後者損失的代價是不言而喻的,DBA首要的工作就是盡一切可能地做好數據的備份工作。 1.1、物理備份與邏輯備份01、物理備份是所有物理文件的一個副本,比如數據文件,控制文件,歸檔日誌等。該

Oracle 數據備份恢復

earch base 數據庫 ras show let oba bubuko red 前言一:備份與恢復概述二:RMAN 工具概述1: RMAN 組件 1: RMAN命令執行器 1 [oracle@localhost ~]$ rman target syste

Ubuntu全盤備份恢復,親自總結,實測可靠

崩潰 其它 是我 沒有 AS 備份文件 delayed tps 參數 https://blog.csdn.net/sinat_27554409/article/details/78227496 Ubuntu全盤備份與恢復,親自總結,實測可靠 初學者在使用Ubuntu

Oracle資料庫備份恢復 - 增量備份

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Oracle資料庫備份恢復 - RMAN恢復

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Oracle的資料備份恢復

備份解決方案: 1.物理備份:<1>冷備份(離線備份)                    <2>熱備份:使用者管理備份和Oracle管理部分 <1&g

ORACLE資料庫資料的備份恢復

  原創作品,轉自請在文字開頭顯眼位置註明出處:https://www.cnblogs.com/sunshine5683/p/10052949.html 資料備份恢復在資料庫管理中至關重要,今天,總結一下資料庫備份與恢復需要注意的方面和實際操作!、 一、在備份之前首先應該執行commit語句,

gitlab學習(二)備份恢復

參考:https://blog.csdn.net/ouyang_peng/article/details/77070977 參考:https://docs.gitlab.com.cn/ee/raketasks/backup_restore.html 官方管理員文件:https://doc

MongoDB 學習備份恢復(十)

備份 語法 mongodump -h dbhost -d dbname -o dbdirectory -h:伺服器地址,也可以指定埠號 -d:需要備份的資料庫名稱 -o:備份的資料存放位置,此

mongoDB 學習筆記純乾貨(mongoose、增刪改查、聚合、索引、連線、備份恢復、監控等等)

MongoDB - 簡介 MongoDB 是一個基於分散式檔案儲存的資料庫,由 C++ 語言編寫,旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案。 MongoDB 是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富

Oracle資料庫備份恢復的三種方法

Oracle資料庫有三種標準的備份方法,它們分別是匯出/匯入(EXP/IMP)、熱備份和冷備份。匯出備件是一種邏輯備份,冷備份和熱備份是物理備份。   一、 匯出/匯入(Export/Import)   利用Export可將資料從資料庫中提取出來,利用Impor