亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 10039 | 回復(fù): 12
打印 上一主題 下一主題

[分享] 數(shù)據(jù)庫表的備份和還原 [復(fù)制鏈接]

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-07-28 10:38 |只看該作者 |倒序?yàn)g覽
本帖最后由 toddhai 于 2015-09-01 16:45 編輯

最近在看oracle的書,看到數(shù)據(jù)庫的備份和恢復(fù)的時候在機(jī)器上練了練,現(xiàn)在把操作的步驟記下來,一邊以后的復(fù)習(xí)和改善



應(yīng)用實(shí)例:fin_test表的備份
操作環(huán)境:xp系統(tǒng),VMware虛擬機(jī),RedHat5.6,Oracle數(shù)據(jù)庫
操作之前的說明:我的RedHat上已經(jīng)預(yù)先安裝了Oracle,并且還有oracle用戶,并且數(shù)據(jù)庫中還有finance用戶

一.Oracle邏輯備份和恢復(fù)

   

    1 創(chuàng)建備份文件的存儲路徑:打開虛擬機(jī)登陸RedHat5.6,切換到Oracle用戶上(su - oracle),在主目錄(/home/oracle)下創(chuàng)建baup_dir,并賦予777權(quán)限(mkdir baup_dir;chmod 777 baup_dir)



    2 登陸數(shù)據(jù)庫:sqlplus /nolog conn /as sysdba(以管理員的身份登陸數(shù)據(jù)庫)


    3 在數(shù)據(jù)庫中定義備份文件的保存路徑:create directory baup_dir as '/home/oracle/baup_dir'
    然后執(zhí)行commit


    4 把baup_dir的讀、寫、執(zhí)行的權(quán)限賦給用戶(我的fin_test表屬于finance用戶):grant all on directory baup_dir to finance,然后執(zhí)行commit


    最后退出數(shù)據(jù)庫:quit


    5 將finance用戶的fin_test表備份到baup_dir目錄下(注意,這一語句是在退出數(shù)據(jù)庫之后執(zhí)行的,也就是說要在redhat命令行上執(zhí)行):expdp finance/yonghumima directory=baup_dir dumpfile=expdp_fin.dmp logfile=expdp_fin.log tables=fin_test

  

    以上步驟執(zhí)行完后,在baup_dir目錄下出現(xiàn)expdb_fin.dmp和expdb_fin.log兩個文件


恢復(fù):
    impdp finance/finance directory=bak_dir table_exists_action=truncate dumpfile=expdb_fin.dmp logfile=expdb_fin.log

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
2 [報告]
發(fā)表于 2015-07-28 16:19 |只看該作者
本帖最后由 toddhai 于 2015-07-29 16:20 編輯

二.Oracle冷備份和恢復(fù)的通常步驟:(經(jīng)過實(shí)驗(yàn)可行的方案)
1  正常關(guān)閉數(shù)據(jù)庫
2  備份所有重要的文件到備份目錄(數(shù)據(jù)文件、控制文件、重做日志文件等)
3  完成備份后啟動數(shù)據(jù)庫
  用冷備份進(jìn)行恢復(fù)時,只需要將所有文件恢復(fù)到原有位置,就可以啟動數(shù)據(jù)庫了 。

1  進(jìn)入數(shù)據(jù)庫#sqlplus "/as sysdba"
2  如果沒有啟動則要啟動:SQL>startup
3  查詢數(shù)據(jù)文件datafile的所在目錄:
SQL>SELECT name FROM v$datafile;
     查詢控制文件controlfile的所在目錄:
SQL>SELECT name FROM v$controlfile;
     查詢重做日志文件的所在目錄:
  SQL>SELECT member FROM v$logfile;
4  關(guān)閉數(shù)據(jù)庫
   SQL>shutdown
5  備份文件到備份的目錄
    #cp /u01/app/oracle/oradata/orcl/*.dbf  /home/mzl/BackupDatabase
    #cp /u01/app/oracle/oradata/orcl/*.ctl  /home/mzl/BackupDatabase
    #cp /u01/app/oracle/oradata/orcl/*.log  /home/mzl/BackupDatabase
6  然后啟動數(shù)據(jù)庫
   #sqlplus "/as sysdba"
   SQL>startup

   冷備份完畢!

轉(zhuǎn)自blog.itpub.net/12778571/viewspace-166613/

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
3 [報告]
發(fā)表于 2015-07-29 16:20 |只看該作者
本帖最后由 toddhai 于 2015-09-01 16:46 編輯

三.Oracle聯(lián)機(jī)備份和恢復(fù)前的準(zhǔn)備:歸檔模式

   根據(jù)我的理解,在聯(lián)機(jī)備份之前,需要先將數(shù)據(jù)庫(oracle)至于歸檔模式。
    那么什么是歸檔模式呢?
    oracle數(shù)據(jù)庫有聯(lián)機(jī)重做日志,他能記錄對數(shù)據(jù)庫的操作,比如插入、刪除和更新。一般的,數(shù)據(jù)庫會有兩個及以上聯(lián)機(jī)重做日志,這里我們以兩個為例進(jìn)行說明。當(dāng)聯(lián)機(jī)重做日志1被寫滿后,數(shù)據(jù)庫會切換到另一個聯(lián)機(jī)重做日志2中繼續(xù)記錄。那么日志2也被寫滿了怎么辦呢?
    前文講到聯(lián)機(jī)日志1和2,檔兩個日志都被寫滿后,數(shù)據(jù)庫會根據(jù)不同的工作模式(歸檔模式和非歸檔模式),采取不同的反應(yīng)。
    處于非歸檔模式是,當(dāng)聯(lián)機(jī)重做日志2被寫滿后,會切換到聯(lián)機(jī)重做日志1中繼續(xù)寫。那么日志1中之前的記錄怎么辦呢?當(dāng)然是直接刪除了。如此反復(fù),日志中的內(nèi)容也在被反復(fù)的刪除和記錄。
    處于歸檔模式時,當(dāng)聯(lián)機(jī)重做日志1 寫滿后,會切換到聯(lián)機(jī)重做日志2,此時數(shù)據(jù)庫會將聯(lián)機(jī)重做日志1備份到指定的目錄下。這樣當(dāng)聯(lián)機(jī)重做日志2被寫滿后切換到日志1時,雖然也會將日志1的內(nèi)容刪除,但是因?yàn)橹坝辛藗浞。也不用?dān)心我的操作記錄丟失了。(當(dāng)然,日志2被寫滿后也是會備份的)
    說了這么多,接下來就是配置數(shù)據(jù)庫的歸檔模式(摘自blog.itpub.net/12778571/viewspace-166616/)
    更改數(shù)據(jù)庫的歸檔模式需要重新啟動數(shù)據(jù)庫,在mount模式下修改,簡要步驟
1   以shutdown immediate 方式關(guān)閉數(shù)據(jù)庫
2  啟動實(shí)例到mount狀態(tài)
3  更改運(yùn)行模式并打開數(shù)據(jù)庫


操作步驟:
1   登錄數(shù)據(jù)庫查看數(shù)據(jù)庫的歸檔狀態(tài)
     SQL> archive log list;
     如果出現(xiàn)信息:
     Database log mode              No Archive Mode
     Automatic archival             Disabled
     則為非歸檔模式

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

3   啟動數(shù)據(jù)庫到mount狀態(tài)
     SQL>startup mount;

4   啟動歸檔模式
     SQL>alter database archivelog;       (非歸檔模式為:alter database noarchivelog)
   
5   打開數(shù)據(jù)庫
     SQL>alter database open;
      查看歸檔模式狀態(tài)
     SQL>archive log list
      如果出現(xiàn)信息:
      Database log mode              Archive Mode
      Automatic archival             Enabled
      成功改成歸檔模式

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
4 [報告]
發(fā)表于 2015-07-29 16:47 |只看該作者
本帖最后由 toddhai 于 2015-09-01 16:47 編輯

歸檔模式雖然會占用資源(需要備份聯(lián)機(jī)重做日志嘛),但是它的好處也是大大的!
根據(jù)之前做的數(shù)據(jù)庫全備份結(jié)合聯(lián)機(jī)重做日志,就可以還原出全備份時間到現(xiàn)在任意一點(diǎn)時間的數(shù)據(jù)庫(理論上)。

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
5 [報告]
發(fā)表于 2015-07-30 15:41 |只看該作者
重做日志和歸檔日志的區(qū)別:

重做日志是數(shù)據(jù)庫一直在記錄的操作,而歸檔日志則是數(shù)據(jù)庫在歸檔模式(數(shù)據(jù)庫的一種運(yùn)行模式)下備份的重做日志。換句話說,重做日志被備份保存后就變成了歸檔日志。想想也挺有道理,重做就是已經(jīng)發(fā)生的操作,歸檔就是保存嘛

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
6 [報告]
發(fā)表于 2015-08-04 16:55 |只看該作者
本帖最后由 toddhai 于 2015-08-04 16:55 編輯



    四.聯(lián)機(jī)備份的和恢復(fù)之用戶管理的熱備份

    說到熱備份,我就有些迷糊,為什么會分用戶管理和oracle管理(rman)兩種方式呢?現(xiàn)在還搞不懂,不過不管了,搞了再說。
    用戶管理的熱備份可以備份表空間,但是之前有一系列的準(zhǔn)備過程。
    步驟:
            1:備份前需要顯式地發(fā)出Begin Backup命令;
            2:在操作系統(tǒng)拷貝文件(包括數(shù)據(jù)文件、控制文件等);
            3:發(fā)出end backup命令通知數(shù)據(jù)庫完成備份;
            4:備份歸檔日志文件。

    詳細(xì)的步驟
            注意:首先要讓數(shù)據(jù)庫處于歸檔模式奧!因?yàn)榍耙黄┪闹兄v過了,所以省略了。
            1:查詢表空間位置(拷貝表的時候總得知道人家在哪里吧。
            select file_id,file_name,tablespace_name,status,bytes from dba_data_files;
            2:發(fā)出begin backup命令
            alter tablespace system begin backup;
            通過v$backup視圖來檢查表空間的備份情況
            select * from v$backup;
            3:拷貝文件(可以再開一個終端,在上面進(jìn)行拷貝,注意權(quán)限)
            cp /oracle/oradata/orcl/system01.dbf /home/liuxz/BackupDatabase/temp_file/ (/oracle/oradata/orcl/system01.dbf是第一部中得到的路徑奧)
            4:發(fā)出end backup命令,通知數(shù)據(jù)庫完成備份
               alter tablespace system end backup;
            5:用v$backup檢查表空間的備份情況
            select * from v$backup;
    完成!
參考blog.itpub.net/12778571/viewspace-166637/

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
7 [報告]
發(fā)表于 2015-08-11 11:14 |只看該作者
本帖最后由 toddhai 于 2015-08-11 11:37 編輯

五.RMAN備份之手動備份

首先得登陸RMAN,我的實(shí)例只有一個,所以用以下命令登錄:rman target / (可自行搜索rman的登陸方法)
備份文件保存路徑:/oracle/product/10.2.0/db_1/dbs (每個人的保存路徑不盡相同,但是大體路徑都是一樣的,一般會在/oracle下的dbs中)
以下涉及到的路徑是根據(jù)我的電腦得到的,并不代表oracle的標(biāo)準(zhǔn)路徑

1:數(shù)據(jù)庫全備份:backup database;

    備份文件來源:/oracle/oradata/orcl/*.dbf 和 /data/oracle/bank.dbf
    可以用以下命令查看備份文件的保存路徑和來源:list backup of database;

2:備份表空間:backup tablespace bank(表空間名);

3:備份數(shù)據(jù)文件:backup datafile n;

    n:指定的數(shù)據(jù)文件序號
    n的查詢:首先登陸數(shù)據(jù)庫,然后執(zhí)行select file_name,file_id,tablespace_name from dba_data_files;(注意,這段語句并不是在rman下執(zhí)行的,是在SQL>下執(zhí)行的)

4:備份控制文件:backup current controfile;

    做任何操作時,都會自動對控制文件做備份的命令:CONFIGURE CONTROLFILE AUTOBACKUP ON;

5:備份歸檔日志文件:backup archivelog all;

小結(jié):數(shù)據(jù)庫的全備份是將數(shù)據(jù)庫的所有數(shù)據(jù)進(jìn)行備份,剩下的幾種備份方式則是對數(shù)據(jù)庫中指定類型的數(shù)據(jù)進(jìn)行備份。以下是對各種備份方式的保存路徑和來源的查詢方式
    數(shù)據(jù)庫:list backup of database;
    表空間:list backup of tablespace bank;
    控制文件:list backup of datafile n;(n的查詢在第三條中有介紹)
    歸檔日志文件:list backup of archivelog all;

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
8 [報告]
發(fā)表于 2015-08-11 11:42 |只看該作者
六.RMAN備份之腳本備份

說明:采用0級全庫備份腳本和1級增量備份腳本

    1:0級全庫備份腳本
#!/bin/bash
. /home/oracle/.bash_profile
BACKUP_LEVEL=0
BACKUP_BASE=/oracle/backup/$ORACLE_SID/rman
LOG_FILE=$BACKUP_BASE/log/Level_$BACKUP_LEVEL\_`date +%Y%m%d.`log
DATA_BACK_PATH=$BACKUP_BASE/`date +%Y%m`/datafile
ARCHLOG_BACK_PATH=$BACKUP_BASE/`date +%Y%m`/archivelog
CTL_BACK_PATH=$BACKUP_BASE/`date +%Y%m`/controlfile
PFILE_PATH=$BACKUP_BASE/`date +%Y%m`/pfile
mkdir -p $BACKUP_BASE/log
date >> $LOG_FILE
mkdir -p $PFILE_PATH >> $LOG_FILE
mkdir -p $DATA_BACK_PATH >> $LOG_FILE
mkdir -p $ARCHLOG_BACK_PATH  >> $LOG_FILE
mkdir -p $CTL_BACK_PATH >> $LOG_FILE
rman  target / >> $LOG_FILE <<EOF
run {
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 90 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$CTL_BACK_PATH/%d_LVL`echo $BACKUP_LEVEL`_%F.ctl';
allocate channel d1 type disk;
# allocate channel d2 type disk;
# allocate channel d3 type disk;
# allocate channel d4 type disk;
backup incremental level $BACKUP_LEVEL format '$DATA_BACK_PATH/%d_LVL`echo $BACKUP_LEVEL`_%T_%u_s%s_p%p.dbf' database tag='level $BACKUP_LEVEL' include current controlfile;
sql 'alter system archive log current';
backup archivelog all format '$ARCHLOG_BACK_PATH/%d_AL_%T_%u_s%s_p%p.arh' delete input;
crosscheck backup;
delete noprompt obsolete;
delete noprompt expired backup;
release channel d1;
# release channel d2;
# release channel d3;
# release channel d4;
}
exit
EOF
if [ -f $ORACLE_HOME/dbs/init$ORACLE_SID.ora ]; then
cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora $PFILE_PATH/init$ORACLE_SID.ora.`date +%Y%m%d%H%M` >> $LOG_FILE
else
        echo "file `echo $ORACLE_HOME/dbs/init$ORACLE_SID.ora` not exist" >> $LOG_FILE
fi

if [ -f $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then
  cp $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $PFILE_PATH/spfile$ORACLE_SID.ora.`date +%Y%m%d%H%M` >> $LOG_FILE
else
        echo "file `echo $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora` not exist" >> $LOG_FILE
fi
date  >> $LOG_FILE
   
    2:   1級增量備份
        只需對0級全庫備份腳本稍作修改即可:將“BACKUP_LEVEL=0”改為“BACKUP_LEVEL=1”

論壇徽章:
0
9 [報告]
發(fā)表于 2015-08-12 10:59 |只看該作者
樓主寫的好,菜鳥好好學(xué)習(xí)中

論壇徽章:
5
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-01 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-02 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-11 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-09 06:20:00
10 [報告]
發(fā)表于 2015-08-12 16:50 |只看該作者
共勉
回復(fù) 9# litzhiai


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP