經過手工管理數據庫備份的方式一般是在對數據庫進行文件方面的操做,這個過程須要管理員全面參與而且手工完成。與使用RMAN不一樣的是手工管理再也不徹底依賴系統定義的參數進行配置。sql
手工冷備步驟數據庫
在徹底關閉數據庫的狀況下,咱們能夠經過拷貝數據庫的數據文件,控制文件和重作日誌文件來完整的備份數據庫。安全
登陸數據庫:bash
# sqlplus sys as sysdba
首先查看文件位置:oracle
SQL> select file_name from dba_data_files; SQL> select name from v$controlfile; SQL> select group#,member,status from v$logfile;
安全關閉數據庫:app
SQL> shutdown immediate;
而後依次建立datafile,controlfile, redofile三個備份目錄,將對應文件一次拷貝到這三個目錄便可。ide
對數據庫恢復也只須要將備份的數據拷貝到原來的位置,而後啓動數據庫便可。spa
手工熱備步驟日誌
在使用聯機熱備功能的時候須要將數據置於歸檔模式.進程
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 27 Next log sequence to archive 29 Current log sequence 29 SQL>
顯示處於開啓狀態。查看進程狀態正常:
[root@temp-test ~]# ps -ef|grep arc oracle 8724 1 0 Nov06 ? 00:00:02 ora_arc0_orcl oracle 8726 1 0 Nov06 ? 00:00:04 ora_arc1_orcl oracle 8728 1 0 Nov06 ? 00:00:02 ora_arc2_orcl oracle 8730 1 0 Nov06 ? 00:00:02 ora_arc3_orcl
設置歸檔日誌文件的冗餘,保證數據安全:
查看歸檔日誌相關參數:
SQL> show parameter log_archive_dest;
新建三個目錄,分別存放三分相同的歸檔日誌做爲冗餘備份:
[oracle@temp-test ~]$ mkdir -p /data/app/backup/arc{1..3} [oracle@temp-test ~]$ ll /data/app/backup/ total 0 drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc1 drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc2 drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc3
設置3個歸檔目錄:
SQL> alter system set log_archive_dest_1='location=/data/app/backup/arc1 mandatory'; System altered. SQL> alter system set log_archive_dest_2='location=/data/app/backup/arc2 optional'; System altered. SQL> alter system set log_archive_dest_3='location=/data/app/backup/arc3'; System altered.
查看設置信息:
SQL> show parameter log_archive;
mandatory表示強制日誌歸檔的目錄,要求日誌數據必須歸檔成功後才能夠切換,optional是可選的歸檔不成功也能夠切換日誌,若是optional目錄損壞,不影響日誌歸檔。
執行日誌切換,歸檔文件會保存到指定的目錄中:
SQL> alter system switch logfile; System altered.
生成三份相同的歸檔文件:
[oracle@temp-test backup]$ tree /data/app/backup/ /data/app/backup/ ├── arc1 │ └── 1_29_959021937.dbf ├── arc2 │ └── 1_29_959021937.dbf └── arc3 └── 1_29_959021937.dbf
設置最少必須歸檔成功的日誌數量,必須成功兩份:
SQL> alter system set log_archive_min_succeed_dest=2; System altered.
SQL> show parameter log_archive_min_succeed_Dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_min_succeed_dest integer 2
因爲總共只有三個冗餘文件,若是設置的數量大於3會報錯。
備份數據,查看錶空間對應的數據文件:
SQL> col file_name for a47 SQL> col tablespace_name for a10 SQL> select file_id,file_name,tablespace_name from dba_data_files; FILE_ID FILE_NAME TABLESPACE ---------- ----------------------------------------------- ---------- 4 /data/app/oracle/oradata/orcl/users01.dbf USERS 3 /data/app/oracle/oradata/orcl/undotbs01.dbf UNDOTBS1 2 /data/app/oracle/oradata/orcl/sysaux01.dbf SYSAUX 1 /data/app/oracle/oradata/orcl/system01.dbf SYSTEM 5 /data/app/oracle/oradata/orcl/example01.dbf EXAMPLE
這裏咱們備份USER表,ID爲4,將表置於備份模式:
SQL> alter tablespace users begin backup; Tablespace altered.
查看備份狀態,ID爲4的user表顯示爲active:
SQL> select * from v$backup; FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- --------- 1 NOT ACTIVE 0 2 NOT ACTIVE 0 3 NOT ACTIVE 0 4 ACTIVE 1529624 07-NOV-17 5 NOT ACTIVE 0
而後直接使用系統的cp命令,拷貝對應目錄下的數據文件,到備份目錄便可。而後結束備份模式:
SQL> alter tablespace users end backup; Tablespace altered. SQL> select * from v$backup; FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- --------- 1 NOT ACTIVE 0 2 NOT ACTIVE 0 3 NOT ACTIVE 0 4 NOT ACTIVE 1529624 07-NOV-17 5 NOT ACTIVE 0
將當前重作日誌信息寫入歸檔日誌文件:
SQL> alter system archive log current; System altered. # 一段時間後,檢查點恢復一致 SQL> select checkpoint_change#, file# from v$datafile; CHECKPOINT_CHANGE#FILE# ------------------ ---------- 1530603 1 1530603 2 1530603 3 1530603 4 1530603 5