设为首页 收藏本站
查看: 626|回复: 0

[经验分享] oracle手工热备份脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-6-17 10:17:15 | 显示全部楼层 |阅读模式
热备的步骤:
alter database/tablespace XXX begin backup
cp files
alter database/tablespace XXX end backup
执行命令后,会在数据块拷贝完后写入新的scn号。


首先新建两个目录,分别为cold_bak和hot_bak,分别用作冷备份和热备份转储的位置。[oracle@rtest oracle]$ cd bak
[oracle@rtest bak]$ mkdir cold_bak
[oracle@rtest bak]$ mkdir hot_bak
[oracle@rtest bak]$ pwd
/u01/app/oracle/bak
[oracle@rtest bak]$ ls
cold_bak  hot_bak



1、查看有哪些表空间,临时表空间不用备份。

sys@TEST0910> select tablespace_name,contents,status from dba_tablespaces;
SYSTEM                         PERMANENT ONLINE
SYSAUX                         PERMANENT ONLINE
UNDOTBS1                       UNDO      ONLINE
TEMP                           TEMPORARY ONLINE
USERS                          PERMANENT ONLINE
EXAMPLE                        PERMANENT ONLINE
TESTTBS                        PERMANENT ONLINE
sys@TEST0910> select tablespace_name from dba_tablespaces where contents not like 'TEMP%'
  2  and status='ONLINE';
SYSTEM
SYSAUX
UNDOTBS1
USERS
EXAMPLE
TESTTBS

2、查看某个表空间下有哪些数据文件。
sys@TEST0910> select file_name from dba_data_files where tablespace_name='USERS';
/u01/app/oracle/oradata/test0910/users01.dbf

3、编写存储过程,备份数据文件和控制文件,转储到新的位置。
sys@TEST0910> declare
  2          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;
  7  begin
        for i in cu_tablespace loop
                dbms_output.put_line('alter tablespace '|| i.tablespace_name||' begin backup;');
10                  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;');
14          end loop;
        dbms_output.put_line('alter database backup controlfile to trace;');
        dbms_output.put_line('alter database backup controlfile to ''&bakdir/control01.ctl'';');
end;
18  /
alter tablespace SYSTEM begin backup;
host cp /u01/app/oracle/oradata/test0910/system01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace SYSTEM end backup;
alter tablespace SYSAUX begin backup;
host cp /u01/app/oracle/oradata/test0910/sysaux01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace SYSAUX end backup;
alter tablespace UNDOTBS1 begin backup;
host cp /u01/app/oracle/oradata/test0910/undotbs01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace UNDOTBS1 end backup;
alter tablespace USERS begin backup;
host cp /u01/app/oracle/oradata/test0910/users01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace USERS end backup;
alter tablespace EXAMPLE begin backup;
host cp /u01/app/oracle/oradata/test0910/example01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace EXAMPLE end backup;
alter tablespace TESTTBS begin backup;
host cp /u01/app/oracle/oradata/test0910/testtb.dbf /u01/app/oracle/bak/hot_bak
alter tablespace TESTTBS end backup;
alter database backup controlfile to trace;
alter database backup controlfile to '/u01/app/oracle/bak/hot_bak/control01.ctl';

  • 热备脚本:
set echo off trimspool off heading off feedback off verify off time off
set pagesize 0 linesize 200
define bakdir='/u01/app/oracle/bak/hot_bak'
define bakscp='/u01/app/oracle/bak/hot_cmd.sql'
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'';');
end;
/
spool off
@&bakscp
  • 执行脚本:
sys@TEST0910> @/u01/app/oracle/bak/hot_bak.sql
alter system switch logfile;
alter tablespace SYSTEM begin backup;
host cp /u01/app/oracle/oradata/test0910/system01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace SYSTEM end backup;
alter tablespace SYSAUX begin backup;
host cp /u01/app/oracle/oradata/test0910/sysaux01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace SYSAUX end backup;
alter tablespace UNDOTBS1 begin backup;
host cp /u01/app/oracle/oradata/test0910/undotbs01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace UNDOTBS1 end backup;
alter tablespace USERS begin backup;
host cp /u01/app/oracle/oradata/test0910/users01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace USERS end backup;
alter tablespace EXAMPLE begin backup;
host cp /u01/app/oracle/oradata/test0910/example01.dbf /u01/app/oracle/bak/hot_bak
alter tablespace EXAMPLE end backup;
alter tablespace TESTTBS begin backup;
host cp /u01/app/oracle/oradata/test0910/testtb.dbf /u01/app/oracle/bak/hot_bak
alter tablespace TESTTBS end backup;
alter database backup controlfile to trace;
alter database backup controlfile to '/u01/app/oracle/bak/hot_bak/control01.ctl';




系统位置查看:
[oracle@rtest bak]$ more hot_bak.sql
set echo off trimspool off heading off feedback off verify off time off
set pagesize 0 linesize 200
define bakdir='/u01/app/oracle/bak/hot_bak'
define bakscp='/u01/app/oracle/bak/hot_cmd.sql'
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'';');
end;
/
spool off
@&bakscp

[oracle@rtest bak]$ more hot_cmd.sql
alter system switch logfile;
alter tablespace SYSTEM begin backup;                                                                              
host cp /u01/app/oracle/oradata/test0910/system01.dbf /u01/app/oracle/bak/hot_bak                                   
alter tablespace SYSTEM end backup;                                                                                 
alter tablespace SYSAUX begin backup;                                                                              
host cp /u01/app/oracle/oradata/test0910/sysaux01.dbf /u01/app/oracle/bak/hot_bak                                   
alter tablespace SYSAUX end backup;                                                                                 
alter tablespace UNDOTBS1 begin backup;                                                                             
host cp /u01/app/oracle/oradata/test0910/undotbs01.dbf /u01/app/oracle/bak/hot_bak                                 
alter tablespace UNDOTBS1 end backup;                                                                              
alter tablespace USERS begin backup;                                                                                
host cp /u01/app/oracle/oradata/test0910/users01.dbf /u01/app/oracle/bak/hot_bak                                    
alter tablespace USERS end backup;                                                                                 
alter tablespace EXAMPLE begin backup;                                                                              
host cp /u01/app/oracle/oradata/test0910/example01.dbf /u01/app/oracle/bak/hot_bak                                 
alter tablespace EXAMPLE end backup;                                                                                
alter tablespace TESTTBS begin backup;                                                                              
host cp /u01/app/oracle/oradata/test0910/testtb.dbf /u01/app/oracle/bak/hot_bak                                    
alter tablespace TESTTBS end backup;                                                                                
alter database backup controlfile to trace;                                                                        
alter database backup controlfile to '/u01/app/oracle/bak/hot_bak/control01.ctl';                                   

[oracle@rtest bak]$ ls
cold_bak  cold_bak.sql  cold_cmd.sql  hot_bak  hot_bak.sql  hot_cmd.sql


[oracle@rtest bak]$ cd hot_bak
[oracle@rtest hot_bak]$ ls
control01.ctl  example01.dbf  sysaux01.dbf  system01.dbf  testtb.dbf  undotbs01.dbf  users01.dbf



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-20721-1-1.html 上篇帖子: Oracle DB 执行用户管理的备份和恢复 下篇帖子: oracle手工冷备份脚本 oracle 手工
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表