oracle脚本热备,oracle数据库手工冷热备脚本

本文介绍了如何手动进行数据库的冷备和热备,包括使用SQL脚本来复制数据文件和控制文件。冷备通过关闭数据库进行,而热备则在归档日志模式下进行,确保数据的最小丢失。这些实践操作有助于理解RMAN和其他备份工具在数据库备份过程中的具体工作原理。
摘要由CSDN通过智能技术生成

虽然现在的大部分生产库都是在用RMAN或者第三方软件来进行备份。但是练习手工冷热备让你明白RMAN或者第三方软件具体都做了一些什么。

手工冷备脚本

set echo off trimspool  off heading off  feedback off verify off time off

set pagesize 0 linesize 200

define bakdir='/home/oracle/prod_bak/cold_bak';                        //自己的备份路径

define bakscp='/home/oracle/prod_bak/cold_cmd.sql';               //他会产生一个CMD脚本

spool &bakscp

select 'host cp '||name||' &bakdir' from v$datafile;

select 'host cp '||name||' &bakdir' from v$controlfile;

spool off

shutdown immediate

@&bakscp

startup

手工热备脚本

必须在归档日志的前提下,否则报错

set pagesize 0 linesize 200

define bakdir='/home/oracle/prod_bak/hot_bak';          //设置备份路径

define bakscp='/home/oracle/prod_bak/hot_cmd.sql';   //会产生一个CMD文件

set serveroutput on

spool &bakscp

prompt alter system switch logfile;;

declare

cursor cu_tablespace is

select tablespace_name from dba_tablespaces where contents not like '%TEMP%' and status='ONLINE';

cursor cu_datafile(name varchar2) is

select file_name from dba_data_files where tablespace_name=name;

begin

for i in cu_tablespace loop

dbms_output.put_line('alter tablespace '||i.tablespace_name||' begin backup;');

for j in cu_datafile(i.tablespace_name) loop

dbms_output.put_line('host cp '||j.file_name||' &bakdir');

end loop;

dbms_output.put_line('alter tablespace '||i.tablespace_name||' end backup;');

end loop;

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

dbms_output.put_line('alter database backup controlfile to ''&bakdir/control01.ctl'' reuse;');

end;

/

prompt alter system switch logfile;;

spool off

@&bakscp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值