오라클 온라인 백업 스크립트 생성 SQL
온라인 백업을 하기 위해서 백업 명령어를 자동으로 생성해 주는 쿼리문
제외하고자 하는 테이블스페이스는 NOT IN 안에 기술 해 준다
SELECT script FROM (SELECT 1 gb# , ts# , 0 file# , 'alter tablespace ' || name || ' begin backup;' script FROM v$tablespace WHERE NAME NOT IN ('TEMP') UNION ALL SELECT 2 gb# , ts# , file# , '!cp ' || name || ' /backup/' || regexp_substr(name, '[^/]*\..*$') script FROM v$datafile UNION ALL SELECT 3 gb# , ts# , 0 file# , 'alter tablespace ' || name || ' end backup;' script FROM v$tablespace WHERE NAME NOT IN ('TEMP') ) ORDER BY ts#, gb#, file# ;출처 : http://oracleclub.com/article/57136
-- 내가 직접 짠것 : 결과 값이 위와 다르다, 위에 쿼리가 더 정확함 SELECT decode(lvl, 1, cmd1, 2, cmd2, 3, cmd3) AS cmd FROM (SELECT rownum AS no , a.ts# , b.file# , 'alter tablespace ' || a.NAME || ' begin backup;' AS cmd1 , '!cp ' || b.name || ' /backup/' || regexp_substr(b.name, '[^/]*\..*$') AS cmd2 , 'alter tablespace ' || a.name || ' end backup;' AS cmd3 FROM v$tablespace a , v$datafile b WHERE a.ts#=b.ts# AND a.NAME NOT IN ('TEMP') ORDER BY a.ts# asc, b.file# ) c , ( SELECT LEVEL AS lvl FROM dual CONNECT BY LEVEL <= 3 ) d ORDER BY c.no, d.lvl ;
최신 댓글