oracle常规信息查询脚本

2024-09-07 12:38

本文主要是介绍oracle常规信息查询脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

==>检查磁盘受限情况
SELECT a.table_name, a.next_extent, a.tablespace_name
FROM all_tables a,
        ( SELECT tablespace_name, max(bytes) as big_chunk
              FROM dba_free_space
             GROUP BY tablespace_name ) f
WHERE  f.tablespace_name = a.tablespace_name
                AND a.next_extent > f.big_chunk;

==>查出scheduler日志的情况
select l.owner,l.log_id, l.job_name,decode(l.operation, 'COMPLETED','max num or date','BROKEN', '16','others') "operation", l.log_date
  from dba_scheduler_job_log l
 where l.operation in ('COMPLETED', 'BROKEN')
   and l.status is null
   and log_date like (select to_char(sysdate-1, 'dd-MON-yy') from dual) || '%';
 
==>检查flashbackup区使用情况
Select sum(percent_space_used) "%Used" from v$FLASH_RECOVERY_AREA_USAGE;
select name,space_limit/1024/1024/1024 ,space_used/1024/1024/1024  from v$recovery_file_dest;
--升级版本,更为详细
SELECT substr(name, 1, 30) name, space_limit/1024/1024/1024 AS quota,
       space_used/1024/1024/1024        AS used,
        space_reclaimable AS reclaimable,
        number_of_files   AS files
  FROM  v$recovery_file_dest ;

==>查看FRA的使用信息
select file_type, percent_space_used ,percent_space_reclaimable ,number_of_files
from v$flash_recovery_area_usage;

==>检查索引状态
Select  owner, table_name, index_name, status
From dba_indexes  --dba_indexes
Where status = 'UNUSABLE'
Order by 1, 2,3;

select index_owner,index_name,partition_name
from dba_ind_partitions
where status='UNUSABLE'
order by 1,2,3;

select index_owner,index_name,partition_name,subpartition_name,tablespace_name
from dba_ind_subpartitions
where status='UNUSABLE'
order by 1,2,3,4;

==>检查进程数量
select inst_id, count(inst_id) from gv$session group by inst_id order by inst_id;

==>查找在五天里因非正常原因的无效所有对象
select owner, object_name, object_type, created, last_ddl_time, status
  from dba_objects
 where status = 'INVALID'
   and last_ddl_time <= (select sysdate from dual)
   and last_ddl_time >= (select sysdate - 5 from dual);

==>根据会话找出对应的进程或线程号
SELECT p1.value||'/'||p2.value||'_ora_'||p.spid||'.trc' filename
FROM
v$process p,
v$session s,
v$parameter p1,
v$parameter p2
WHERE p1.name = 'user_dump_dest'
AND p2.name = 'db_name'
AND p.addr = s.paddr
AND s.audsid = USERENV ('SESSIONID');

==>查看低效的SQL语句
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS>0
AND BUFFER_GETS > 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
ORDER BY 4 DESC

==>查看redo日志切换时间
select sequence#,
       first_time,
       nexttime,
       round(((first_time - nexttime) * 24) * 60, 2) diff
  from (select sequence#,
               first_time,
               lag(first_time) over(order by sequence#) nexttime
          from v$log_history
         where thread# = 1)
 order by sequence# desc;

==>查看分区表的最大分区信息
select TABLE_OWNER,table_name,max(partition_name)
from dba_tab_partitions t1
where TABLE_OWNER not in ('SYS','SYSTEM') and table_name in
 (select table_name from dba_tables where partitioned='YES' and OWNER not in ('SYS','SYSTEM'))
group by TABLE_OWNER,table_name ;

==>查询某指定分区数据
select * from t_locrecord partition(PAR_2013_11_25);

==>AWR快照信息查询
select instance_number,snap_id,
       to_char(begin_interval_time, 'YYYY-MM-DD'),
       to_char(end_interval_time, 'YYYY-MM-DD')
  from dba_hist_snapshot
 order by snap_id;

==>手工生成AWR快照
exec dbms_workload_repository.create_snapshot;

==>查看AWR快照保留时间
select snap_interval,retention from dba_hist_wr_control;

==>生成AWR报告脚本
 @?/rdbms/admin/awrrpt.sql



==>统计数据最近七天的每隔一小时的DB TIME情况,利用excel做成折线图进行分析
with sysstat as
 (select sn.begin_interval_time begin_interval_time,
         sn.end_interval_time end_interval_time,
         ss.stat_name stat_name,
         ss.value e_value,
         lag(ss.value, 1) over(order by ss.snap_id) b_value
    from dba_hist_sysstat ss, dba_hist_snapshot sn
   where trunc(sn.begin_interval_time) >= sysdate - 7
     and ss.snap_id = sn.snap_id
     and ss.dbid = sn.dbid
     and ss.instance_number = sn.instance_number
     and ss.dbid = (select dbid from v$database)
     and ss.instance_number = (select instance_number from v$instance)
     and ss.stat_name = 'DB time')
select to_char(begin_interval_time, 'mm-dd hh24:mi') ||
       to_char(end_interval_time, ' hh24:mi') date_time,
       stat_name,
       round((e_value - nvl(b_value, 0)) /
             (extract(day from(end_interval_time - begin_interval_time)) * 24 * 60 * 60 +
             extract(hour from(end_interval_time - begin_interval_time)) * 60 * 60 +
             extract(minute from(end_interval_time - begin_interval_time)) * 60 +
             extract(second from(end_interval_time - begin_interval_time))),
             0) per_sec
  from sysstat
 where (e_value - nvl(b_value, 0)) > 0
   and nvl(b_value, 0) > 0;

==>检查数据库的tablespace 的使用率,如果大于50%,看业务要对相应tablespace增加数据文件
select ts.tablespace_name,
       (case
         when size_info.max_size <= 0 then
          size_info.pct_used
         else
          round((1 - size_info.max_megs_available / size_info.max_size) * 100)
       end) pct_used_of_max
  from (select a.tablespace_name,
               round(a.bytes_alloc / 1024 / 1024) megs_alloc,
               round(nvl(b.bytes_free, 0) / 1024 / 1024) megs_free,
               round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024) megs_used,
               round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) pct_free,
               100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) pct_used,
               round(a.maxbytes / 1048576) max_size,
               round((a.maxbytes - a.bytes_alloc + nvl(b.bytes_free, 0)) /
                     1048576) max_megs_available
          from (select f.tablespace_name,
                       sum(f.bytes) bytes_alloc,
                       sum(decode(f.autoextensible,
                                  'YES',
                                  f.maxbytes,
                                  'NO',
                                  f.bytes)) maxbytes
                  from dba_data_files f
                 group by tablespace_name) a,
               (select f.tablespace_name, sum(f.bytes) bytes_free
                  from dba_free_space f
                 group by tablespace_name) b
         where a.tablespace_name = b.tablespace_name(+)
        union all
        select h.tablespace_name,
               round(sum(h.bytes_free + h.bytes_used) / 1048576) megs_alloc,
               round(sum((h.bytes_free + h.bytes_used) -
                         nvl(p.bytes_used, 0)) / 1048576) megs_free,
               round(sum(nvl(p.bytes_used, 0)) / 1048576) megs_used,
               round((sum((h.bytes_free + h.bytes_used) -
                          nvl(p.bytes_used, 0)) /
                     sum(h.bytes_used + h.bytes_free)) * 100) pct_free,
               100 - round((sum((h.bytes_free + h.bytes_used) -
                                nvl(p.bytes_used, 0)) /
                           sum(h.bytes_used + h.bytes_free)) * 100) pct_used,
               round(sum(f.maxbytes) / 1048576) max_size,
               round(case
                       when sum(f.maxbytes) - sum(nvl(p.bytes_used, 0)) > 0 then
                        (sum(f.maxbytes) - sum(nvl(p.bytes_used, 0))) / 1048576
                       else
                        (sum(nvl(p.bytes_used, 0)) - sum(f.maxbytes)) / 1048576
                     end) max_megs_available
          from sys.v_$temp_space_header h,
               sys.v_$temp_extent_pool  p,
               dba_temp_files           f
         where p.file_id(+) = h.file_id
           and p.tablespace_name(+) = h.tablespace_name
           and f.file_id = h.file_id
           and f.tablespace_name = h.tablespace_name
         group by h.tablespace_name) size_info,
       sys.dba_tablespaces ts
 where ts.tablespace_name = size_info.tablespace_name
   and (case
         when size_info.max_size <= 0 then
          size_info.pct_used
         else
          round((1 - size_info.max_megs_available / size_info.max_size) * 100)
       end) > =50
 order by pct_used_of_max desc, size_info.max_megs_available desc;


这篇关于oracle常规信息查询脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145084

相关文章

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

MySQL多列IN查询的实现

《MySQL多列IN查询的实现》多列IN查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL多列IN查询的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析与优化1.

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

mysql关联查询速度慢的问题及解决

《mysql关联查询速度慢的问题及解决》:本文主要介绍mysql关联查询速度慢的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql关联查询速度慢1. 记录原因1.1 在一次线上的服务中1.2 最终发现2. 解决方案3. 具体操作总结mysql