1.v$diag_alert_ext功能说明:
1.1在oracle 12c版本中V$DIAG_ALERT_EXT显示当前容器(PDB)的自动诊断存储库(ADR)中基于xml的警报日志的内容,Oracle将警报日志和监听日志存储在服务器上
对应alert和listener文件中,传统的DBA将编写shell脚本来搜索这些文件,以查找重要的错误消息,或者通过adrci工具从11gR2开始,我们可以使用
v$diag_alert_ext视图和x$dbgalertext固化视图从alert.log日志以及listener.log中检索数据,而不用再从OS操作系统层面定位问题。
1.2例如我们提交如下查询,别着急,一会我们来封装具体的问题定位代码

1.3以下为该动态性能视图关键字段的简要说明:
1.3.1ORIGINATING_TIMESTAMP 消息生成的日期和时间
1.3.2NORMALIZED_TIMESTAMP 消息发出的日期和时间,规范化为时钟漂移到Oracle Enterprise Manager存储库的时间
1.3.3ORGANIZATION_ID 编写源组件的组织的ID,通常是组织的域
1.3.4HOST_ADDRESS mesaage原始主机的其他网络地址的IP
1.3.5MESSAGE_TYPE 消息类型,指示需要不同类型的响应。可能的值有:
1:未知——本质上是NULL类型
2:INCIDENT_ERROR -这个程序遇到了一个错误,由于一些内部或意想不到的原因,它必须报告给Oracle supper
3:错误-某种类型的错误已经发生
4:警告:一个行动发生或条件被发现,应该审查和可能需要行动
5:通知:报告一个正常的动作或事件。这可能是一个用户操作,比如“登录完成”
6:跟踪:诊断跟踪的输出
1.3.6MESSAGE_LEVEL消息所属级别。较低的级别值意味着错误的严重程度较高。可能的值有:
1:关键:关键错误
2:严重:严重错误
8:重要:重要的信息
16:正常:正常的信息
1.3.7SUPPLEMENTAL_DETAILS 特定于特定程序的补充数据和完成诊断所需的错误消息。类似于DETAILED_LOCATION中引用的额外细节,可以在消息本身中提供
1.3.8SUPPLEMENTAL_ATTRIBUTES 特定于消息的补充属性。此字段包含事件类型错误消息的影响
1.4以下,我们看具体的代码封装:
1.4.1:对应于此数据库实例的监听日志。注意,如果监听程序支持同
一个操作系统多个数据库实例,则不会区分或过滤


1.4.2Oracle数据库警告日志问题排查脚本:

具体内容不打印了,都是常规报错信息
......
/
1.4.3下面的脚本通过PL/SQL打印出一个格式化的文件内容
代码逻辑介绍:首先数据库中动态创建一个目录,运行utl_file以获取跟踪文件,并在完成时删除该目录。请在运行之前仔细检查这段代码。
脚本实际用途可能不高,一般不会利用dbms_output.putline结果进行分析,只是提供一种参考意见。



注意:该脚本非600团队原创脚本,我们在原有脚本内容做了部分改动,借鉴了整体代码编程框架逻辑。
---------------------------------------------
2.在警报日志中可以看到文件扩展名消息。也没有显式的文件大小调整DDL,如下内容显示:

注:1.在一个具有大量DML (insert/update/delete)的繁忙系统中,警报日志可能会被许多这样的文件扩展消息的内容提示
2.这些文件扩展信息是诊断增强的结果,通过未发布的方式在警报日志中记录自动数据文件大小调整操作,并以以下形式发送消息:
" NN文件从x字节自动扩展到y字节" 这在诊断可能受到文件大小调整影响的问题时非常有用。
3.bug 18603375引入了一个新的隐藏参数参数“_disable_file_resize_logging”以阻止这些消息被写入到警报日志中
4.同时我们可以设置alter system set "_disable_file_resize_logging"=TRUE关闭此提示,该隐含参数默认为FALSE
5.Bug 17596398 -在警告日志中报告数据文件大小调整操作的增强
------------------------------------------------------------------------------------------------------------------------------------------------
3.space preallocation特性简单介绍:
3.1 11g以后oracle引入了预分配space preallocation的新特性,该新特性主要涉及三个部分内容:
3.1.1表空间的预分配和扩展
3.1.2数据段segment的预分配和扩展
3.1.3LOB chunk的预分配和扩展
3.2对于表空间预分配 space preallocation特性会基于过去6个小时内的表空间使用情况,每隔10分钟分析一次,基于以下的数据分析:

3.4LOB chunk的使用情况 会每10分钟记录在内存中,也会定期flush到AWR中,基于以下的数据分析

注:1.这些预分配和扩展任务主要由SMCO(Space Management Coordinator Process)和其小工进程W00n(slave )一起完成。 SMCO和W00n是基于任务task驱动的后台任务
Framework。这个后台任务体系是基于实例的,而非基于数据库的。每一个实例instance有其自己的后台任务服务体系,运行和处理在本实例发起的任务。RAC的不同实例
之间不会交互来负责此种任务的负载
2.Task coordinator ( SMCO ) ,SMCO充当调度进程以便管理任务队列和slave进程池。其主要任务是在几个task queue之间移动任务,清理过期任务,
基于任务需要来动态分配新的slave(W00n)进程,并监控slave进程。 一个实例只有一个SMCO进程,且SMCO进程不是fatal进程,kill了一般也没事
3.对于由于SMCO 或W00n在完成space preallocation过程中遇到的问题时,可以考虑禁用该特性
alter system set "_enable_spacebg"=false;
alter system set "_enable_space_preallocation"=0
-------------------------------------------
4.关于smco空间管理协调进程的启动和使用
4.1oracle官方给出如下解释说明;

注:1.SMCO协调以下空间管理任务。它执行主动的空间分配和空间回收。它动态地生成从进程(Wnnn)来实现任务,比较显著的就是表空间预读取 预分配功能
2.要使SMCO自动扩展数据文件,应该将数据文件的autoextend设置为ON。在表空间中,扩展被平均分配到所有数据文件中,这些数据文件还没有达到它们的
最大大小,并且仍然限制在10%以内
3.SMCO过程提供的特性称为“表空间级空间(区段)预分配”。设置“_enable_space_preallocation”=0即可关闭,例如ALTER SYSTEM SET "_ENABLE_SPACE_PREALLOCATION" = 0;
4.该特性可以通过设置“_enable_space_preallocation”=3(默认值)随时再次打开,例如ALTER SYSTEM SET "_ENABLE_SPACE_PREALLOCATION" = 3;
5.
-----------------------------------------
《点亮梦想,拒绝平庸》
600团队(QQ群:851604218)




