oracle冷备份和恢复自动产生sql源代码

王朝oracle·作者佚名  2008-05-31
宽屏版  字体: |||超大  

以下是Oracle冷备份及恢复自动产生sql源代码

各变量含义为:

COLD_BACK_DIR: 冷备份目录

SCRIPT_FILE: 此代码所生成的批处理文件路径及文件名称

LOG_FILE: 备份日志文件存放路径及文件名称

INT_PWD: internal用户的口令

以下代码存成sql文件后

可以通过COMMAND :sqlplus internal/oracle@sqcdb @产生备份SQL代码的原文件名 来运行。

冷备份SQL源代码如下:

--You must have select privileges on the v$parameter

--v$logfile v$datafile and v$controlfile data

--dictionary views belonging to SYS to run this program

define COLD_BACK_DIR = e:\oradb\coldbackups

define SCRIPT_FILE = e:\back\coldbackup.bat

define LOG_FILE= e:\back\coldbackup.log

define INT_PWD = oracle

set pages 0 feed off echo off time off

set verify off

col a new_value b

col c new_value d

select value a,to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') c from v$parameter where name ='db_name';

spool &SCRIPT_FILE

prompt rem ***** COLDBACKUP ORACLE DATABASE FOR &b ON WINDOWS NT ON &d*****

prompt

prompt set ShutDownFile=C:\ShutDown.SQL

prompt echo connect internal/&INT_PWD %ShutDownFile%

prompt echo shutdown immediate %ShutDownFile%

prompt echo startup %ShutDownFile%

prompt echo shutdown normal %ShutDownFile%

prompt echo exit %ShutDownFile%

prompt

prompt rem ***** SHUTDOWN THE DATABASE *******

prompt set oracle_sid=&b

prompt svrmgrl @%ShutDownFile%

prompt

-- prompt net stop OracleStart%oracle_sid%

prompt net stop OracleService%oracle_sid%

prompt

prompt rem ***** SET BACKUP FILES DirectorY *****

prompt md e:\oradb

prompt md e:\oradb\coldbackups

prompt

prompt rem ***** COPY FILES *****

prompt rem Redo logs

prompt

select 'copy 'member' &COLD_BACK_DIR /y' from v$logfile;

prompt

prompt rem Datafile;

prompt

select 'copy 'name' &COLD_BACK_DIR /y' from v$datafile;

prompt

prompt rem Control files

prompt

select 'copy 'name' &COLD_BACK_DIR /y' from v$controlfile;

prompt

prompt rem Init.ora files

prompt

select 'copy c:\oracle\admin\sqcdb\pfile\init.ora ''&COLD_BACK_DIR /y' from dual;

prompt

prompt rem Net Config files

prompt

select 'copy C:\Oracle\Ora81\NETWORK\ADMIN\*.ora ''&COLD_BACK_DIR /y'from dual;

prompt

prompt rem *********START UP DATABASE AND SERVICES********

prompt net start OracleService%oracle_sid%

-- prompt net start OracleStart%oracle_sid%

prompt

prompt set StartFile=C:\start.SQL

prompt echo connect internal/&INT_PWD %StartFile%

prompt echo startup %StartFile%

prompt echo exit %StartFile%

prompt

prompt svrmgrl @%StartFile%

prompt

prompt del /Q %ShutDownFile%

prompt del /Q %StartFile%

prompt set LogFile=&LOG_FILE

prompt echo COMPLETE COLD BACKUP FOR "&b" DATABASE STARTED ON &d ... %logFile%

prompt exit

spool off

$&SCRIPT_FILE

$del &SCRIPT_FILE

exit

冷恢复SQL源代码如下:

--You must have select privileges on the v$parameter

--v$logfile v$datafile and v$controlfile data

--dictionary views belonging to SYS to run this program

define COLD_BACK_DIR = e:\oradb\coldbackups

define SCRIPT_FILE = e:\back\coldrecover.bat

define LOG_FILE= e:\back\coldcov.log

define INT_PWD = oracle

set pages 0 feed off echo off time off

col a new_value b

col c new_value d

select value a,to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') c from v$parameter where name='db_name';

spool &SCRIPT_FILE

prompt rem ***** COLDRECOVER ORACLE DATABASE FOR &b ON WINDOWS NT ON &d*****

prompt

prompt set ShutDownFile=C:\ShutDown.SQL

prompt echo connect internal/&INT_PWD %ShutDownFile%

prompt echo shutdown immediate %ShutDownFile%

prompt echo startup %ShutDownFile%

prompt echo shutdown normal %ShutDownFile%

prompt echo exit %ShutDownFile%

prompt

prompt rem ***** SHUTDOWN THE DATABASE *******

prompt set oracle_sid=&b

prompt svrmgrl @%ShutDownFile%

prompt

-- prompt net stop OracleStart%oracle_sid%

prompt net stop OracleService%oracle_sid%

prompt

prompt rem ***** SET BACKUP FILES DIRECTORY *****

prompt cd &COLD_BACK_DIR

prompt

prompt rem ***** COPY FILES *****

-- select 'xcopy e:\oradb\backups /E /V 'substr(member,1,length(member)-11) from v$logfile

-- where group#=1;

prompt rem Redo logs

prompt

select 'copy 'substr(member,instr(rtrim(member),'\',-1,1)+1,length(rtrim(member)))' 'member from v$logfile;

prompt

prompt rem Datafile

prompt

select 'copy 'substr(name,instr(rtrim(name),'\',-1,1)+1,length(rtrim(name)))' 'name from v$datafile;

prompt

prompt rem Control files

prompt

select 'copy 'substr(name,instr(rtrim(name),'\',-1,1)+1,length(rtrim(name)))' 'name from v$controlfile;

prompt

prompt rem Init.ora files

prompt

select 'rename c:\oracle\admin\sqcdb\pfile\init.ora init.ora.bak' from dual;

select 'copy init.ora c:\oracle\admin\sqcdb\pfile ' from dual;

prompt

prompt rem Net Config files

prompt

select 'rename C:\Oracle\Ora81\NETWORK\ADMIN\*.ora *.ora.bak' from dual;

select 'copy *.ora C:\Oracle\Ora81\NETWORK\ADMIN 'from dual;

prompt

prompt rem *********START UP DATABASE AND SERVICES********

prompt net start OracleService%oracle_sid%

-- prompt net start OracleStart%oracle_sid%

prompt

prompt set StartFile=C:\start.SQL

prompt echo connect internal/&INT_PWD %StartFile%

prompt echo startup %StartFile%

prompt echo exit %StartFile%

prompt

prompt svrmgrl @%StartFile%

prompt

prompt del /Q %ShutDownFile%

prompt del /Q %StartFile%

prompt set LogFile=&LOG_FILE

prompt echo COMPLETE COLD RECOVER FOR "&b" DATABASE ON &d ... %logFile%

prompt exit

spool off

$&SCRIPT_FILE

$del &SCRIPT_FILE

exit

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有