简单在线备份 script

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Backup

rem -----------------------------------------------------------------------

rem Filename: backup.sql

rem Purpose:Generate script to do a simple on-line database backup.

rem Notes:Adjust the copy_cmnd and copy_dest variables and run from

rem sqlplus. Uncomment last few lines to do the actual backup.

rem Author: Frank Naude, Oracle FAQ

rem -----------------------------------------------------------------------

set serveroutput on

set trimspool on

set line 500

set head off

set feed off

spool backup.cmd

declare

copy_cmnd constant varchar2(30) := 'cp'; -- Use "ocopy" for NT

copy_dest constant varchar2(30) := '/backup/'; -- C:\BACKUP\ for NT

dbnamevarchar2(30);

logmode varchar2(30);

begin

select name, log_mode

into dbname, logmode

from sys.v_$database;

if logmode < 'ARCHIVELOG' then

raise_application_error(-20000,

'ERROR: Database must be in ARCHIVELOG mode!!!');

return;

end if;

dbms_output.put_line('spool backup.'dbname'.'

to_char(sysdate, 'ddMonyy')'.log');

-- Loop through tablespaces

for c1 in (select tablespace_name ts

from sys.dba_tablespaces)

loop

dbms_output.put_line('alter tablespace 'c1.ts' begin backup;');

-- Loop through tablespaces' data files

for c2 in (select file_name fil

from sys.dba_data_files

wheretablespace_name = c1.ts)

loop

dbms_output.put_line('!'copy_cmnd' 'c2.fil' 'copy_dest);

end loop;

dbms_output.put_line('alter tablespace 'c1.ts' end backup;');

end loop;

-- Backup controlfile and switch logfiles

dbms_output.put_line('alter database backup controlfile to trace;');

dbms_output.put_line('alter database backup controlfile to '''''

copy_dest'control.'dbname'.'

to_char(sysdate,'DDMonYYHH24MI')''''';');

dbms_output.put_line('alter system switch logfile;');

dbms_output.put_line('spool off');

end;

/

spool off

set head on

set feed on

set serveroutput off

-- Unremark/uncomment the following line to run the backup script

-- @backup.cmd

-- exit

End Backup

rem -----------------------------------------------------------------------

rem Filename: end_backup2.sql

rem Purpose:Take database data files out of backup mode

rem Notes: Run from SVRMGRL

rem Author: Frank Naude, Oracle FAQ

rem -----------------------------------------------------------------------

connect internal

spool end_backup2.log

select 'alter database datafile '''f.name''' end backup;'

from v$datafile f, v$backup b

where b.file# = f.file#

andb.status = 'ACTIVE'

/

spool off

!

grep '^alter' end_backup2.log end_backup2.log2

@end_backup2.log2

! rm end_baclup.log

! rm end_backup.log2

exit

或者使用这个sql

rem -----------------------------------------------------------------------

rem Filename: end_backup.sql

rem Purpose:This script will create a file called end_backup_script.sql

rem and run it to take all tablespaces out of backup mode.

rem Author: Frank Naude, Oracle FAQ

rem -----------------------------------------------------------------------

column cmd format a80 heading "Text"

set feedback off

set headingoff

set pagesize 0

spool end_backup_script.sql

select 'alter tablespace 'a.tablespace_name' end backup;' cmd

from sys.dba_data_files a, sys.v_$backup b

whereb.status = 'ACTIVE'

andb.file#= a.file_id

group by a.tablespace_name

/

spool off

set feedback on

set headingon

set pagesize 24

set termouton

start end_backup_script.sql

#将所有错误记录到一个table里

rem -----------------------------------------------------------------------

rem Filename: db-error.sql

rem Purpose:Log all database errors to a table

rem Oracle8i or above/ DBA or CREATE ANY TRIGGER privs/ and

remGRANT SELECT ON SYS.V_$SESSION required

rem Date: 21-Mar-2000

rem Author: Nico Booyse (booysen@saps.org)

rem -----------------------------------------------------------------------

drop trigger log_errors_trig;

drop table log_errors_tab;

create table log_errors_tab (

error varchar2(30),

timestamp date,

usernamevarchar2(30),

osuservarchar2(30),

machine varchar2(64),

process varchar2(8),

program varchar2(48));

create or replace trigger log_errors_trig

after servererror on database

declare

var_user varchar2(30);

var_osuser varchar2(30);

var_machinevarchar2(64);

var_processvarchar2(8);

var_programvarchar2(48);

begin

select username, osuser, machine, process, program

into var_user, var_osuser, var_machine, var_process, var_program

from sys.v_$session

whereaudsid = userenv('sessionid');

insert into log_errors_tab

values(dbms_standard.server_error(1),sysdate,var_user,

var_osuser,var_machine,var_process,var_program);

end;

/

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