一、 冷備份的概念
冷備份是指在數據庫關閉狀態下所做的物理拷貝,也稱脫機備份。
適合於非歸檔模式下的備份,而且也只能采用這種方式備份。
二、 需要備份的文件
必須備份的文件:
數據文件和控制文件
可以備份的文件:
重做日志文件、臨時文件、二進制參數文件(spfile)、口令文件
三、 冷備份的步驟
1. 找到所需要的備份文件
2. 正常關閉數據庫
3. 備份文件到指定的備份路徑下
4. 重新啟動數據庫
四、 冷腳本的寫法
4.1 查看文件位置及狀態
--查看實例和數據庫的相關信息
SQL> select instance_name,version,status,archiver,database_status from v$instance; INSTANCE_NAME VERSION STATUS ARCHIVE DATABASE_STATUS ---------------- ----------------- ------------ ------- ----------------- dbsrv1 11.2.0.1.0 OPEN STOPPED ACTIVE
SQL> select dbid,name,log_mode from v$database; DBID NAME LOG_MODE ---------- --------- ------------ 294555525 DBSRV1 NOARCHIVELOG
--查看數據文件及狀態信息
SQL> col file_name for a50 SQL> col tablespace_name for a15 SQL> select file_name,tablespace_name,status,online_status from dba_data_files; FILE_NAME TABLESPACE_NAME STATUS ONLINE_ -------------------------------------------------- --------------- --------- ------- /opt/oracle/app/oradata/dbsrv1/users01.dbf USERS AVAILABLE ONLINE /opt/oracle/app/oradata/dbsrv1/undotbs01.dbf UNDOTBS1 AVAILABLE ONLINE /opt/oracle/app/oradata/dbsrv1/sysaux01.dbf SYSAUX AVAILABLE ONLINE /opt/oracle/app/oradata/dbsrv1/system01.dbf SYSTEM AVAILABLE SYSTEM /opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf COSTCTL_TBS AVAILABLE ONLINE /opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF DEV_DATA AVAILABLE ONLINE /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf PDMS_DATA AVAILABLE ONLINE
查看數據文件
SQL> col name for a50 SQL> select file#, name, status from v$datafile; FILE# NAME STATUS ---------- -------------------------------------------------- ------- 1 /opt/oracle/app/oradata/dbsrv1/system01.dbf SYSTEM 2 /opt/oracle/app/oradata/dbsrv1/sysaux01.dbf ONLINE 3 /opt/oracle/app/oradata/dbsrv1/undotbs01.dbf ONLINE 4 /opt/oracle/app/oradata/dbsrv1/users01.dbf ONLINE 5 /opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf ONLINE 6 /opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF ONLINE 7 /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf ONLINE
--查看臨時文件
SQL> col name for a60 SQL> select name from v$tempfile; NAME ------------------------------------------------------------ /opt/oracle/app/oradata/dbsrv1/temp01.dbf /opt/oracle/app/oradata/costctl/COSTCTL_TBS_temp.dbf /opt/oracle/app/oradata/pdms/PDMS_DATA_TEMP.dbf
--查看日志文件
SQL> select member from v$logfile; MEMBER -------------------------------------------------- /opt/oracle/app/oradata/dbsrv1/redo03.log /opt/oracle/app/oradata/dbsrv1/redo02.log /opt/oracle/app/oradata/dbsrv1/redo01.log
--查看控制文件
SQL> select name from v$controlfile; NAME ------------------------------------------------------------ /opt/oracle/app/oradata/dbsrv1/control01.ctl /opt/oracle/app/flash_recovery_area/dbsrv1/control02.ctl
--查看參數文件
SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ---------- ------------------------------ spfile string /opt/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/spfiledbsrv1.ora
4.2 進行備份
方案一、
--創建備份目錄
SQL> ho mkdir -p /u03/backup/coolbak
--使用連接符生成復制文件命令
SQL> select 'ho cp' ||name|| '/u03/backup/coolbak' from v$controlfile; 'HOCP'||NAME||'/U03/BACKUP/COOLBAK' -------------------------------------------------------------------------------- ho cp/opt/oracle/app/oradata/dbsrv1/control01.ctl/u03/backup/coolbak ho cp/opt/oracle/app/flash_recovery_area/dbsrv1/control02.ctl/u03/backup/coolbak
SQL> save /tmp/tmpbak.sql; --將上面的輸入保存為tmpbak.sql Created file /tmp/tmpbak.sql
編輯coolbak.sql
注意修改密碼文件的位置和pfile的名字
set feedback off set heading off set verify off set trimspool off set pagesize 0 set linesize 200 define dir = '/u03/backup/coolbak' define script = '/u03/backup/coolbak.txt' define passwd = '/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl' spool &script select 'ho cp -pv ' || name || ' &dir' from v$controlfile union all select 'ho cp -pv ' || name || ' &dir' from v$datafile union all select 'ho cp -pv ' || member || ' &dir' from v$logfile union all select 'ho cp -pv ' || name || ' &dir' from v$tempfile / create pfile = '&dir/initorcl.ora' from spfile; ho cp -pv &passwd &dir spool off shutdown immediate ho mkdir -pv /u03/backup/coolbak ho rm -rf /u03/backup/coolbak/* start &script startup
--執行coolbak.sql
SQL> @/tmp/coolbak.sql;
--執行過程及數據庫啟動略
--啟動后查看備份的文件
需要注意的是這種方式不利於恢復,得去尋找恢復的目錄最好在cool后建立與數據庫相同的目錄。
冷恢復的步驟
脫機恢復到原來位置的步驟:
1. 如果數據庫沒有關閉,需關閉數據庫
2. 將所有的備份數據文件和備份控制文件復制到數據庫原來的位置
3. 也可以將其它所有的備份文件復制到數據庫原來的位置(該操作不是必須的)
4. 重啟數據庫
恢復成功后,數據庫即恢復到上一次的備份,恢復所需要的時間就是復制文件所需要的時間
脫機恢復到非原來位置的步驟:
有時候儲存數據文件的磁盤壞了,可能需要改變數據文件的恢復位置
1. 將備份文件恢復到正常的磁盤上
2. 將數據庫加載為mount狀態(startup mount)
3. alter database rename file 'u01/xxx.DBF' to 'u02/xxx.DBF' (u01磁盤損壞)
4. alter database open