zoukankan      html  css  js  c++  java
  • 数据库备份

    2010年8月23日 11:50:16        

     整理下关于数据库备份的学习

     数据库文件的备份

    1、逻辑备份

    方法就是采用命令将数据库的表导出,格式是dmp

    逻辑备份: exp fyzh/fyzh@GISDB file=e:\detail.dmp tables=(b$gc_detailind_s,b$gc_detailind_s_sdogeom);--导出某表
    逻辑恢复: IMP fyzh/fyzh@temp file=e:\detail.dmp tables=(b$gc_detailind_s,b$gc_detailind_s_sdogeom);--导入的表与导出的表结构要一致

    2、物理备份

     冷备份:即到oracle的数据库目录下把数据进行拷备

     热备份

    将热备份前先了解下归档与非归档日志

    归档日志:如有三个日志,第一个写完,写到第二个,依此类推,写完了又回到第一个,在重新回到第一个开始写时将之前的日志备份;

    非归档日志:而非归档日志再回到第一个日志写时是不做备份的,直接将之前的覆盖

    修改日志为归档模式并备份

     1)首先用sys用户登录数据库用该命令archive log list查看下目前日志归档方式 (只能在sqlplus中查看,plsql中不识别该命令)

     2)然后关闭数据库:shutdown immediate

     3)启动实例:startup mount

    注:可能第一次提示“ORA-01041: internal error 错误”,于是重新登录数据库并关闭数据库,再打开实例

    4)设置数据库为归档日志模式:alter database archivelog;

    5)打开数据库:alter database open;
    6)确认数据库现在处于归档日志模式:archive log list;
    7)备份数据库 拷备oracle的数据库目录下的表空间dbf

       alter tablespace gcomm begin backup;去拷备文件保存至某目录下
       alter tablespace end backup;--停止备份
       alter system archive log current;--将当前的日志归档
       alter system switch logfile;日志切换(因为有3个日志)
       alter system switch logfile; 再切换

    8)如果某数据文件损坏,那么就会提示无法启动,因此就可以将拷备后的文件拷回去重新启动即可

    归档模式与非归档模式 的更改

    注意:无法在数据库运行的时候修改,需要首先停止数据库,然后mount数据的控制文件,再修改成归档模式,最后再启动数据文件使数据库完全启动起来

    归档模式改为非归档模式:

    SQL> shut immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount
    ORACLE 例程已经启动。

    Total System Global Area 419430400 bytes
    Fixed Size 789192 bytes
    Variable Size 208663864 bytes
    Database Buffers 209715200 bytes
    Redo Buffers 262144 bytes
    数据库装载完毕。
    SQL> alter database noarchivelog;

    这时会提示ORA-38774: 无法禁用介质恢复 - 闪回数据库已启用

    继续执行以下语句:

    SQL> alter database flashback off;

    数据库已更改。

    SQL> alter database noarchivelog;

    数据库已更改。

    SQL>alter database open;启动数据库

    SQL> archive log list; --这是查看日志归档模式 发现已更改成功
    数据库日志模式 非存档模式
    自动存档 禁用
    存档终点 USE_DB_RECOVERY_FILE_DEST
    最早的联机日志序列 407
    当前日志序列 408

    非归档模式改为归档模式:
    将非归档模式改为归档模式步骤:
    1)首先,把数据库停止:shutdown immediate
    2) 再mount数据库: startup mount;
    3) 接着再改变归档模式:alter database archivelog;
    4) 然后再最后启动数据文件:alter database open;

    查看归档日志的一些信息

    --查看归档空间占用情况
    SELECT space_limit / 1024 / 1024 / 1024 AS "Quota_G",
           space_used / 1024 / 1024 AS "Used_M",
           space_used / space_limit * 100 "Used_%",
           space_reclaimable AS reclaimable,
           number_of_files AS files
      FROM v$recovery_file_dest;
    --修改归档日志空间大小
    alter system set DB_RECOVERY_FILE_DEST_SIZE=3g;
    --查看归档日志列表
    sql> list archivelog all;
    --显示日志操作模式
    select log_mode from v$database
    -- 显示归档日志信息
    select name,sequence#,first_change# from v$archived_log
    --显示归档日志位置
    select dest_name, destination from v$archive_dest;

    SQL> show parameter DB_RECOVERY_FILE_DEST;

    -- 显示日志历史信息
    select * from v$loghist;

    删除归档日志
    远程登录服务器
    切换到oracle用户
    输入rman命令
    进入数据库 connect target
    RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
    然后yes即可删除

     

     控制文件备份

     alter database backup controlfile to trace;--备份路径就是安装目录下的D:\oracle\product\10.1.0\admin\temp\udump下最近备份的那个文件(格式trc),创建控制文件的脚本可以从那获取

    --控制文件丢失后恢复办法
    shutdown immediate;
    @c:\create_ctl.txt --运行该创建控制文件的脚本即可重新创建控制文件

     --create_ctl.txt这个文件中的脚本就是从控制文件中获取的,即创建控制文件的脚本,将它放在c盘下

     create_ctl.txt内容如下:

     STARTUP NOMOUNT
    CREATE CONTROLFILE REUSE DATABASE "TEMP" NORESETLOGS  ARCHIVELOG
        MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100
        MAXINSTANCES 8
        MAXLOGHISTORY 908
    LOGFILE
      GROUP 1 'E:\ORACLEDATA\TEMP\REDO01.LOG'  SIZE 10M,
      GROUP 2 'E:\ORACLEDATA\TEMP\REDO02.LOG'  SIZE 10M,
      GROUP 3 'E:\ORACLEDATA\TEMP\REDO03.LOG'  SIZE 10M
    DATAFILE
      'E:\ORACLEDATA\TEMP\SYSTEM01.DBF',
      'E:\ORACLEDATA\TEMP\UNDOTBS01.DBF',
      'E:\ORACLEDATA\TEMP\SYSAUX01.DBF',
      'E:\ORACLEDATA\TEMP\USERS01.DBF',
      'E:\ORACLEDATA\TEMP\EXAMPLE01.DBF',
      'E:\ORACLEDATA\TEMP\GCOMM1.DBF',
      'E:\ORACLEDATA\TEMP\GCOMM2.DBF',
      'E:\ORACLEDATA\TEMP\GCOMM3.DBF',
      'E:\ORACLEDATA\TEMP\GCOMM4.DBF',
      'E:\ORACLEDATA\TEMP\GENLIN_O.DBF',
      'E:\ORACLEDATA\TEMP\GMAPDATA.DBF',
      'E:\ORACLEDATA\TEMP\XDGL1.DBF',
      'E:\ORACLEDATA\TEMP\IDX32_DFT.DBF',
      'E:\ORACLEDATA\TEMP\TBS32_DFT.DBF',
      'E:\ORACLEDATA\TEMP\INDX.DBF',
      'E:\ORACLEDATA\TEMP\TBS'
    CHARACTER SET ZHS16GBK
    ;
    RECOVER DATABASE
    ALTER SYSTEM ARCHIVE LOG ALL;
    ALTER DATABASE OPEN;

    日志丢失恢复办法
    recover database until cancel;
    alter database open resetlogs;

  • 相关阅读:
    Web API系列(三)统一异常处理
    Web API系列(二)接口安全和参数校验
    Web API系列(一)设计经验与总结
    文件并发(日志处理)--队列--Redis+Log4Net
    Jquery手机下拉刷新,下拉加载数据
    nginx 几个参数
    op cache config
    历史问题回顾
    第三方服务的使用
    nginx+php-fpm json_encode 到client pages 截断
  • 原文地址:https://www.cnblogs.com/lanzi/p/1806441.html
Copyright © 2011-2022 走看看