数据库服务器总是内存过高(数据库服务器 存储)〔数据库服务器内存占满〕

  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;