通過手工管理資料庫備份的方式通常是在對資料庫進行檔案方面的操作,這個過程需要管理者全面參與并且手工完成。與使用RMAN不同的是手工管理不再完全依賴系統定義的參數進行配置。
手工冷備步驟
在完全關閉資料庫的情況下,我們可以通過拷貝資料庫的資料檔案,控制檔案和重做日志檔案來完整的備份資料庫。
首先檢視檔案位置:
1
2
3
<code>SQL> </code><code>select</code> <code>file_name from dba_data_files;</code>
<code>SQL> </code><code>select</code> <code>name from </code><code>v</code><code>$controlfile;</code>
<code>SQL> </code><code>select</code> <code>group</code><code>#,member,status from v$logfile;</code>
安全關閉資料庫:
<code>SQL> </code><code>shutdown</code> <code>immediate;</code>
然後依次建立datafile,controlfile, redofile三個備份目錄,将對應檔案一次拷貝到這三個目錄即可。
對資料庫恢複也隻需要将備份的資料拷貝到原來的位置,然後啟動資料庫即可。
手工熱備步驟
在使用聯機熱備功能的時候需要将資料置于歸檔模式.
4
5
6
7
8
<code>SQL> archive log list;</code>
<code>Database log mode Archive Mode</code>
<code>Automatic archival Enabled</code>
<code>Archive destination USE_DB_RECOVERY_FILE_DEST</code>
<code>Oldest online log sequence 27</code>
<code>Next log sequence to archive 29</code>
<code>Current log sequence 29</code>
<code>SQL></code>
顯示處于開啟狀态。檢視程序狀态正常:
<code>[root@temp-</code><code>test</code> <code>~]</code><code># ps -ef|grep arc</code>
<code>oracle 8724 1 0 Nov06 ? 00:00:02 ora_arc0_orcl</code>
<code>oracle 8726 1 0 Nov06 ? 00:00:04 ora_arc1_orcl</code>
<code>oracle 8728 1 0 Nov06 ? 00:00:02 ora_arc2_orcl</code>
<code>oracle 8730 1 0 Nov06 ? 00:00:02 ora_arc3_orcl</code>
設定歸檔日志檔案的備援,保證資料安全:
檢視歸檔日志相關參數:
<code>SQL> show parameter log_archive_dest;</code>
建立三個目錄,分别存放三分相同的歸檔日志作為備援備份:
<code>[oracle@temp-</code><code>test</code> <code>~]$ </code><code>mkdir</code> <code>-p </code><code>/data/app/backup/arc</code><code>{1..3} </code>
<code>[oracle@temp-</code><code>test</code> <code>~]$ ll </code><code>/data/app/backup/</code>
<code>total 0</code>
<code>drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc1</code>
<code>drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc2</code>
<code>drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc3</code>
設定3個歸檔目錄:
<code>SQL> alter system </code><code>set</code> <code>log_archive_dest_1=</code><code>'location=/data/app/backup/arc1 mandatory'</code><code>;</code>
<code>System altered.</code>
<code>SQL> alter system </code><code>set</code> <code>log_archive_dest_2=</code><code>'location=/data/app/backup/arc2 optional'</code><code>;</code>
<code>SQL> alter system </code><code>set</code> <code>log_archive_dest_3=</code><code>'location=/data/app/backup/arc3'</code><code>;</code>
檢視設定資訊:
<code>SQL> show parameter log_archive;</code>
mandatory表示強制日志歸檔的目錄,要求日志資料必須歸檔成功後才可以切換,optional是可選的歸檔不成功也可以切換日志,如果optional目錄損壞,不影響日志歸檔。
執行日志切換,歸檔檔案會儲存到指定的目錄中:
<code>SQL> alter system switch logfile;</code>
生成三份相同的歸檔檔案:
<code>[oracle@temp-</code><code>test</code> <code>backup]$ tree </code><code>/data/app/backup/</code>
<code>/data/app/backup/</code>
<code>├── arc1</code>
<code>│ └── 1_29_959021937.dbf</code>
<code>├── arc2</code>
<code>└── arc3</code>
<code> </code><code>└── 1_29_959021937.dbf</code>
設定最少必須歸檔成功的日志數量,必須成功兩份:
<code>SQL> alter system </code><code>set</code> <code>log_archive_min_succeed_dest=2;</code>
<code>SQL> show parameter log_archive_min_succeed_Dest;</code>
<code>NAME TYPE VALUE</code>
<code>------------------------------------ ----------- ------------------------------</code>
<code>log_archive_min_succeed_dest integer 2</code>
由于總共隻有三個備援檔案,如果設定的數量大于3會報錯。
備份資料,檢視表空間對應的資料檔案:
9
10
<code>SQL> col file_name </code><code>for</code> <code>a47</code>
<code>SQL> col tablespace_name </code><code>for</code> <code>a10</code>
<code>SQL> </code><code>select</code> <code>file_id,file_name,tablespace_name from dba_data_files;</code>
<code> </code><code>FILE_ID FILE_NAME TABLESPACE</code>
<code>---------- ----------------------------------------------- ----------</code>
<code> </code><code>4 </code><code>/data/app/oracle/oradata/orcl/users01</code><code>.dbf USERS</code>
<code> </code><code>3 </code><code>/data/app/oracle/oradata/orcl/undotbs01</code><code>.dbf UNDOTBS1</code>
<code> </code><code>2 </code><code>/data/app/oracle/oradata/orcl/sysaux01</code><code>.dbf SYSAUX</code>
<code> </code><code>1 </code><code>/data/app/oracle/oradata/orcl/system01</code><code>.dbf SYSTEM</code>
<code> </code><code>5 </code><code>/data/app/oracle/oradata/orcl/example01</code><code>.dbf EXAMPLE</code>
這裡我們備份USER表,ID為4,将表置于備份模式:
<code>SQL> alter tablespace </code><code>users</code> <code>begin backup;</code>
<code>Tablespace altered.</code>
檢視備份狀态,ID為4的user表顯示為active:
<code>SQL> </code><code>select</code> <code>* </code><code>from</code> <code>v$backup;</code>
<code> </code><code>FILE# STATUS CHANGE# </code><code>TIME</code>
<code>---------- ------------------ ---------- ---------</code>
<code> </code><code>1 </code><code>NOT</code> <code>ACTIVE 0</code>
<code> </code><code>2 </code><code>NOT</code> <code>ACTIVE 0</code>
<code> </code><code>3 </code><code>NOT</code> <code>ACTIVE 0</code>
<code> </code><code>4 ACTIVE 1529624 07-NOV-17</code>
<code> </code><code>5 </code><code>NOT</code> <code>ACTIVE 0</code>
然後直接使用系統的cp指令,拷貝對應目錄下的資料檔案,到備份目錄即可。然後結束備份模式:
<code>SQL> alter tablespace </code><code>users</code> <code>end backup;</code>
<code>SQL> </code><code>select</code> <code>* from </code><code>v</code><code>$backup;</code>
<code> </code><code>FILE</code><code># STATUS CHANGE# TIME</code>
<code> </code><code>1 NOT ACTIVE 0</code>
<code> </code><code>2 NOT ACTIVE 0</code>
<code> </code><code>3 NOT ACTIVE 0</code>
<code> </code><code>4 NOT ACTIVE 1529624 07-NOV-17</code>
<code> </code><code>5 NOT ACTIVE 0</code>
将目前重做日志資訊寫入歸檔日志檔案:
11
<code>SQL> alter system archive log current;</code>
<code># 一段時間後,檢查點恢複一緻</code>
<code>SQL> </code><code>select</code> <code>checkpoint_change</code><code>#, file# from v$datafile;</code>
<code>CHECKPOINT_CHANGE</code><code>#FILE#</code>
<code>------------------ ----------</code>
<code> </code><code>1530603 1</code>
<code> </code><code>1530603 2</code>
<code> </code><code>1530603 3</code>
<code> </code><code>1530603 4</code>
<code> </code><code>1530603 5</code>
本文轉自 酥心糖 51CTO部落格,原文連結:http://blog.51cto.com/tryingstuff/1979626