oracle數(shù)據(jù)庫備份與恢復 a piece of cake(3)
2024-08-29 13:42:35
供稿:網(wǎng)友
Oracle數(shù)據(jù)庫在線備份:(windows平臺) 1. 檢查你的數(shù)據(jù)庫是否運行在Archive模式下。 以system連接數(shù)據(jù)庫運行以下的查詢語句。 SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------- ------------
DEMO ARCHIVELOG 假如你的log_mode顯示為archivelog, OK你的數(shù)據(jù)庫可以進行在線的備份。否則參考文檔修改數(shù)據(jù)為archive mode。 2. 建立教本治理目錄 C:/oracle/admin/admin script 3. 建立數(shù)據(jù)庫備份的腳本
在上面建立的目錄下建立如下的兩個腳本。
3.1 建立執(zhí)行備份任務的腳本(批處理文件)
文件內容如下: @echo OFF
Rem ===========================================================================
Rem NAME - Open_Backup_Run.bat
Rem FUNCTION - Creates a backup script for a User Managed backup
Rem NOTES - This script will create a script and run OS copy commands
Rem on closed (cold) database
Rem MODIFIED - Tianliang Guo 02/08/12
Rem =========================================================================== Rem For Windows, set environment variables for the root path.
set ORACLE_SID=TSTDB
set ORACLE_CONNECTSTRING=tstdb
set ORACLE_BASE=c:/oracle
set ORACLE_HOME=%ORACLE_BASE%/ora81
set ORACLE_DATA=%ORACLE_BASE%/oradata/%ORACLE_SID%
set ORACLE_ADMIN=%ORACLE_BASE%/admin/%ORACLE_SID% %ORACLE_HOME%/bin/sqlplus /nolog @Open_Backup.sql > Open_Backup.sql.log 3.2 建立完成備份認為的命令文件(sqlplus內執(zhí)行的sql腳本) 文件內容如下: Rem =====================================================================================
Rem NAME - Open_Backup.sql
Rem FUNCTION - Creates a backup command file for a User Managed Open database backup
Rem NOTES - This script will create a script and run OS copy commands
Rem on an open (hot) database. The datafile backups will be inconsistent.
Rem MODIFIED - Mr. Tianliang Guo 2002/08/11
Rem =====================================================================================
Rem
Rem Set SQL*Plus variables to manipulate output
Rem set heading off
set pagesize 0
set linesize 600
set verify off
set trimspool on
set feedback off Rem Set SQL*Plus user variables used in script define adm = 'sys'
define pwd = 'oracle8i' Rem Windows User variables
define dir = 'C:/oracle/admin/TSTDB/backup'
define fil = 'open_backup_commands.sql'
define spo = 'open_backup_output.lst'
define ctl = '&dir/control.ctl'
define cpy = 'ocopy' Rem login database
connect &adm/&pwd as sysdba; Rem Create a file containing all the file copy commands needed for open user managed backup set serveroutput on
spool &fil
PRompt spool &spo
prompt archive log list;;
prompt alter system switch logfile;;
prompt alter system archive log all;; DECLARE
CURSOR cur_tablespace IS
SELECT tablespace_name
FROM dba_tablespaces; CURSOR cur_datafile (tn VARCHAR) IS
SELECT file_name
FROM dba_data_files
WHERE tablespace_name = tn;
BEGIN
FOR ct IN cur_tablespace LOOP
dbms_output.put_line ('alter tablespace 'ct.tablespace_name' begin backup;');
FOR cd IN cur_datafile (ct.tablespace_name) LOOP
dbms_output.put_line ('host &cpy 'cd.file_name' &dir');
END LOOP;
dbms_output.put_line ('alter tablespace 'ct.tablespace_name' end backup;');
END LOOP; END;
/ prompt alter system switch logfile;;
prompt alter database backup controlfile to '&ctl' REUSE;;
prompt alter database backup controlfile to trace;; prompt archive log list;;
prompt spool off
spool off; Rem Run the copy file commands from the Operating system
@&
exit;
4. 修改教本定義的變量 在運行教本中定義的一些變量,將其改為本地數(shù)據(jù)庫安裝環(huán)境的變量。 需要修改的變量有, 在close_Backup_run.bat腳本中:
set ORACLE_SID=TSTDB
set ORACLE_CONNECTSTRING=tstdb
set ORACLE_BASE=c:/oracle
set ORACLE_HOME=%ORACLE_BASE%/ora81
在close_backup.sql腳本中:
define adm = 'sys'
define pwd = 'oracle8i'
define dir = 'C:/oracle/admin/TSTDB/backup'
define ctl = '&dir/control.ctl' 5. 執(zhí)行數(shù)據(jù)庫備份任務 在$ORACLE_BASE/admin/admin_script目錄下運行open_Backup_run.bat 6. 執(zhí)行自動備份 在windows系統(tǒng)中添加計劃任務,定期運行open_Backup_run.bat