Поиск по этому блогу

четверг, марта 19, 2009

Горячий бекап ручками. Ну почти ручками.

Работает под Windows. Лень прилизывать.
Делаем батник
sqlplus -s /nolog @backup.sql

Файлик backup.sql
@@users_info
CONNECT &DBA_USER/&DBA_USER_PASSWORD@&NET_SERVICE_NAME
--@@users_info
------------------------------------------------------
--CONNECT sys/a@vpahomov as sysdba
------------------------------------------------------
set serveroutput on
set trimspool on
set line 500
set head off
set feed off
spool backup.cmd
declare
copy_cmnd constant varchar2(30) := 'ocopy';
copy_dest constant varchar2(30) := 'C:\BACKUP\';
dbname varchar2(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
where tablespace_name = c1.ts)
loop
dbms_output.put_line('host '||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;

Файлик users_info.sql
--------------------------------------
-- ПАРАМЕТРЫ ДЛЯ СОЕДИНЕНИЯ С БАЗОЙ
--------------------------------------
DEFINE DBA_USER = system
DEFINE DBA_USER_PASSWORD = a
DEFINE NET_SERVICE_NAME = vpahomov

Файлика backup.cmd у меня щас нет. Поэтому не прилагаю.