当索引的碎片过多时,会影响执行查询的速度,从而影响到我们的工作效率。这时候采取的最有利的措施莫过于重建索引了。本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程,接下来我们就开始介绍这一过程。 重建索引的步骤如下: 1 确认基本信息 登入数据库,找到专门存放index 的tablespace,并且这个tablespace下所有index的owner都是tax将index专门存放在一个独立的tablespace, 与数据表的tablespace分离,是常用的数据库设计方法。 2 查找哪些index需要重建 通过anlyze index validate structure命令可以分析单个指定的index,并且将单个index 分析的结果存放到 index_stats试图下。一般判断的依据是: height >4 pct_used < 50% del_lf_rows / lf_rows +0001 > 003 g ) 3 google上下载了遍历所有index脚本 发现anlyze index validate structure只能填充单个index分析信息,于是google了下,从网上下了个Loop 脚本,遍历索引空间下所有的索引名字,并且可以把所有index的分析信息存放到自己建立的一个用户表中。 4 anlyze index 锁定index 发现下载的脚本不好用,应为anlyze index在分析索引前要争取独占锁,锁住index,很明显有些index正在被应用系统的使用,所以运行anlyze失败。这里吸取的教训是,尽量晚上做这种事。但是本人比较喜欢准时回家,所以在语句中添加Exception Handler,抛出anlyze index执行失败的那些index 名称,使脚本正常运行完毕。并且根据打印到前台的index name手动执行那些index分析。 5 总结 虽然发现522个index中有160个符合上面的判断的依据。但是发现索引都不大,而那些拥有百万leaf的索引又没有符合上面的判断条件,所以结论是无需index rebuild online 没有啥碎片。 6什么时候可以rebuild index呢 rebuild index online,对那些有大量DML *** 作的大索引是有益的。可以每个月季度做一次针对较大索引的rebuild。
1、Oracle如果UNDO(撤销)表空间满了,直接导致DML *** 作等待UNDO释放空间。
2、Oracle如果TEMP满了会出现两种情况:
a 出现ORA-1652 unable to extend temp segment by 256 in tablespace错误,回滚事务。
b ORACLE会提早重用temp空间,可能对闪回 *** 作带来影响。
一:oracle装好之后,各服务进程及作用。其中5个SMON,PMON,DBWR,CKPT,LGWR是必须的后台进程,不可关闭,否则数据库将不能正常运行。二:以下是转载的:Serapymit *** 作触发LGWR将日志缓冲区数据写入UNDO日志),因此系统性能容易受到LGWR的影响。3PMON进程监视进程PMON(theProcessMonitorProcess)进程负责监视数据库的处理情况,并负责清除死掉的进程。PMON还负责重启失败的调度进程(dispatcherprocess)4SMON系统监视进程SMON(theSystemMonitorProcess)进程负责在实例启动时恢复实例,包括清除临时段以及恢复因系统崩溃而中断的事物。SMON还可以通过合并空闲分区的方式清除数据库中的碎片5CKPT检查点进程CKPT(theCheckpointProcess)进程负责向DBWR进程发送信号,要求执行一次检查点,并更新数据库的所有数据和控制文件。CheckPoint(检查点),是指有DBWR进程将所有修改过的数据缓冲区写回数据文件。CKPT是可选的,如果没有CKPT进程,则有LGWR代行这些任务。6ARCHn归档进程ARCH(theArchiverProcess)负责将再现重做日志复制到归档存储器。进档RDBMS运行在ARCHIVELOG模式时ARCH才有效,如果系统没有运行在ARCHIVELOG模式,则系统失效后可能无法恢复。最后让系统运行在ARCHIVELOG模式下,此时归档进程可能有多个。SQL>archiveloglist//查看是否为归档模式可以再数据库Mount模式下开启归档SQL>alterdatabasearchivelog;//开启SQL>alterdatabasenoarchivelog;//关闭7RECO恢复进程RECO(theRecoveryProcess)进程用于清除分布式数据库中的未决(pending)事务,它负责分布式事务中本地部分的提交与回滚8Dnnn调度进程如果选择了MultithreadedServer选项,则对使用的每个通信协议至少有一个调度进程。调度进程(theDispatcherProcess,Dnnn)负责将用户进程的请求转发到一个可用的共享服务器进程,并负责将用户进程的请求转发到一个可用的共享服务器进程,并负责回送响应消息。9Snnn共享服务器进程当使用共享服务器配置或MTS时,会用到共享服务器进程(theSharedServersProcess,Snnn)这些进程如同专用服务器进程(DedicatedServerProcess),但可以被多个用户共享。10LMSOracleRAC锁管理服务使用RAC时,该服务用语管理集群中不同节点间的锁11QMNn队列管理进程使用高级队列选项时(advancedqueueingoption),队列管理进程(QueueManagerProcess)用于管理作业队列,队列数目可以达到10个,QMN0——QMN9三:有关JDBC的不是很懂,抱歉!!不过第一点说的5个进程是必须的,其余的都可以考虑不要,
以上就是关于Oracle中断重建索引语句会不会有问题全部的内容,包括:Oracle中断重建索引语句会不会有问题、oracle数据库还原段和TEMP表空间满了各对业务会有什么影响、如何启动 oracle pmon的状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)