当前位置: 首页 > 科技观察

这种情况,oracle数据库重启,四种解决方法可以解决

时间:2023-03-20 20:43:47 科技观察

对象1。明确Oracle数据库可能出现的错误类型;2.描述实例恢复的方法;3.明确检查点、重做日志文件和归档日志文件的重要性;4.配置快闪区;5.配置存档模式;您的JobDBA的部分职责是确保数据库可用且高效;1、避免数据库常见错误:如用户无权限、表空间不足等;2.增加MTBF(MeanTimeBetweenFailures),即两次故障之间的时间间隔;3、采用冗余保护关键部件,主要是硬件冗余:如采用RAC、DG等技术;4.减少MTTR(MeanTimeToRecover),即发生错误时的恢复时间;5、尽量减少数据丢失,保留提交的数据,丢失未提交的数据:使用归档日志文件、闪回技术、dataguard技术;故障类别1.语句级错误:如select、insert、update、delete错误;2.用户进程错误:如数据库会话失败;3、网络错误:与数据库的连接丢失;4、用户错误:如删除表、删除用户等;5.实例错误:比如数据库突然宕机;6.介质错误:如磁盘损坏或OS级删除导致数据库文件丢失;声明失败1。试图向表中插入非法数据:需要对程序前端进行校验,或者让用户修改数据;2、尝试执行某项Insufficientpermissionsforthisoperation:要求dba授权某些对象权限或系统权限;3、尝试分配空间失败:启动可重启的空间分配,增加用户的磁盘配额,给表空间加空间;4.应用程序中的逻辑错误:需要开发者修改程序错误;TIPS:这个过程大部分是由于设计错误,比如安全机制和配额规则;需要DBA参与处理错误,比如为用户添加权限,分配空间,参与查看逻辑错误过程;UserProcessFailure用户突然掉线、异常结束或程序错误导致的session中断:无需DBA处理,实例后台进程会回滚未提交的变更并释放相关锁;PMON后台进程会定期检查ServerProcesses,检查它们的session是否连接;如果PMON找到服务器进程如果ocess不再连接,它会恢复正在进行的事务(回滚未提交的事务并释放相关的锁);如果出现少量错误,则无需关心,让用户重新进行相关操作即可;如果出现大量连接错误,需要检查是否设置的processes参数太小,或者对用户进行培训;网络故障1。监听失败:配置一个备份监听,用于连接超时故障转移;2、网卡故障:配置多块网卡;3、网络连接失败:配置备用网络连接;解决方案是通过冗余提供高可用性;用户错误1。用户无意中删除或修改了数据:如未提交,则无需任何处理;否则,需要使用闪回或回滚表;2、用户不小心删除了一个表:从回收站中恢复;如果使用了purge选项,时间点恢复(PITR,Point-in-timeRecovery)来恢复表;闪回技术1.查看数据之前的状态;2.使数据在一段时间内反复回放,类似于磁带可以来回倒带(来回,重复,来回)3.帮助用户进行错误分析和恢复;4、错误分析:闪回查询:闪回查询,可以查看过去某个时间点表中提交的数据;使用ASOF子句;FlashbackVersionsQuery:闪回版本查询,可以查看表中提交数据的各个版本变化的过程;闪回交易查询:闪回交易查询,可以查看交易级别数据库的变化;5.ErrorRecovery:FlashbackTransactionBackout:事务回滚,可以回滚指定事务及其从属事务;闪回表:删除表,可以在不影响其他数据库对象的情况下,将一个或多个表的内容回滚到之前的某个时间点;FlashbackDrop:从回收站中恢复被删除的表;闪回数据库:使整个数据库回退到过去的某个时间点。实例失败1。典型错误包括掉电、硬件错误、核心后台进程错误、紧急关机等;一般不需要DBA干预,在实例启动时会发生实例自动恢复的过程;2.当数据库实例需要实例恢复时关闭前,内存中的数据和数据文件没有同步;了解InstanceRecovery:CKPTProcess1.checkpoint事件由CKPT后台进程触发。当checkpoint发生时,CKPT进程会负责通知DBWR进程有脏数据(DirtyBuffer)写入数据文件;CKPT进程的另一个职责是更新数据文件头和控制文件上的检查点信息;2.检查点分为增量检查点和全量检查点;3、日志在切换过程中,CKPT进程也会将检查点信息写入数据文件的头部;4、检查点存在的原因:保证内存中被修改的数据块定期写入磁盘,这样当系统出现故障或数据库出现故障时,任何时候都不会丢失数据;(数据修改了就写入,会影响性能)减少实例的恢复时间;(如果不是一直写,效率高)保证关机时所有提交的数据都写到数据文件中5.Checkpoint信息包括checkpoint位置,SCN,RBA(RecoveryBlockAddress)和日志信息等.了解实例恢复:重做日志字段和日志写入器1。什么是交易;ACID特性:原子性(Atomicity)、一致性(Consistency)、Isolation、Durability;事务是数据库中的一个逻辑单元,由一条或多条sql语句组成;在实例返回给用户commit完成之前,必须写入事务信息2.重做日志文件:记录数据库中的所有变化,以事务为单位;可以防止数据丢失,如突然断电、磁盘损坏等;recommended在不同的磁盘上使用多路复用,每个在线日志组可以包含多个在线日志文件,它们互为镜像;LGWR进程同时写入联机日志组中的日志文件,这是一个可回收的存储空间3.LGWR进程启动的条件:事务提交时;每三秒;在DBWn写入之前;cleanshutdown前,即exceptshutdownabortUnderstandingInstanceRecovery1。数据库实例恢复自动完成;2.主要是没有正常关闭数据数据库启动时,检查数据文件和控制文件中记录的信息是否不一致,数据库判断需要恢复实例;3、需要做的工作是利用在线日志组的内容同步数据文件,主要包括两个过程:Roll:重做重做日志文件中记录的日志条目,包括committed和uncommitted;回滚:回滚未提交的事务PhasesofInstanceRecovery1。当数据库开始挂载状态,打开数据文件,此时检查数据文件头中记录的SCN与控制文件中记录的SCN是否一致;一致则正常打开数据库;2.如果不一致,实例将按顺序应用联机重做日志中的更改,在此阶段重新执行已提交和未提交的事务;3、当数据文件和控制文件同步后,数据库会被打开,用户可以登录并进行操作;4、之后会读取UNDO中的数据,回滚到提交的一个Transaction;最后,只有提交的数据会被保留TuningInstanceRecovery1。在实例恢复的过程中,会从上次发生checkpoint的位置开始应用到onlinelog的末尾;2.因此,实例恢复调优的本质是控制checkpoints到日志结束的距离(事务量);3、对于数据库性能,将BufferCache中的脏数据写入数据文件需要一段时间,因为DBWRn进程比LGWR进程慢很多;4、每隔3s,CKPT进程会将当前checkpoint在redolog中的位置写入控制文件,这样数据库就知道在线日志组中哪些日志实体需要恢复,哪些不需要;eg:控制文件的心跳是3s一次,可以在3s内dump两次控制文件的信息,也可以通过alert文件查看;5、instancerecovery的时间就是应用日志从最后一个checkpoint的位置到控制文件总记录位置***SCN所需的时间,DBA通过设置fast_start_mttr_target参数来控制这个时间,设置在线日志组大小(数据库内部机制保证最后一个checkpoint发生的位置到在线日志末尾的距离不能超过日志组中最小日志文件的90%)使用MTTRAdvisor1.指定实例恢复的预期时间,可以使用EM操作或者在sqlplus中设置(showparameterfast_start_mttr_target);2、默认值为0,即禁用,由系统自行决定;如果设置了fast_start对于_mttr_target的值,MTTR向导(EM->AdvisorCentral->MTTRAdvisor)将这个值转换为设置其他参数,以达到想要的时间恢复;3、最大值为3600s;4.tips:fast_start_mttr_target值设置过小会增加I/O负载,设置过大恢复时间过长;介质故障1。磁盘驱动器、磁盘控制器损坏,或数据文件被删除/损坏;主要包括数据文件、控制文件或在线日志文件损坏;2.从备份中恢复,必要时将数据库恢复到新位置等;可恢复性配置为了配置数据库中最可恢复的行,必须完成几项操作:1.制定定期备份策略:大多数媒体错误需要从备份中恢复损坏或丢失的文件;2.控制文件复用:相当于数据库的大脑,建议至少使用两个控制文件,如果所有的控制文件都丢失了很难恢复;3、在线日志组复用:实例恢复和介质恢复需要在线在线日志,用于提交事务的前滚操作;如果在线在线日志丢失,数据可能会丢失。建议每个日志组至少包含两个日志文件,并放置在不同的磁盘上。4.开启归档模式:如果有数据文件丢失,从备份中恢复需要使用备份后的所有日志文件,在线在线日志文件被回收,内容会被覆盖,所以内容需要被复制到归档日志文件;也就是所谓的归档模式,虽然开启后会对数据库性能有一定的影响,但是这个是非常有必要的;查看命令归档日志列表配置快速恢复区1。快速闪回区是用于存放归档日志、备份、闪回日志、多路复用控制文件和多路复用在线日志文件的存储空间;2.强烈推荐用于备份存储管理。该目录应与数据库数据文件、控制文件、主要在线日志文件放在不同的磁盘上;3、闪回区越大越好。但建议至少是数据库文件(数据文件、在线日志文件、控制文件等)大小的两倍;4、快速闪回区的内容由备份保留策略自动管理,Oracle数据库会自动删除那些不需要恢复的文件;rmantarget/;showall;5.设置闪回区:setdb_recovery_file_dest_大小和db_recovery_file_dest参数;有一个命令来设置MultiplexingControlFiles1。控制文件是一个很小的二进制文件,用来描述数据库结构信息;它必须在数据库安装或打开状态下可用;如果没有控制文件,则无法挂载数据库,此时可以恢复控制文件或者重建reset文件;2.如果一个控制文件丢失了,恢复很简单,复制一份即可;如果全部丢失,很难恢复,但不是灾难;3.如果使用ASM,可以在+DATA和+FRA中放一个控制文件;4、如果是文件系统,建议至少有两份,并且放在不同的磁盘上。添加控制文件的步骤:修改spfile中的初始化参数:ALTERSYSTEMSETcontrol_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;关闭数据库:立即关闭;复制文件:cp/u01/app/oracle/oradata/ORCL/control01.ctl/u01/app/oracle/oradata/ORCL/control03.ctl;启动数据库:startup;重做日志文件1。每个联机联机日志组可以包含一个或多个联机联机日志文件,一个组中的多个文件互为副本;目的是为了防止mediaerror或者数据丢失,但是多个datafiles会增加数据库的I/O(事务只有在logentry写入磁盘后才能返回success,所以onlinelogfile一定要放在fastdisk,把不同的文件放在不同的磁盘上,因为一次只能写一个文件,磁盘损坏还有备份);2、建议每个日志组至少有两个文件,如果是文件系统,将它们放在不同的磁盘上,如果是ASM,可以分别放在+DATA和+FRA;3、如果日志组中某个成员丢失,不会影响数据库的运行,但会在alert日志中写入警告;如果日志组丢失,则会发生验证的媒体错误,从而导致丢失数据;恢复方法将在管理2中介绍;多路复用RedoLog1。通过EM添加在线日志组和在线日志文件,EM->Server->RedoLogGroups;2.通过sqlplus添加联机日志组合联机日志文件;查看当前日志组状态:SELECT*FROMv$logfile;添加数据文件到日志文件组:ALTERDATABASEADDLOGFILEMEMBER'/u01/app/oracle/oradata/ORCL/redo01A.log'TOGROUP1;添加日志文件组:ALTERDATABASEADDLOGFILEGROUP4('/u01/app/oracle/oradata/ORCL/redo04A.log','/u01/app/oracle/oradata/ORCL/redo04B.log')SIZE50M;存档日志文件1。因为online联机日志组是一个可回收内存,为了数据库的最大可恢复性,需要在覆盖之前对联机日志文件组进行复制,称为归档日志;2、配置归档日志,分三步:指定归档日志的命名规则;指定归档日志的一个或多个路径;将数据库设置为归档模式,归档日志路径之前必须存在;3、如果使用快速闪回区,前两步Archiver(ARCn)Process1不需要设置。它是一个可选的后台进程,当数据库处于ARCHIVELOG模式时自动启动;ps-ef|grep弧线;2.保存数据库中的所有更改,进程数由log_archive_max_processes参数控制;3、在归档模式下,每次发生日志切换时都会调用归档进程;在非归档模式下没有这样的过程。存档日志文件:命名和目标1。使用EM修改:EM->Availability->ConfigureRecoverySettings;2.使用sqlplus修改log_archive_format参数,建议为%t_%s_%r.dbf;%s:sequencenumber,日志文件的序号不。;%t:线程,线程号;%r:resetlogsid,主要保证resetlogs方式打开数据库后归档日志名称的唯一性,10g后的新特性;%d:databaseid,数据库id,只有当多个数据库共享归档日志路径时才会使用3.默认情况下,如果启用快速闪回区,USE_DB_RECOVERY_FILE_DEST指定归档日志文件的路径;如果你想修改它到另一个路径,那么ALTERSYSTEMSETlog_archive_dest_1='location=/path';4.11gR2最多可以写入31个不同的目录,由log_archive_dest_n参数指定,目标路径可以是本地或远程改变数据库打开;