程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 解決方案:Oracl數據庫中大數據的備份

解決方案:Oracl數據庫中大數據的備份

編輯:Oracle數據庫基礎

問:公司裡的Oracle數據庫有20G之大(這是一個方案的大小.原來這個方案有30G,我已經把能刪的數據都刪了),怎麼備份?感覺備份一次好慢啊.專家有什麼指導一下的嗎?(另:20G的數據庫是不是備份也要20G這樣?)我希望能每周備份一次,最好每天一次.

  答:方法一:首選需要在UNIX下創建一個管道(只創建一次即可):

  $mknod ./exp_pipe p

  $ ls -l exp_pipe

  prw-rw-r-- 1 report group 0 Mar 17 05:20 exp_pipe

  然後通過管道,將EXP導出的數據直接壓縮,注意:下面二行要寫在同一個shell腳本中。

  compress < ./exp_pipe > ./tmp_now.dmp.Z &

  exp user/passwd@數據庫連接串 file=./exp_pipe direct=y compress=no log=./exp.log

  20G的DMP文件,壓縮後的大小在4G左右。

  方法二:考慮到機器的速度和效率的問題,一般不建議使用exp對數據量大的數據庫進行備份,因為比較慢。Oracle的rman備份可以支持增量備份,你可以自己設置一個備份策略,好比每周日做一次數據庫全備份(level 0 級的備份),然後周一周二做增量備份(level 1 級的備份),周三在做一次數據庫全備份(level 0),最後周四、周五、周六做數據庫的增量備份(level 1)。這樣既可以保證你的備份在大部分時間內比較快,而且也可一保證在需要恢復時較快。具體的備份策略要根據你的要求而定,我只是舉個例子。

  介紹一下什麼是Oracle的rman備份:

  Oracle 的RMAN備份- -

  查看那當前使用那個spfile文件 :

  SQL> select name,value from v$parameter where name='spfile';

  1。檢查數據庫的歸檔方式。如果不是規定方式,則要修改數據庫為歸檔方式。

1.1 以dba帳號登陸,

  $ sqlplus '/as sysdba';
  SQL> archive log list;
  Database log mode No Archive Mode #非歸檔方式
  Automatic archival Enabled
  Archive destination /Oracle/bakram/log_archive
  Oldest online log sequence 161
  Current log sequence 163

  1.2 如果第一步為 No Archive Mode ,則將數據庫修改修改為歸檔方式

  1.2.1 建立存檔路徑.

  $mkdir /Oracle/bakram/log_archive

  1.2.2 在/oracle/OracleHome/dbs/建立一文件 firstSpfile.ora

  文件內容為:

  SPFILE="/oracle/OracleHome/dbs/spfileorcyehoo.ora" # 實例名稱
  log_archive_start=true;
  log_archive_format=ARC%T%S.arc #格式
  log_archive_dest=/Oracle/bakram/log_archive #存放的路徑

  1.3 停止數據庫

  $/Oracle/dbstop.sh

  1.4 修改歸檔方式

  1.4.1 建立一個dbstartmount.sh文件

  --------
  echo "begin to start Oracle mount..."
  lsnrctl start
  sqlplus /nolog <
  connect /as sysdba
  startup mount
  exit
  exit
  sleep 10
  echo "oracle have started Oracle mount..."
  --------
  執行./dbstartmount.sh
  SQL>alert database archivelog;
  Database altered.
  將數據庫打開
  SQL> alert database open;
  Database altered.
  SQL>

1.5.配置dbstart.sh。 啟動數據庫

 

 $vi /Oracle/dbstart.sh #編輯啟動腳本
  ---------------------------------------------
  echo "begin to start Oracle..."
  lsnrctl start
  sqlplus /nolog <
  connect /as sysdba
  startup pfile="/oracle/OracleHome/dbs/firstSpfile.ora" #修改這裡。即啟動時加載自己配置的文件。
  exit
  exit
  sleep 10
  echo "Oracle have started..."
  --------------------------------------

  2. 創建RMAN目錄

  $ sqlplus system/data#yes

  2.1創建一個獨立的表空間

  SQL> create tablespace back datafile 'back_CSS.dmp' size 50m;

  2.2創建RMAN用戶

  SQL> create user rman identifIEd by rman default tablespace back temporary tablespace temp;

  2.3給RMAN授予權限

  SQL>grant connect,resource,recovery_catalog_owner to rman;

  2.4打開RMAN

  $RMAN

  2.5連接數據庫

  RMAN>connect catalog rman/rman;

  2.6 創建恢復目錄

  RMAN>create catalog tablespace back;

3. 注冊目標數據庫(需要備份的數據庫)

  3.1 注冊數據庫

  $rman target sys/data#yes catalog rman/rman@yehoo; #yehoo為實例名。
  ----
  Recovery Manager: Release 9.2.0.1.0 - Production
  Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
  connected to target database: YEHOO (DBID=2840368994)
  connected to recovery catalog database
  ----
  RMAN> register database;

  3.2 查詢恢復目錄

  怎麼能知道我們的Oracle9i是OLTP還是DSS

  4。備份

  備份表空間:

  backup tag 'tsuser' format '/Oracle/css_20041209_%u_%s_%p' tablespace CSS;

  5. 維護rman

  5.1 查看現有備份

  RMAN> list backup;

  5.2 列出過期備份

  RMAN> report obsolete

  6. 選擇備份策略

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved