Files
mip/Documentation/SupportingDocumentation/DatabaseScripts/hotbackup.sql
2008-08-28 09:56:01 +00:00

84 lines
2.8 KiB
SQL

REM $Id$
SET SERVEROUTPUT ON
store set set_settings.sql
set feedback off pagesize 0 heading off verify off
set linesize 100 trimspool on
DEFINE backup_dir = 's:\orabackup\webmip\files\'
REM Determine the oldest archive log to be backed up
archive log list;
alter system switch logfile;
REM
REM produce a SQL script that:
REM places each tablespace into 'backup' mode,
REM copies the contents of the tablespace to the
REM backup directory,
REM returns each tablespace from 'backup' mode
REM
PROMPT *** SPOOLING
spool do_backup.sql
WITH tsp_df AS (
SELECT tsp.tablespace_name
,df.file_name
,rownum AS current_row
,first_value(rownum) over(PARTITION BY tsp.tablespace_name) AS first_row
,last_value(rownum) over(PARTITION BY tsp.tablespace_name) AS last_row
FROM dba_tablespaces tsp
,dba_data_files df
WHERE tsp.contents <> 'TEMPORARY'
AND tsp.tablespace_name = df.tablespace_name
)
SELECT cmd
FROM (SELECT 'alter tablespace ' || tablespace_name || ' begin backup;' AS cmd
,tablespace_name
,1 AS seq
FROM tsp_df
WHERE current_row = first_row
UNION
SELECT 'host ocopy ' || file_name || ' &&backup_dir' AS cmd
,tablespace_name
,2 AS seq
FROM tsp_df
WHERE (current_row = first_row)
OR (current_row <> first_row AND current_row <> last_row)
OR (current_row = last_row AND last_row <> first_row)
UNION
SELECT 'alter tablespace ' || tablespace_name || ' end backup;' AS cmd
,tablespace_name
,3 AS seq
FROM tsp_df
WHERE current_row = last_row)
ORDER BY tablespace_name
,seq
/
spool off;
PROMPT *** SPOOLING COMPLETE
@set_settings
@@do_backup
REM
REM Create SQL script to add temporary files to temporary tablespaces
REM
set feedback off pagesize 0 heading off verify off
set linesize 100 trimspool on
spool create_tempfile$.sql
select 'alter tablespace '||ts.name||' add tempfile '''||df.name||''' size '|| df.bytes||' reuse;' from v$tempfile df, v$tablespace ts
where ts.ts# = df.ts#
/
spool off
host move create_tempfile$.sql &&backupdir\create_tempfiles.sql
@set_settings
REM
REM create control file for the standby database
REM create backup control file for the primary database
REM
alter database create standby controlfile as 's:\orabackup\webmip\files\standby.ctl';
alter database backup controlfile to 's:\orabackup\webmip\files\backup.ctl';
REM
REM create a database initialization script for
REM the standby database
REM
create pfile='s:\orabackup\webmip\files\initstandby.ora' from spfile;
REM
REM Determine the current archive log to be backed up
archive log list;
alter system switch logfile;