Objects
1.明白 Oracle数据库中大概 发生的错误范例 ;
2.形貌 实例规复 的方法;
3.明白 checkpoints,redo log files和archive log files的紧张 性;
4.设置 快速闪回区;
5.设置 归档模式;
Part of Your Job
DBA的职责就是要包管 数据库是可利用 的而且是高效的;
1.克制 数据库发生通例 错误:比如 用户无权限,表空间不敷 等等;
2.增长 MTBF(Mean Time Between Failures),即两次发生故障的时间隔断 ;
3.利用 冗余方式掩护 关键组件,重要 是硬件冗余的方式:比如 利用 RAC,DG等技能 ;
4.镌汰 MTTR(Mean Time To Recover),即发生错误时的规复 时间;
5.最小化数据丢失,提交的数据保存 ,未提交的数据丢失:利用 archive log files,flashback technology, dataguard技能 ;
Categories of Failure
1.语句级别错误:比如 select,insert,update,delete错误;
2.用户进程 错误:比如 一个数据库的会话失败了;
3.网络错误:数据库的毗连 丢失;
4.用户错误:比如 删除了一个表,删除了一个用户等等;
5.实例错误:比如 数据库忽然 宕机;
6.媒体错误:比如 由于 磁盘破坏 大概 OS级别删除而丢失了数据库文件;
Statement Failure
1.试图往表中插入非法数据:必要 程序前端做验证,大概 让用户修改数据;
2.实行 实行 某个操纵 时权限不敷 :必要 dba授权某个对象权限大概 体系 权限;
3.实行 分配空间失败:开始可重新开始的空间分配,增长 用户的磁盘配额,对表空间添加空间;
4.应用程序中的逻辑错误:必要 开辟 职员 去修改程序错误;
TIPS:这个过程大部分 是由于 计划 错误,比方 安全机制和配额规则;必要 DBA参加 进来处理 惩罚 错误,比如 为用户添加权限,分配空间,同时也要参加 查察 逻辑错误的过程;
User Process Failure
用户忽然 停止 毗连 ,非常 竣事 大概 是程序错误导致的会话停止 :不必要 DBA行止 理 惩罚 ,实例背景 进程 会回滚未提交的改变并开释 相干 的锁;
PMON背景 进程 会阶段性的查抄 Server Processes,并查抄 他们的会话是否毗连 ;假如 PMON发现某一个Server Process不再毗连 了,则会规复 增在举行 的事件 (回滚未提交事件 和开释 相干 的锁);
假如 是少量的错误则不必要 关心,只必要 让用户重新做一次相干 操纵 即可;假如 是大量的毗连 错误,则必要 查抄 是不是设置的processes参数太小了,大概 对用户举行 培训;
Network Failure
1.监听失败:设置 一个备用的的监听器举行 毗连 超时的故障转移;
2.NIC失败:设置 多个网卡;
3.网络毗连 失败:设置 备用的网络毗连 ;
办理 的方式就是通过做冗余来提供高可用;
User Error
1.用户偶然 (inadvertently)删除大概 修改了数据:假如 没有提交的话,不必要 任那边 理 惩罚 ;否则必要 利用 闪回大概 回退表;
2.用户误删除了一个表:从采取 站规复 ;假如 利用 了purge选项的话,则必要 利用 基于时间点的规复 (PITR, Point-in-time Recovery)来还原表;
Flashback Technology
1.查察 数据之前的状态;
2.使数据在一个时间段内反复的回放,雷同 于磁带一样可从前 后倒带(back and forth,反复的,来回 的)
3.资助 用户做错误分析和规复 ;
4.Error Analysis:
- Flashback Query:闪回查询,可以查察 表中已往 一个时间点已提交的数据;利用 AS OF子句;
- Flashback Versions Query:闪回版本查询,可以查察 表中已提交的数据各个版本变革 的过程;
- Flashback Transaction Query:闪回事件 查询,可以查察 事件 级别数据库的改变;
5.Error Recovery:
- Flashback Transaction Backout:事件 回退,可以回退指定的事件 和它依靠 的事件 ;
- Flashback Table:删回表,可以回退一个大概 多个表的内容到之前的一个时间点,而不影响别的 的数据库对象;
- Flashback Drop:从采取 站中规复 已删除的表;
- Flashback Database:使整个数据库都回退到已往 的某个时间点
Instance Failure
1.典范 的错误有断电,硬件堕落 ,核心 的背景 进程 堕落 ,告急 关机等;一样平常 不必要 DBA的干预,在实例启动时会主动 举行 实例规复 的过程;
2.必要 实例规复 时由于 数据库实例在关闭的之前没有把内存中的数据和数据文件举行 同步;
Understanding Instance Recovery:CKPT Process
1.查抄 点变乱 由CKPT背景 进程 触发,当查抄 点发生时,CKPT进程 会负责关照 DBWR进程 将脏数据(Dirty Buffer)写出到数据文件中;CKPT进程 的别的 一个职责是负责更新数据文件头和控制文件上的查抄 点信息;
2.查抄 点分为增量查抄 点和全量查抄 点两种;
3.日记 切换的过程中,CKPT进程 也会把查抄 点信息写入到数据文件头中;
4.查抄 点存在的缘故起因 :
- 包管 内存中修改的数据块定期写入磁盘,以至于在体系 失败大概 数据库失败的时间 不会丢失数据;(数据有修改就写入,影响性能)
- 镌汰 实例规复 的时间;(假如 不停 不写入,服从 高)
- 包管 关机的时间 全部 已提交的数据都写入到了数据文件中
5.查抄 点信息包罗 查抄 点的位置,SCN,RBA(Recovery Block Address)和日记 的信息等等
Understanding Instance Recovery:Redo Log Fiels and Log Writer
1.什么是事件 ;
ACID特性:原子性(Atomicity),同等 性(Consistency),隔离性(Isolation),连续 性(Durability);
事件 是数据库内的逻辑单位 ,是有一条大概 多条sql语句构成 ;
在实例返回给用户commit complete之前,必须把事件 信息写入到磁盘上,如许 就逼迫 包管 了数据在丢失之后可以被规复
2.Redo log files:
- 记录 了数据库中的统统 改变,以事件 为单位 ;
- 可以防备 数据丢失,比如 忽然 断电,磁盘破坏 等环境 ;
- 保举 采取 多路复用放在差别 磁盘的方式,每隔在线日记 组可以包罗 多个在线日记 文件,它们互为镜像;
- LGWR进程 对在线日记 组中日记 文件同时写,是循环利用 的存储空间
3.LGWR进程 出发的条件:
- 事件 提交时;
- 每隔三秒钟;
- 在DBWn写之前;
- 在clean shutdown之前,即除了shutdown abort
Understanding Instance Recovery
1.数据库的实例规复 是主动 完成的;
2.重要 是由于 没有正常的关闭数据库,在数据库启动时查抄 数据文件与控制文件中记录 的信息不同等 ,数据库判定 必要 做实例规复 ;
3.必要 做的工作是利用 在线日记 组的内容来同步数据文件,重要 包罗 两个过程:
- 前滚:把redo log file中记录 的日记 条目都重新做一边,包罗 提交和未提交的;
- 回滚:把未提交的事件 都回滚掉
Phases of Instance Recovery
1.当数据库启动到mount状态后,要打开数据文件,此时要查抄 数据文件头记录 的SCN和控制文件中记录 的SCN是否同等 ;假如 同等 的话就正常打开数据库;
2.假如 不同等 的话,实例会按照次序 应用在线重做日记 中的改变,提交和未提交的事件 都在这个阶段被重新实行 ;
3.当数据文件和控制文件同步之后,会打开数据库,用户可以登录并举行 操纵 ;
4.之后会读取UNDO中数据来回 滚为提交的事件 ;终极 ,只有提交的数据会保存
Tuning Instance Recovery
1.实例规复 的过程中,会从前次 发生checkpoint的位置不停 应用到在线日记 的末端 处;
2.以是 ,实例规复 调优本质就是控制查抄 点到日记 末了 的间隔 (事件 量);
3.为了数据库性能,要隔一段时间才把Buffer Cache中的脏数据写入到数据文件,由于 DBWRn进程 要比LGWR进程 慢很多 ;
4.每隔3s,CKPT进程 会把redo log中当前的checkpoint位置写入到控制文件中,因此数据库就知道在线日记 组中哪些日记 实体是在规复 中必要 的,哪些是不必要 的;
eg:控制文件的心跳就是3s一次,可以通过3s转储2次控制文件信息查察 ,也可以通过alert文件查察 ;
5.实例规复 的时间就是应用前次 checkpoint的位置到控制文件总记录 最新SCN的位置这些日记 所必要 的时间,DBA通过设置fast_start_mttr_target参数和设置在线日记 组巨细 来控制这个时间(数据库内部机制包管 了,前次 发生查抄 点的位置到在线日记 末了 的间隔 不能高出 日记 组中最小日记 文件的90%)
Using the MTTR Advisor
1.指定实例规复 的盼望 时间,可以利用 EM操纵 也可以在sqlplus中设置(show parameter fast_start_mttr_target);
2.默认值是0,即禁用,由体系 自行决定;假如 设置了fast_start_mttr_target的值,则由MTTR领导 (EM-Advisor Central-MTTR Advisor)转换这个值来设置别的 参数来到达 盼望 的时间内规复 ;
3.最大值是3600s;
4.tips:假如 fast_start_mttr_target这个值设置太小的话,会增长 I/O负载,假如 太大的话,则规复 时间太长;
Media Failure
1.磁盘驱动器,磁盘控制器破坏 ,大概 数据文件被删除/破坏 ;重要 是包罗 数据文件,控制文件大概 在线日记 文件破坏 ;
2.从备份中还原,假如 须要 的话把数据库还原到一个新的位置等;
Configuring for Recoverability
为了设置 数据库的最大可规复 行,必须做的几项操纵 :
1.订定 通例 备份战略 :大部分 的媒体错误都必要 从备份中规复 破坏 大概 丢失的文件;
2.控制文件多路复用:相称 于数据库的大脑,保举 利用 至少两份控制文件,假如 全部 控制文件都丢失规复 起来相称 困难;
3.在线日记 组多路复用:在实例规复 和媒体规复 时都必要 利用 到在线联机日记 ,用于对提交事件 的前滚操纵 ;假如 丢失在线联机日记 的话,就大概 丢失数据,保举 每个日记 组至少包罗 两个日记 文件而且 放在差别 的磁盘上
4.打开归档模式:假如 一个数据文件丢失的话,从备份中规复 必要 利用 到备份后全部 的日记 文件,在线联机日记 文件是循环利用 的,内容会被覆盖,以是 必要 把内容拷贝到归档日记 文件中;就是所谓的归档模式,固然 打开之后会对数据库性能有肯定 影响,但是这个黑白 常有须要 的;查察 下令 archive log list
Configuring the Fast Recovery Area
1.快速闪回区是一块存储空间,用来存放归档日记 ,备份,闪回日记 ,多路复用的控制文件和多路复用的在线日记 文件;
2.猛烈 保举 用于备份存储管理,应该把这个目次 与数据库的数据文件,控制文件,重要 在线日记 文件的目次 放在差别 的磁盘上;
3.快速闪回区的空间理论上是越大越好,但是保举 至少是数据库文件(数据文件,在线日记 文件,控制文件等)巨细 的两倍;
4.快速闪回区中的内容主动 被备份保存 战略 管理,Oracle数据库会主动 删除那些还原不必要 的文件;rman target /;show all;
5.设置快速闪回区:设置db_recovery_file_dest_size和db_recovery_file_dest参数;有次序 设置
Multiplexing Control Files
1.控制文件是一个非常小的二进制文件,用来形貌 数据库布局 信息;在数据库mount大概 open状态下,必须可用;假如 没有控制文件的话,数据库不能被mount,此时可以还原控制文件大概 重修 重置文件;
2.假如 丢失一个控制文件的话,规复 很简单 ,只必要 做个拷贝即可;假如 全部丢失的话,规复 起来非常困难,但是也不算是个劫难 ;
3.假如 利用 ASM的话,在+DATA和+FRA各放一份控制文件即可;
4.假如 是文件体系 的话,保举 至少两份拷贝,而且放在差别 的磁盘上,增长 控制文件的步调 :
- 修改spfile中初始化参数:ALTER SYSTEM SET control_files='/u01/app/oracle/oradata/ORCL/control01.ctl', '/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl', '/u01/app/oracle/oradata/ORCL/control03.ctl' scope=spfile;
- 关闭数据库:shutdown immediate;
- 拷贝文件:cp /u01/app/oracle/oradata/ORCL/control01.ctl /u01/app/oracle/oradata/ORCL/control03.ctl;
- 启动数据库:startup;
Redo Log Files
1.每个联机在线日记 组中可以包罗 1个大概 多个在线联机日记 文件,一组中的多个文件互为拷贝;目标 是用来防备 媒体错误大概 数据丢失,但是多个数据文件会增长 数据库的I/O(事件 只有当日记 条目写入到磁盘之后才华 返回乐成 ,以是 必须把联机日记 文件放在快速磁盘上,而且要把差别 的文件放在差别 的磁盘上,由于 一次只能写一个文件,而且假如 磁盘破坏 的话也有备份);
2.发起 每个日记 组至少两个文件,假如 是文件体系 的话分别放在差别 的磁盘上,假如 是ASM的话分别放在+DATA和+FRA即可;
3.假如 丢失日记 组中的一个成员的话,不会影响数据库的操纵 ,但是会在alert日记 中写告诫 ;假如 丢失一个日记 组的话,会发生验证的媒体错误,导致丢失数据;规复 的方式会在管理2中先容 ;
Multiplexing the Redo Log
1.通过EM添加在线日记 组和在线日记 文件,EM-Server-Redo Log Groups;
2.通过sqlplus添加在线日记 组合在线日记 文件;
- 查察 当前日记 组状态 :SELECT * FROM v$logfile;
- 日记 文件组中添加数据文件:ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/ORCL/redo01A.log' TO GROUP 1;
- 添加日记 文件组:ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/ORCL/redo04A.log','/u01/app/oracle/oradata/ORCL/redo04B.log') SIZE 50M;
Archive Log Files
1.由于 在线联机日记 组是一个循环利用 的内存,为了数据库的最大可规复 性,必要 在联机日记 文件组在被覆盖之前做一个拷贝,称之为归档日记 ;
2.设置 归档日记 必要 有三个步调 :
- 指定归档日记 的定名 规则;
- 指定一个大概 多个归档日记 的路径;
- 设置数据库到归档模式,之前归档日记 路径必须存在;
3.假如 利用 了快速闪回区的话,那么可以不消 设置前两步
Archiver(ARCn) Process
1.是一个可选的背景 进程 ,当数据库为ARCHIVELOG模式的时间 主动 启动; ps -ef | grep arc;
2.生存 数据库中全部 的改变,由log_archive_max_processes参数控制进程 的个数;
3.归档模式下,每次发生log switch时调用archive进程 ;非归档模式下没有这个进程
Archive Log File:Naming and Destinations
1.利用 EM修改:EM-Availability-Configure Recovery Settings;
2.利用 sqlplus修改log_archive_format参数,保举 为%t_%s_%r.dbf;
- %s:sequence number,日记 文件的序号;
- %t:thread,线程号;
- %r:resetlogs id,重要 是为了包管 以resetlogs模式打开数据库后归档日记 的名字能包管 唯一性,10g之后的新特性;
- %d:database id,数据库id,只有在多个数据库共享归档日记 路径时才会利用
3.默认的,假如 开启了快速闪回区,则USE_DB_RECOVERY_FILE_DEST就指定了归档日记 文件的路径;假如 想修改为别的 路径的话,则ALTER SYSTEM SET log_archive_dest_1='location=/path';
4.11gR2中可以最多写入到31个差别 的目次 ,由log_archive_dest_n参数指定,目标 路径可以是本地 的也可以是长途 的
Enabling ARCHIVELOG Mode
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog;
archive log list;
alter database open;