Oracle DBA 数据库备份与恢复学习笔记

Oracle DBA 数据库备份与恢复学习笔记

1.Oracle数据库文件
    ·初始化参数文件(Instance Parameter File)
    ·控制文件(control files)
    ·数据文件(data file)
    ·临时文件(temp file)
    ·联机重做日志文件(online redo log files)
    ·归档重做日志文件(archive redo log files)
    ·警告日志文件和跟踪文件(Alert Log and Trance Files)
    ·口令文件(Password File)

2.Oracle数据库启动与关闭
    启动:startup,经历三个阶段: 未加载(nomount),加载(mount),打开(open)
    ·未加载(nomount) -- 启动事例
        ·读取数据库参数文件
        ·启动后台进程并按参数文件中的定义分配内存
        ·将进展情况写入警告日志文件中.
    ·加载(mount) -- 读取控制文件,
        ·确定数据文件和重做日志文件的名称和位置
        ·确定数据库名
        ·确定最新系统更改号.
    ·打开(open) -- 打开数据库
        ·所有联机数据文件的头与控制文件信息比较
        ·所有文件同步后,数据库打开.

    关闭:shutdown,四个参数(normal,transactional,immediate,abort)
    ·正常(normal),所有用户离线后正常关闭.
    ·事务(transactional),用户执行完当前事务后,将用户从数据库上清除
    ·立即(immediate),立即关闭,回退所有未完成的操作
    ·异常(abort),异常关闭,启动后需要实行崩溃恢复.

3.归档日志
    查看归档(Archivelog)模式
    ·归档模式列表           -- archive log list;
    ·查看数据库归档模式     -- select log_mode from v$database;
    ·查看事例自动归档       -- select archiver from v$instance;
    ·查看归档位置           -- select dest_id,destination,status,binding,target,reopen_secs  from v$archive_dest order by dest_id;
    ·查看日志历史信息       -- select * from v$loghist;
    ·归档日志文件           -- select name from v$archived_log;
    归档日志文件格式变量
    ·%a  活动ID号
    ·%d  唯一的数据库标识符,如果将多个数据库归档到同一目录,这是必需的.
    ·%r  场景(incarnation)号,RESETLOGS的ID值,如果进行了不完全恢复(将重置日志切换序列号),这个变量就十分重要
    ·%s  日志切换序列号,这个变量能够保证任何一个数据库中的归档日志都不会彼此重写.
    ·%S  日志切换序列号(带有前导0)
    ·%t  线程号,显示为v$instance视图的thread#列,除了在RAC数据库中使用外,这个变量没有任何意义.
    ·%T  线程号(带有前导0)
    归档设置默认值
    ·归档日志的默认位置为%oracle_home%rdbms
    ·归档日志的默认文件格式为ARC%S_%R.%T(10g) ,  自定义%%ORACLE_SID%%_%T_%S.arc, %%ORACLE_SID%%T%TS%S.ARC
    ·从10g开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符,配置了归档文件格式后,必须重启数据库.
    归档模式设置
    ·更改初始化参数方式($ORACLE_HOME/dbs/init*.ora)
       ·LOG_ARCHIVE_START=TRUE/FALSE   -- 自动归档/不自动归档
       ·LOG_ARCHIVE_DEST=              -- archive logs 归档存放的路径
       ·LOG_ARCHIVE_FORMAT=            -- archive logs 的命名格式
    ·命令行方式

3.归档日志模式设置
    更改初始化参数方式($ORACLE_HOME/dbs/init*.ora)
    ·LOG_ARCHIVE_START=TRUE/FALSE   -- 自动归档/不自动归档
    ·LOG_ARCHIVE_DEST=              -- 如果不使用备用数据库,只需要将归档日志存放到本地目录(第一个归档位置)
    ·LOG_ARCHIVE_DUPLEX_DEST        -- 如果不使用备用数据库,只需要将归档日志存放到本地目录(第二个归档位置)
    ·LOG_ARCHIVE_DEST_n             -- 用于指定多个归档位置(最多10个),本地归档位置/远程归档位置
    ·LOG_ARCHIVE_FORMAT=            -- archive logs 的命名格式
    命令行方式
    ·改变归档操作模式
       ·shutdown immediate;         -- 干净关闭数据库
       ·startup mount;              -- 以加载模式启动
       ·alter database archivelog;  -- 开启归档模式, 关闭归档模式为alter database noarchivelog;
       ·alter database open;        -- 打开数据库
       ·执行完全备份
    ·执行手工归档                   -- alter system archive log all;   -- alter database archivelog manual; --(10以前)
    ·配置归档进程                   -- alter system set log_archive_max_processes=3;  -- 指定例程初始启动的最大归档进程数
    ·配置归档位置和文件格式
       -- alter system set log_archive_dest='d:\salesarchive1';
       -- alter system set log_archive_duplex_dest='d:\salesarchive1';
       -- alter system set log_archive_dest_1='location=d:\salesarchive1 mandatory';
       -- alter system set log_archive_dest_2='location=d:\salesarchive2 mandatory reopen=500';
       -- alter system set log_archive_dest_3='service=SERVICE_NAME';  -- (在tnsnames.ora文件中配置服务名)
       选项:
       OPTIONAL:  该选项是默认选项.使用该选项时,无论归档是否成功,都可以覆盖重做日志.
       MANDATORY: 强制归档.使用该选项时,只有在归档成功之后,重做日志才能被覆盖.
       REOPEN:    该属性用于指定重新归档的时间间隔,默认值为300秒,必须跟在MANDATORY后.
    ·控制本地归档成功的最小个数.
      使用初始化参数LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地归档的最小成功个数
      -- alter system set log_archive_min_succeed_dest=2;
    ·控制归档位置的可用性
      当归档日志所在磁盘损坏或填满时,DBA需要暂时禁用该归档位置
      -- alter system set log_archive_dest_state_3=enable/defer; --(启用/禁用)

4.备份的类型
    备份管理方式:
    ·用户管理的备份:   使用操作系统实用程序执行备份(UNIX:cp、tar或cpio, Windows:copy或winzip32.exe).
    ·服务器管理的备份: 使用RMAN(Recovery Backups)执行备份.
    ·逻辑备份:         备份/恢复Export/Import
    备份选项:
    ·脱机备份: 关闭状态备份、冷备份、一致备份    (用户管理/服务器管理) (archivelog/noarchivelog)
    ·联机备份: 打开状态备份、热备份、不一致备份  (用户管理/服务器管理) (archivelog)
    ·完整备份: (whole backup)                    (用户管理/服务器管理) (archivelog/noarchivelog)
    ·局部备份: (partial backup)                  (用户管理/服务器管理) (archivelog)
    ·全部备份: (full backup)                     (用户管理/服务器管理) (archivelog/noarchivelog)
    ·增量备份: (incremental backup)              (服务器管理         ) (archivelog/noarchivelog|rman)
    并非一定要关闭数据库才能进行备份,数据库在archivelog模式下运行可以无限期地处于打开状态,进行联机备份,在noarchivelog模式下无法执行联机备份.

5.用户管理的一致备份
    一致备份即关闭状态备份、冷备份、脱机备份
    用户管理的一致备份,需要shutdown数据库后备份文件,使用操作系统命令执行以下步骤:
    ·以sysdba身份连接数据库    -- connect / as sysdba
    ·备份参数文件              -- create pfile='d:\backup\spfile_backup.ora' from spfile;
    ·关闭数据库                -- shutdown immediate
    ·复制控制文件              -- 查询文件位置 select name from v$controlfile
    ·复制数据文件              -- 查询文件位置 select name from v$datafile
    ·复制联机重做日志文件      -- 查询文件位置 select member from v$logfile
    ·复制临时文件              -- 查询文件位置 select name from v$tempfile
    ·开启数据库                -- startup
    可以制作自动脚本以管理备份.

6.用户管理的联机备份
    联机备份即打开状态备份、热备份、不一致备份
    用户管理的联机备份,需要使用操作系统命令执行以下步骤:
    ·以sysdba身份连接数据库       -- connect / as sysdba
    ·检查archivelog模式           -- archive log list; -- select log_mode from v$database; --select archiver from v$instance;
    ·切换日志以归档               -- alter system switch logfile; -- alter system archive log current;
    ·备份控制文件                 -- alter database backup controlfile to 'file_name' reuse;      -- 二进制文件
                                   -- alter database backup controlfile to trace as 'file_name';   -- 文本文件
    ·将表空间置于备份状态         -- alter tablespace tablespace_name begin backup;
    ·将对应数据文件复制到备份地点 -- dba_tablespaces, dba_data_files
    ·结束表空间的备份状态         -- alter tablespace tablespace_name end backup;
    ·再次切换日志                 -- alter system archive log current;
    ·备份归档日志文件             -- 查询文件位置 select name from v$archived_log

7.服务器管理的一致备份
    ·干净关闭数据库,以加载模式启动
    ·

8.恢复概述
    在Oracle环境中,还原(restore)和恢复(recover)术语都有十分准确的含义,还原文件就是从备份中提取文件,并将其返回到原始位置。如果数据文件受到损坏或丢失,还原操作将用备份副本替换它。但与数据库其余部分比,还原的文件已经过期。为了恢复文件,从重做日志流提取相关的更改矢量,并予以应用,将文件更新到与数据库其他部分同步为止.
    如果采取适当的预防措施,丢失数据库文件并不意味着丢失数据:
    ·控制文件的多重化(multiplex)
    ·联机重做日志文件多重化
    ·备份控制文件和数据文件
    ·以archivelog模式运行数据库.

9.丢失控制文件后的恢复
    永远都不能彻底丢失控制文件,必须实现控制文件的多重化。如果控制文件的任何副本受损,数据库实例将立即异常终止,如果尝试启动,实例将进入NOMOUNT模式,并停在那里,只有CONTROL_FILES实例参数指定的所有副本都有效,才会加载数据库.
    添加控制文件副本步骤:
    ·查看控制文件位置    -- select name from v$controlfile
    ·关闭数据库
    ·复制控制文件(处于打开或加载模式时进行复制,副本是无效的)
    ·以NOMOUNT模式启动实例
    ·更改CONTROLFILES参数,以便包含新副本.
      -- alter system set control_files='/u01/app/oracle/oradata/ORATEST/control01.ctl', '/u01/app/oracle/flash_recovery_area/ORATEST/control02.ctl', '/u01/app/oracle/oradata/ORATEST/control03.ctl' scope=spfile;
    ·再次关闭
    ·以OPEN模式启动数据库
    在NOMOUNT模式中,如果由于无法加载数据库导致启动停止,通过参数文件查找控制文件副本位置.
    -- select value from v$parameter where name='control_files';

你可能感兴趣的:(Oracle DBA 数据库备份与恢复学习笔记)