jackyrong

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

主要是小结之前遇到的备份恢复,内容很多分几次小结。


1 增加控制文件备份

 select * from v$controlfile;
  增加控制文件
  alter system set control_files='d:\demo1\control01.ctl','c:\demo\control02.ctl' scope=spfile;

  shutown 后,用host copy后再startup
2 多元化重做日志
   col member format a30
   select group#,member from v$logfile;
  增加日志成员
     alter database add logfile member
      'xxxxxxx' to group 1,
      'xxxxxxx' to group 2,
       'xxxxx'  to group 3;
3
   降低UNdO时间,启动多个slave进程,设置fast_start_parallel_rollback,如果为false,则不启动slave进程,
如果设置为low,slave进程为CPU个数2倍,high为4倍
     alter system set fast_start_parallel_rollback=high;

    
4  改变归档模式
    先查一下
     select log_mode from v$database;
     shutdown immediate
     startup mount
      alter database archivelog;
     alter database open;
5 设置归档位置
   alter system set log_archive_dest_1='location=c:\demo\archive mandatory';
    alter system set log_archive_dest_2='location=d:\demo\archive mandatory';
    其中mandatory表明要强制归档
   如果归档位置磁盘满了,可以临时禁止该位置
   alter system set log_archive_dest_state_2=defer;
    搞好后,
   alter system set log_archive_dest_state_2=enable;
6 控制归档进程数
   默认为2个归档进程,改变
    alter system set log_archive_max_processes=3;
7  如果是本地存放归档日志的话,可以
    第一个位置 alter system set log_archive_dest='d:\demo\archive1';
    第二个位置  alter system set log_archive_duplex_dest='xxxx';
8    显示归档信息
    archive log list;
      显示归档日志信息
   col name for a40
       select name,sequence#,first_change# from v$archived_log;
   
      显示其位置
   col dest_name for a20
   col destination for a20
   select dest_name,destination,status from v$archive_dest;
  显示所有归档进程的信息
    select * from v$archive_processes;
9  手工切换日志
   alter system switch logfile;


10 数据的备份
   A 一致性备份
    当数据库关闭后,用host copy把数据文件和控制文件COPY到其他地方
   B  不一致备份
     当open状态时的备份,只能用archivelog模式,
     列出数据文件
    select name from v$datafile;
    alter database begin backup;
    用host copy所有数据文件
  alter database backup controlfile to 'd:\backup\demo.ctl'
    alter database end backup;
    alter system archive log current;
11  表空间备份
   A 脱机备份
    查看该表空间包含哪些数据文件
       select file_name from dba_data_files where tablespace_name='USERS';
         select tablespace_name from dba_data_files;(查看有多少个表空间)
   之后alter tablespace xxx offline;
      再用hostcopy,如果备份表空间,则要复制其下的所有文件 
    alter tablespace xxx online;
    B 联机备份
    和第一步差不多,只不过第二步用alter tablespace begin backup;最后用
      alter tablespace end backup;
12 备份归档日志
    显示过去一天以来的归档日志
    select name from v$archived_log where dest_id=1 and first_time>=sysdate-1;
        再用host copy
13 备份spfile
   create pfile='d:\backup\demo.par' from spfile='xxxx.or';
 

14 mount状态下恢复数据文件
   当有备份数据文件在其他地方时,mout状态时
    host copy 原来位置的dbf  目的位置的dbf(这里是之前备份的dbf)
       alter database rename file '原来位置的dbf' to '目的位置的dbf';

     之后还要用recover database,只能在mount状态下运行
    startup force mount
        recover database
      恢复表空间,在open状态下
      recover tablespace users
       recover datafile
       recover datafile 'd:\xxxx.dbf';
   查看要恢复的数据文件
     col error for a20
      select file#,error,change# from v$recover_file;
      可以查出哪个文件要恢复

15  当 system表空间损坏的恢复
   归档模式肯定要的了。而且首先要备份好system01.dbf到其他磁盘,下面模拟下
   shutdown immediate
     host del xxxx.dbf
    恢复时
     startup mount
     select file#,error,change# from v$recover_file;
      查出要恢复的文件好,比如为1
   host move d:\backup\system01.dbf  d:\demo
      recover datafile 1
      alter database open
     如果原来放system空间的磁盘损坏,要这样另外指定其位置
    host copy d:\backup\system01.dbf  e:\demo
      alter database rename file 'd:\demo\system01.dbf' to 'e:\demo\system01.dbf'


16 恢复user表空间
     
          shutdown immediate
     host del xxxx.dbf
       恢复时
     startup mount
     select file#,error,change# from v$recover_file;
      查出要恢复的文件好,比如为4
     alter database datafile 4 offline;
    再打开数据库
     alter database open;
       host copy d:\backup\users01.dbf  e:\demo\users01.dbf
         recover datafile 4
       alter database datafile 4 online;
    (如果表空间里很多数据文件,可以这样)
        alter tablespace users offline for recover;
        host copy d:\backup\users01.dbf  e:\demo\users01.dbf
        recover tablespace users;
        alter tablespace users online;
    
17 在open状态,归档模式下恢复未备份的数据文件
     create tablespace user01 datafile 'd:\demo\user01.dbf' size 5m;    

        create table test_3(cola int) tablespace user01;
      
       insert into test_3 values(1);
   
        commit;
      
alter system switch logfile;
    模拟删除
     shutdown immediate;
      host del d:\demo\user01.dbf
   
      startup mount
      alter database datafile 'd:\demo\user01.dbf' offline;
      alter database open;
      alter database create datafile 'd:\demo\user01.dbf';
      recover datafile 'd:\demo\user01.dbf'
      alter database datafile 'd:\demo\user01.dbf' online;

   
 18 恢复控制文件
     当某个控制文件损坏后,可以这样
       alter system set control_files='备份\control1.ctl' scope=spfile
        startup force
   19  日志组中某个日志损坏的恢复
        alter system switch logfile;
       alter database drop logfile member '损坏的xxx.log';
       然后要增加一个
        alter database add logfile member 'xxxx.log' to group 1;

   20   非活动日志组的所有日志成员全部损坏
           A OPEN状态时
               alter database clear unarchived logfile group 1;
           B 非open时
               alter database add logfile ('xxxx\xx.log','xxxx\xxx.log') size 10m;
                alter database drop logfile group 1;
                 alter database open;
    
      21   当前活动日志组的全部成员损坏
              A 关闭状态下 出错,则打开数据库后用
                    recover database until cancel
                     alter database resetlogs;
              B OPEN状态下
  
                  则必须startup mount后,用host copy把全部备份的数据文件.dbf COPY回去
                     然后用recover database until cancel
                      alter database open resetlogs;

posted on 2008-07-23 18:07  jackyrong的世界  阅读(359)  评论(0编辑  收藏  举报