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;
/