oracle 10g数据库备份与还原总结(转载)

来源:互联网 发布:朋友圈算法 编辑:程序博客网 时间:2024/06/08 13:20

1.数据库归档模式:

        * 非归档模式:当数据库数据只读不会改变时,数据不会改变,数据库适合用非归档模式,                     这样提高性能

        * 归档模式:对于数据库数据经常变动,数据库最好用归档模式,这样可以尽量避免数据库                   数据丢失,使出现问题时灾害降到最低

2.非归档模式与归档模式间的切换(在命令窗口下):

        @检查当前日志操作模式
              f:/>sqlplus sys/dba as sysdba
              连接数据库
              sql>select log_mode from v$database;

        @关闭数据库,后装载数据库,只能在mount状态下改变日志操作模式
              sql>startup mount

        @改变日志模式
              sql>alter database achivelog;(变为归档方式,否则为nochivelog)
              sql>alter database open;
 
3.查看归档模式相关信息:

        @若采用默认设置,归档日志位置在快速恢复区

        @配置归档日志位置 log_archive_dest_n  (n=[1:10])
              sql>alter system set
                  log_archive_dest_1 = 'location =c:/demo/archive [optional]';
              sql>alter system set
                  log_archive_dest_2 = 'service =standby [mandatory] [reopen]';
         其中:location 是本地
              service  是远程
              optional 无论归档是否成功,都会覆盖重做日志
              mandatory只有成功归档才会覆盖重做日志
              reopen 重新归档时间间隔 默认是300s

        @显示归档信息,即显示显示日志操作模式
              sql>select name,log_mode from v$database;

        @显示归档日志信息
              sql>select name,sequence#,first_change# from v$archive_log;
         sequence#: 归档序列号
         first_change# : 起始SCN值

        @显示归档日志位置
              sql>select dest_name,destination,status from v$archive_dest;
         dest_name 归档位置参数名
         destination 位置

        @显示日志历史信息
              sql>select * from v$loghist;
         threade# : 重做线程号
         sequence# : 日志序列号
         first_change# : 起始SCN值
         first_time : 起始SCN发生时间
         switch_change : 切换SCN值
       
二.非归档模式下的备份与还原

   . 日志采用覆盖原有日志的方式存储

   . 出现介质失败时,只能恢复到过去的完全备份点
   . 数据库OPEN状态是,不能备份数据库

   . 必须先关闭数据库,再备份,且必须备份所有数据,控制文件

  1.备份==冷备份

       @ 先关闭数据库
             sql>shutdown immediate

       @ 拷贝所有数据文件,和控制文件

  2.恢复

       * 数据文件出现丢失,但备份以来的重做日志内容尚未被覆盖,此时可以完全恢复

           @装载数据库
               sql>startup force mount

           @复制数据文件备份

           @恢复数据文件
               sql>recover datafile 1

           @打开数据库
               sql>alter database open;

       * 备份文件的重做日志内容已经被覆盖,则只能还原到备份点

           @关闭数据库

           @复制所有数据和控制备份文件至原位置

           @装载数据库,执行恢复命令
               sql>startup mount
               sql>recover database until cancel
               提示控制文件不再使用原有重做日志

           @用resetlogs选项打开数据库
                sql>alter database open resetlogs;


三.归档模式

   . 可以防止数据丢失

   . 数据处于OPEN状态时可以进行备份

   . 当出现介质失败时,除了SYSTEM表空间中的数据文件外其他的都可以在open状态下恢复

   . 可执行完全恢复,也可以恢复到备份点与失败点之间的某时刻
 
  1.备份

      1)冷备份
            shutdown后拷贝所需数据文件和控制文件

      2)热备份
            @将数据库设置为归档模式
            @在数据库上发出全局检查点,在所有的数据文件头块上加锁
                sql>alter database begin backup ;
            @备份数据文件及控制文件
                数据文件直接拷贝至其他目录
                控制文件需使用alter database backup controlfile
                    sql>alter database backup controlfile to 'd:/backup/demo.ctl';
            @结束数据备份,为确保数据文件备份的同步性,还应该归档当前日志组
                    sql>alter database end backup;
                    sql>alter system archive log cuurent;

      3)备份表空间
            *脱机备份(表空间处于OFFLINE状态,SYSTEM表空间和正在使用的UNDO空间不能脱机)
                 @确定表空间包涵的数据文件,如空间USERS
                      sql>select file_name from dba_data_files
                          where tablespace_name = 'users';
                 @设置表空间为脱机状态
                      sql>alter tablespace users offline;
                 @复制数据文件
                 @设置表空间联机
                      sql>alter tablespace users online;
            *联机备份
                 @确定对应关系
                 @设置表空间为备份模式
                      sql>alter tablespace users begin backup ;
                 @复制数据文件
                 @设置表空间为正常模式
                      sql>alter tablespace users end backup ;
            *处理联机备份失败
                当执行联机备份时,若出现例程失败,再次打开数据库时,如果数据文件仍处于备                份状态,则会出错,此时需要结束备份
                 @装载数据库
                    sql>startup force mount
                 @查看处于联机备份状态的所有数据文件
                    sql>select file# from v$backup where status = 'active';
                 @结束联机备份状态
                    sql>alter tablespace end backup
                      或alter tablespace datafile backup;
                      或recover datafile 序号
                 @打开数据库
                    sql>alter database open;
     2.还原
         1)完全恢复
             相关命令:
                recover database :恢复数据库的多个数据文件(在MOUNT状态下运行)
                recover tadaspace :恢复多个表空间的所有数据文件(在open状态下运行)
                recover datafile :恢复一个或多个数据文件(在mount,open状态下都可)
             *在mount状态下恢复数据文件(用于SYSTEM表空间恢复)
                 @装载数据库 mount状态
                 @确定需要恢复的数据文件
                     sql>select file#,error from v$recover_file
                 @拷贝备份至原位置
                 @恢复数据库 recover..上述命令
                 @打开数据库 alter database open;
             *在open状态下恢复关闭后意外对视的数据文件,此时数据库将无法打开
                 @装载数据库 mount
                 @确定需要恢复的数据文件
                 @使相应的数据文件脱机
                     sql>alter database datafile 4 offline;
                 @打开数据库
                     sql>alter database open
                 @复制数据备份文件
                 @恢复数据文件
                 @是数据文件联机 alter database datafile 4 online;
             *在open状态下恢复打开时意外丢失的数据文件
                 @确定要恢复的数据文件
                 @使数据文件脱机
                 @复制数据文件
                 @恢复相应的表空间或数据文件
                 @使相应的表空间或数据文件联机
             *在open状态下恢复未备份的数据文件(要求在归档模式下,新建数据文件,其从简历              开始的所有归档日志必须全部存在)
                 @装载数据库
                 @确定要恢复的数据文件
                 @是数据文件脱机
                 @打开数据库
                 @重新建立数据文件
                     sql>alter database create datafile 'd:/demo/users01.dbf';
                 @恢复数据文件
                 @使数据文件联机
       2)不完全恢复
           使用已备份的数据文件,归档日志,和重做日志,将数据库恢复到备份点与失败点之间           某个时刻的状态
              *恢复分类
                  基于时间的恢复:误删除表,误截断表,提交了错误的数据
                  基于取笑恢复:恢复到某个日志序列号之前的状态
                  基于SCN的恢复:恢复到特定SCN值的状态
                  基于备份控制文件恢复:表空间被意外删除,或所有控制文件全部损坏
              *不完全恢复指令
                  recover database until time
                  recover database until change
                  recover database until cancel
                  recover database .. using backup controlfile
              *基于时间的恢复
                  @关闭数据库(为防止备份失败,应备份当前数据库所有文件
                  @装载数据库 startup mount
                  @复制所有备份数据文件,并确定备份文件的时间点
                      sql>select file#,to_char(time,'yyyy-mm-dd hh24:mi:ss)
                          from v$recover_file;
                  @执行recover database until time
                      sql>recover database until time "2006-09-26 16:40:33'
                  @以resetlogs方式打开数据库,并检查恢复结果
                      sql>alter database open resetlogs;
                  @备份数据库所有数据文件和控制文件,因为当以resetlogs方式打开数据库后                  会重新建立重做日志,清空原有重做日志的所有内容,并将日志序列号复位为1
                      sql>select name from v$datafile;
                      sql>alter database begin backup;
                      拷贝数据文件
                      sql>alter database end backup;
                      sql>alter database backup controlfile
                          to 'd:/backup/demo.ctl' reuse;
                      sql>alter system archive log cuurent;
               *基于SCN恢复
                   @关闭数据库
                   @装载数据库 mount
                   @复制所有备份数据文件,确定备份文件SCN值
                       sql>select file#,change#, from v$recover_file;
                   @执行recover database until change
                       sql>recover database until change 675978;
                   @以resetlogs方式打开数据库
                   @备份数据库所有数据文件和控制文件
               *基于取消恢复
                   @关闭数据库
                   @装载数据库
                   @复制所有备份的数据文件,确定备份文件的SCN值
                       sql>select file#,change# from v$recover_file;
                   @执行recover database until cancle
                       sql>recover database until cancel
                   @以resetlogs方式打开数据库
                   @备份所有数据文件和控制文件
               *基于备份控制文件的恢复
                   @通过查看alert文件,确定误操作时间
                   @关闭数据库
                   @复制所有备份的数据文件,控制文件
                   @装载数据库
                   @执行recover database ..using backup controlfile
                       sql>recover database until time '2004-09-26 19:51:06'
                           using backup controlfile
                   @以resetlogs 方式打开数据库
                   @备份所有数据文件和控制文件

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 绿豆糕吃多了会怎么办 小孩抓米饭烫了手怎么办 减肥不来月经了怎么办 吃了馊了的米饭怎么办 饭在冰箱里硬了怎么办 剩米饭反潮了怎么办 吃馊米饭中毒后怎么办? 蒸熟的米饭发黄怎么办 孕妇肉类吃的少怎么办 大米饭坏了吃了怎么办 米饭煮糊了锅怎么办 减肥吃了猪肉脯怎么办 吃了硬米饭胃痛怎么办 宝宝吃了硬物怎么办 米饭卡在喉咙里了怎么办 喉咙里卡了米饭怎么办 孕妇吃了坏鹅蛋怎么办 1岁大宝宝长短腿怎么办 行测中的判断推理怎么办 塑料盖子玻璃罐头瓶子打不开怎么办 猪肉烫火锅吃怎么办料 自制腊肠放干了怎么办 孕妇吃了4块腊肉怎么办 衣服沾了火锅味怎么办 皮包上有火锅味怎么办 芝士年糕裂开了怎么办 制作牛肉酱咸了怎么办 腌牛肉太咸了怎么办 八宝粥的拉环断了怎么办 八宝粥易拉罐拉环断了怎么办 吃完辣的胃难受怎么办 天天呆在家很烦怎么办 吃多了荔枝上火怎么办 猛犸牙牌子裂了怎么办 玩游戏电脑卡了怎么办 电脑打开卡在选项界面怎么办? 红警突然卡死怎么办 柯基不吃狗粮怎么办 貔貅嘴巴磕破了怎么办 开光貔貅牙磕了怎么办 玉貔貅鼻子碎了怎么办