1. 程式人生 > >oracle資料庫的備份和還原

oracle資料庫的備份和還原

1 簡介

本手冊描述Oracle資料庫的備份還原機制,幫助應用Oracle資料庫,為了保證資料庫的安全,避免外界因素造成資料庫中資料丟失,有效的備份可以更好的重建資料庫,在修改刪除表或者表空間以前或者以後執行適當的備份是相當必要的,備份時建議使用直接登入伺服器或者利用ssh工具登入伺服器利用相關的系統命令進行操作,避免使用PLSQL工具進行操作,影響備份的結果,本文件適合有一定oralce經驗人員進行閱讀,以Oracle Linux 6.5為環境基礎,oracle 版本為11.2.0.4,其他的版本請自行測試,避免出現其他的問題。

而對於ORACLE資料庫的備份方法主要分為兩大類。第一類是物理備份,第二類是邏輯備份。而物理備份又分為冷備份和熱備份。

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

優點:能簡單快速地備份。能簡單快速地恢復。執行簡單。

缺點:必須關閉資料庫,不能進行點恢復。 

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

優點:備份時資料庫可以是開啟的。熱備份可以用來進行點恢復。初始化引數檔案、歸檔日誌在資料庫正常執行時是關閉的,可用作業系統命令拷貝。

缺點:執行過程複雜。由於資料庫不間斷執行,測試比較困難。不能用作業系統實用工具拷貝開啟的檔案。必須使用Oracle提供的ocopy工具來拷貝開啟的檔案。熱備份可能造成CPU、I/O過載,應在資料庫不太忙時進行。 

邏輯備份是利用export進行資料備份。這個直接根據提示來就可完成。

優點:能執行物件或者行恢復。備份和恢復速度更快。能夠跨作業系統平臺遷移資料庫。資料庫可一直執行。

缺點:export並不是冷備份和熱備份的替代工具。冷、熱備份可保護介質失效。export備份可保護使用者或應用錯誤。

3 備份方案

1、關閉資料庫;

使用命令 shutdown immediate;

2、備份所有相關的資料庫檔案:

1)  初始化引數檔案    $ORACLE_HOME/dbs/*.ora

2)  控制檔案(可用select name from v$controlfile;列出所有控制檔案)

3)  資料檔案(可用select name from v$datafile;列出所有資料檔案)

4)  Redo日誌(可用select member fromv$logfile;列出所有redo日誌檔案)

5)  歸檔的Redo日誌(可用select sequence#,first_timefrom v$loghist;列出所有歸檔redo日誌檔案的順序號和產生時間)。

1)     root使用者登入伺服器

mkdir /backup/ctl /backup/dbf /backup/redo/backup/dbs   #新建Oracle資料庫備份目錄

chown -Roracle:oinstall /backup/      #設定目錄許可權為oinstall使用者組的oracle使用者

(使用者oracle與使用者組oinstall是在安裝Oracle資料庫時設定的)

2)     備份相關的檔案

su- oracle  #跳轉到oracle使用者

cp /oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/control02.ctl/backup/ctl   #複製控制檔案到指定目錄/backup/ctl

cp /oradata/orcl/*.dbf /backup/dbf  #複製資料檔案到指定的目錄/backup/dbf

cp /oradata/orcl/redo*.log /backup/redo   #複製redo日誌檔案到指定目錄/backup/redo

cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/*/backup/dbs  #複製引數檔案到指定目/backup/dbs

1、將資料庫開啟歸檔模式

SQL> shutdown immediate;  關閉資料庫

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;   資料庫進入mount模式

ORACLE instance started.

SQL> alter database archivelog;   啟用歸檔模式

Database altered.

SQL> alter database open;     開啟資料庫

Database altered.

SQL> alter system archive log start;  啟用自動歸檔模式

System altered.

檢視是否啟用了歸檔模式

SQL> archive log list;

如果顯示下邊的提示代表啟動歸檔模式,且自動歸檔模式開啟

非歸檔日誌模式下產生的備份日誌對於歸檔模式已經不可用了,這一步非常重要

1、拷貝引數檔案到備份目錄  (引數檔案在資料庫啟動後處於關閉狀態)

cp/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora/backup/reback/

2、將需要備份的表空間(TS_DC)設為備份狀態:

SQL> ALTER TABLESPACE TS_DCBEGIN BACKUP;  將表空間TS_DC設定為開啟備份狀態

Tablespace altered.

[[email protected] orcl]$ cp/oradate/orcl/TS_DC.DBF /backup/reback/  拷貝資料檔案到備份目錄

SQL> ALTER TABLESPACETS_DC END BACKUP;  將表空間TS_DC設定為關閉備份狀態

Tablespace altered.

如還有其他要備份的表空間,重複步驟2

SQL> archive log list;         獲取當前的日誌順序號

如下所示,日誌序列號為4-6(從oldest online logsequence開始到current log sequence的聯機redo日誌應該是熱備份的一部分)

SQL> ALTER SYSTEM SWITCHLOGFILE ;     強制日誌歸檔

System altered.

cp -R/u01/app/oracle/fast_recovery_area/ORCL/archivelog/ /backup/reback/  備份歸檔日誌檔案到/backup/reback/  (arc檔案為歸檔日誌)

SQL> ALTER DATABASEBACKUP CONTROLFILE TO '/backup/reback/control.bkp'; 將控制檔案備份到/backup/reback/下,備份的字尾名無所謂

Database altered.

檢查備份的檔案是否齊全(1、歸檔日誌2、控制檔案 3、引數檔案 4、資料檔案)

注意事項,步驟中涉及的fast_recovery_area目錄為閃回區,在不更改預設歸檔日誌的情況下會將日誌放在閃回區中,閃回區很容易爆滿,閃回區的大小在新建資料庫例項時候可以設定,當不勾選時候是無限制的拓展。

3.3.1.1 export自動備份資料庫的步驟

1)     root使用者登入伺服器

mkdir -p /backup/oracledata                #新建Oracle資料庫備份目錄

chown -R oracle:oinstall /backup/oracledata -R #設定目錄許可權為oinstall使用者組的oracle使用者

(使用者oracle與使用者組oinstall是在安裝Oracle資料庫時設定的)

2)     建立目錄物件

因為使用expdp命令需要使用到目錄物件(directory),所以首先需要建立目錄物件,並賦予某個使用者對目錄物件的操作許可權。

操作步驟如下:

su- oracle    #切換到oracle使用者

sqlplus/ as sysdba   #切換到SQLPLUS環境

執行以下命令:

createdirectory expdp_bak_dir as '/backup/oracledata';    #指定EXPDP輸出目錄

grantcreate any directory to system;                    #授予system許可權

3)     編輯自動備份指令碼

vi/backup/oracledata/ordatabak.sh          #新建檔案,輸入以下程式碼

#/bin/sh

exportORACLE_SID=orcl

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

exportNLS_LANG=american_america.zhs16gbk

exportDATA_DIR=/backup/oracledata

now=`date +%Y%m%d%H%M%S `

dmpfile=db$now.dmp

echostart exp $dmpfile ...

/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdpsystem/newcapec DUMPFILE=$dmpfilelogfile=db$now.log DIRECTORY=expdp_bak_dir full=y

echo"Delete the file bakup before 6 days..."

find/backup/oracledata/ -mtime +6 -name "*.dmp" -exec rm -rf '{}' \;

echo"Delete the file bakup successfully. "

echo"Bakup completed."

chmod +x/backup/oracledata/ordatabak.sh   #新增指令碼執行許可權

程式碼中紅色的orcl修改為自己的實際資料庫名稱 system/newcapec 修改為實際的使用者名稱和密碼

3.3.1.2 Export手動備份資料庫的步驟

1)     root使用者登入伺服器

mkdir -p /backup/               #新建Oracle資料庫備份目錄

chown -R oracle:oinstall /backup/ -R #設定目錄許可權為oinstall使用者組的oracle使用者

(使用者oracle與使用者組oinstall是在安裝Oracle資料庫時設定的)

2)     手動備份的命令

一、全量備份整個庫為TS_DC檔案

1、  設定視窗字符集格式

NLS_LANG=AMERICAN_AMERICA.AL32UTF8

2、  匯出全量資訊到備份檔案目錄/backup中的TD_DC檔案以及日誌檔案

expdp system/[email protected] file=/backup/TS_DC.dmplog=/backup/TS_DC.log full=y;

二、按使用者備份資料庫為user檔案

1、  設定視窗字符集格式

NLS_LANG=AMERICAN_AMERICA.AL32UTF8

2、  匯出user使用者資訊到備份檔案目錄/backup中的user檔案以及日誌檔案

expdp system/[email protected] owner=user file=/backup/user.dmplog=/backup/user.log;

被動式異機備份指在熱備份或者邏輯備份完成成將資料及時傳輸到另一臺機器,保持多份資料,避免因伺服器無法正常啟動後資料無法取出,造化資料無法恢復。

這裡主要介紹在window環境中使用wincsp軟體通過定時任務自動比較同步下載資料庫備份資訊

1、  首先在window系統中安裝winscp軟體,可以在網上自行下載,也可在下邊下載

雙擊安裝即可

接受協議進行安裝

2、  安裝完成後將下邊指令碼拷貝到安裝的根位置

修改指令碼中的使用者名稱,密碼,伺服器地址,以及下載的位置和伺服器備份的位置

winscp.exe /console/command "option batch continue" "option confirm off""open  root:[email protected]:22""option transfer binary" "cd /backup""lcd d:/backup/" "optionsynchdelete off" "synchronize local" exit

root:[email protected]:22       伺服器使用者名稱、密碼、伺服器地址

cd /backup伺服器存放路徑

lcd d:/backup/本地存放路徑

ynchronize local                     從網路同步到本地

option synchdelete off                關閉同步後刪除

3、  在window工作管理員中制定定時任務(這裡主要介紹window10)

在左下角開始選單出點擊右鍵,在彈出的狀態列中點選搜尋,“任務計劃”

在彈出的任務中點選建立任務


輸入對應的名稱、描述、以及安全選項

設定好任務執行的時間間隔

設定執行指令碼的位置

設定完成後點選確定

在彈出的視窗中輸入本機的密碼,任務計劃建立

被動式異機備份指在另一臺機器上連線到oracle資料庫直接使用指令碼進行備份,不依賴資料庫伺服器的備份指令碼,與被動式備份結合,保證資料的穩定性,保持多份資料,避免因伺服器無法正常啟動後資料無法取出,造化資料無法恢復。

下邊將主要介紹在window中如何備份Linux中oralce資料庫

1、  Window主機上需要安裝oracle客戶端,確認利用PLSQL工具可以正常訪問資料庫

按照圖示部分修改需要備份資料庫的使用者名稱、密碼和例項名,備份位置可以根據情況修改,這裡是備份在D:\backup

相關推薦

SQL Server 2008之master資料庫備份還原

知識部分系統資料庫:SQL Server 2008 R2預設包括四個系統資料庫,分別是master、model、msdb、tempdb。其中master資料庫用以記錄所有系統級別的資訊、所有的登陸賬戶和系統配置設定。同時記錄所有其他的資料庫資訊,其中包括資料庫檔案的位置,同時還記錄所有SQL Server的初

oracle資料庫備份還原語句

1.匯入語句 (1)全匯入:imp 使用者名稱/密碼@例項名 full=y file=資料庫備份檔案路徑 ignore=y; (2)單表匯入:imp  username/[email protected]:port/servername file="E:\dmp

oracle資料庫備份還原

一  關於expdp和impdp     使用EXPDP和IMPDP時應該注意的事項:EXP和IMP是客戶端工具程式,它們既可以在客戶端使用,也可以在服務端使用。EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在客戶端使用。IMP只適用於EXP匯出的檔案,不適用於EXPDP匯出

MySQL詳解(20)-----------資料庫備份還原

資料備份: 使用mysqldump命令備份 mysqldump命令可以講資料庫中的資料備份成一個文字檔案。表結果和表中的資料將儲存在生成的文字中。mysqldump的工作原理很簡單。他先查出需要備份的

oracle資料庫備份還原

1 簡介本手冊描述Oracle資料庫的備份還原機制,幫助應用Oracle資料庫,為了保證資料庫的安全,避免外界因素造成資料庫中資料丟失,有效的備份可以更好的重建資料庫,在修改刪除表或者表空間以前或者以後執行適當的備份是相當必要的,備份時建議使用直接登入伺服器或者利用ssh工具

Linux環境下實現MariaDB資料庫的三種備份還原

一、tar工具的使用  1、備份 (1)停止服務,3306埠關閉 (2)看下配置檔案有沒有關鍵日誌存放於其它目錄的,檢查/etc/my.cnf,再檢查下/etc/my.cnf.d/下有沒有配置檔案放置其他地方,有的話也需要一起拷貝歸檔 (3)建立備份目錄,歸檔 (4)開啟服

Oracle資料庫備份,expexpdp的區別,impimpdp的區別

oracle資料庫備份 1: 建立dmp匯出目錄  create directory 目錄名 as '目錄路徑' 2: 檢視當前建立的所有dmp匯出目錄 select * from dba_directories 3: 備份 expdp 使用者名

[實驗-視訊過程]oracle備份-整個資料庫-備份恢復操作演示

先檢視資料版本和資料檔案所在位置 10g以上版本支援整體表空間熱備份 select * from v$version; select name from v$datafiles; 確認是否為歸檔模式 archive log list; 如果不是改成歸檔模

資料庫資料的備份還原

資料庫新資料備份及還原: 1、以Oracle操作為例子、 還原說明: 【在進行資料還原imp時,要cd切換到備份檔案存放的目錄下,在進行下一步操作】 還原指令: imp -【import】+匯入到的使用者/密碼 + file=要匯入的指定的資料備份檔案 fromuser=要匯入那個資料庫

MySQL資料庫(表)的匯入匯出(備份還原) mysql 根據一張表資料更新另一張表

(select * from crawlDocs order by DocCrawlTime desc limit 2000 into outfile '/tmp/weixinData' FIELDS TERMINATED BY ',';) 一般最好是匯出到/tmp目錄下,因為這樣mysql使用者也可以寫入。

SQL Server2014資料庫備份還原

在系統開發的過程中,把DB備份,並還原到其他的伺服器上,或者在本機上在還原出一個數據庫的操作很常見。 大概步驟是: 1.以sa賬號登入,在需要備份的DB上選擇右鍵->任務->備份 2. 在彈出的視窗中選擇備份資料庫,備份型別,預設是當前右鍵選擇的資料庫,備份型

用分離、附加的方式實現sql server資料庫備份還原

一、資料庫分離、附加的說明 SQL Server提供了“分離/附加”資料庫、“備份/還原”資料庫、複製資料庫等多種資料庫的備份和恢復方法。這裡介紹一種學習中常用的“分離/附加”方法,類似於大家熟悉的“檔案拷貝”方法,即把資料庫檔案(.MDF)和對應的日誌檔案(.LDF)再拷貝到任何需要恢復這個資料庫的系統磁

快速備份還原 MySQL 資料庫的另一種方法

一直使用 SQL Server 作為公司產品的資料庫來儲存系統資料,所以備份還原一直都不是問題,因為 SQL Server 的備份還原非常迅速和易用。但今年公司改變策略,使用起 MySQL 資料庫作為新產品的資料庫後,我們終於遇到了備份還原的大難題:我們需要把客戶的

用Java程式碼備份還原MySQL資料庫

package com.liuzy.javaopen.servlet; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;

mysql資料庫備份還原的總結

此外需要特別注意的一點時,不加--databases對資料庫進行備份後,如過被備份的資料庫直接被刪除後,無法直接用備份進行恢復,因為 “mysqldump -u root -p db_name>E:/db.sql”只備份了db_name資料庫下的所有表,檔案中不包括建立資料庫的CREATE DATABA

linux下 mysql資料庫備份還原

#mysqldump db_name >/path/name.sql 上面的命令意思是把一個庫匯出到一個SQL檔案. 當然,你直接在有ROOT密碼的機子上執行以上命令一定會報錯.所以,請用 #mysqldump db_name >/path/na

linux命令備份還原mysql資料庫

一. 備份資料庫(如: test): ①可直接進入後臺即可.(MySQL的預設目錄:/var/lib/mysql ) ②輸入命令: [[email protected] mysql]# mysqldump -u root -p test>

遠端備份oracle到本地還原

本地備份其他機器上的資料庫,找到了一個用doc命令的備份方法,簡單記錄如下: 備份:    exp 使用者名稱/密碼@要連線的遠端計算機IP/要備份的遠端資料庫名稱 file=檔案路徑  注:1:此使用者必須擁有dba的許可權         2:為了能正常執行exp命令,

PHP執行Mysql數據庫的備份還原

文本文件 l數據庫 pst backup 裏的 建表 文件名 log mysq 使用mysqldump命令備份 mysqldump命令將數據庫中的數據備份成一個文本文件。表的結構和表中的數據將存儲在生成的文本文件中。 mysqldump命令的工作原理很簡單。它先查出需要備份

SQL Server2012數據庫的備份還原

任務 分享 img 點擊 鼠標右鍵 tin 彈出 http alt 一、數據庫的備份: 1、選擇要備份的數據庫“accountInfo”,點擊鼠標右鍵 → 任務 → 備份 2、在打開的“備份數據庫 &mdash