`

oracle调优SQL语句

 
阅读更多
select t.*, t.rowid from psecurity t where (t.suser,t.iobject,t.ipermission)
in (select suser,iobject,ipermission from psecurity group by  suser,iobject,ipermission having count(*)>1)
-- 检查当前剩余空间
SELECT F.TABLESPACE_NAME,
       (T.TOTAL_SPACE - F.FREE_SPACE) "USED (MB)",
       F.FREE_SPACE "FREE (MB)",
       T.TOTAL_SPACE "TOTAL (MB)",
       (ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * 100)) ||  '% ' PER_FREE
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BLOCKS *
                         (SELECT VALUE / 1024
                            FROM V$PARAMETER
                           WHERE NAME = 'db_block_size') / 1024)) FREE_SPACE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / 1048576)) TOTAL_SPACE
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) T
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME

SET NEWPAGE NONE HEADING OFF SPACE 0 PAGESIZE 0 TRIMOUT ON TRIMSPOOL ON LINESIZE 2500 colsep | feedback off termout off pages 0
set colsep |
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
spool deltab.sql
select 'truncate table ' || tname || ' drop storage' ||';' from tab
where TNAME not like '%TB%'
and TNAME like '%LZW%';
spool off;
exit;

SET NEWPAGE NONE HEADING OFF SPACE 0 PAGESIZE 0 TRIMOUT ON TRIMSPOOL ON LINESIZE 2500 colsep | feedback off termout off pages 0
set colsep |
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
spool lzw_tablespace.txt
select a.segment_name||'|'||sum(BYTES)/1024/1024||'|' from user_segments a 
group by a.segment_name
order by sum(BYTES)/1024/1024 desc ;
spool off;

nohup sqlplus  ZJLZ/xx@szj @deltab.sql>deltab.log &

ORACLE 查询数据库锁相关的语句

--查询那些用户,操纵了那些表造成了锁机
SELECT s.username,
       decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
       o.owner,
       o.object_name,
       o.object_type,
       s.sid,
       s.serial#,
       s.terminal,
       s.machine,
       s.program,
       s.osuser
FROM v$session s, v$lock l, all_objects o
WHERE l.sid = s.sid
   AND l.id1 = o.object_id(+)
   AND s.username is NOT Null;

--查出被锁的表,和锁住这个表的会话ID
select a.session_id, b.*
from v$locked_object a, all_objects b
where a.object_id = b.object_id;

--查出对应的SQL语句
select vs.SQL_TEXT,
       vsess.sid,
       vsess.SERIAL#,
       vsess.MACHINE,
       vsess.OSUSER,
       vsess.TERMINAL,
       vsess.PROGRAM,
       vs.CPU_TIME,
       vs.DISK_READS
from v$sql vs, v$session vsess
where vs.ADDRESS = vsess.SQL_ADDRESS
   and vsess.sid = (1033);

五、

1.查哪个过程被锁

查V$DB_OBJECT_CACHE视图:

SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND LOCKS!='0';


2. 查是哪一个SID,通过SID可知道是哪个SESSION.

查V$ACCESS视图:

SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名';


3. 查出SID和SERIAL#

查V$SESSION视图:

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'


查V$PROCESS视图:

SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';


4. 杀进程

(1).先杀ORACLE进程:

ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';


(2).再杀操作系统进程:

KILL -9 刚才查出的SPID



ORAKILL 刚才查出的SID 刚才查出的SPID

六、查找最耗费系统资源的SQL
--CPU
select b.sql_text,
a.buffer_gets,
a.executions,
a.buffer_gets/decode(a.executions , 0 , 1 , a.executions),
c.username
from V$sqlarea a,
v$sqltext_with_newlines b,
dba_users c
where a.parsing_user_id = c.user_id
and a.address = b.address
order by a.buffer_gets desc , b.piece
;

--IO
select b.sql_text,
a.disk_reads,
a.executions,
a.disk_reads/decode(a.executions , 0 , 1 , a.executions),
c.username
from v$sqlarea a,
v$sqltext_with_newlines b,
dba_users c
where a.parsing_user_id = c.user_id
and a.address = b.address
order by a.disk_reads desc , b.piece
;


select s.sid,s.value "CPU Used"
from v$sesstat s,v$statname n
where s.statistic#=n.statistic# and n.name='CPU used by this session'
and s.value>0
order by 2 desc; 


查看各表空间名称

select name from v$tablespace
查看某个表空间信息

select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1';
查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间(特别是生产环境)。

select s.username, u.name from v$transaction t,v$rollstat r, v$rollname u,v$session s 
where s.taddr=t.addr and t.xidusn=r.usn and r.usn=u.usn order by s.username; 
检查UNDO Segment状态

select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
创建新的Oracle释放UNDO表空间,并设置自动扩展参数;

create undo tablespace undotbs2 datafile
'D:\Oracle\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS02.DBF'
size 10m reuse autoextend on next 100m maxsize unlimited;
动态更改spfile配置文件;

alter system set undo_tablespace=undotbs2 scope=both;
等待原UNDO表空间所有UNDO SEGMENT OFFLINE;

select usn,xacts,status,rssize/1024/1024/1024,
hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
再执行看UNDO表空间所有UNDO SEGMENT ONLINE;

select usn,xacts,status,rssize/1024/1024/1024,
hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
删除原有的UNDO表空间;

drop tablespace undotbs1 including contents;
确认删除是否成功;

select name from v$tablespace;
最后需要在重启数据库或者重启计算机后到存储数据文件的路径下删除数据文件(为什么要手动删除呢:以上步骤只是删除了Oracle释放undo表空间的逻辑关系,即删除了数据文件在数据字典中的关联,不会自动删除项关联的数据文件)。

分享到:
评论

相关推荐

    Oracle数据库sql语句 跟踪器

    Oracle数据库SQL语句跟踪器,通常被称为SQL Monitor,是一种强大的工具,用于监控和分析数据库中的SQL语句执行情况。在Oracle环境中,理解SQL语句的行为是优化数据库性能的关键。SQL Monitor提供实时视图,帮助DBA...

    压测Oracle的SQL语句的性能情况

    本文将深入探讨如何利用压力测试工具来评估和优化Oracle数据库中的SQL语句性能。 标题"压测Oracle的SQL语句的性能情况"暗示了我们关注的是在高负载情况下,Oracle数据库处理SQL查询的能力。压力测试(Pressure ...

    oracle的SQL语句调优总结

    oracle的SQL语句调优总结,Oracle语句优化53个规则详解。

    Oracle Sql性能调优.ppt

    Oracle SQL 性能调优是一个非常重要的课题,它涉及到 Oracle 数据库的性能优化,包括 SQL 语句优化、索引使用优化、多表关联查询操作优化、SQL 执行计划优化等。下面是Oracle SQL 性能调优的详细知识点: 1. Oracle...

    oracle调优工具.rar

    1. **SQL优化**:通过分析和修改SQL语句,减少不必要的计算和提高查询效率。这通常需要使用到如SQL*Plus、 tkprof 或者 Oracle的自动SQL调优工具。 2. **索引优化**:根据数据访问模式合理创建和管理索引,可以显著...

    oracle的SQL语句的一些经验总结

    Oracle SQL语句是数据库管理员和开发人员在处理Oracle数据库时不可或缺的工具。它允许用户查询、更新、插入和删除数据,以及执行各种复杂的数据库操作。以下是对"Oracle的SQL语句的一些经验总结"中可能涉及的关键...

    Oracle调优总结

    Oracle 调优总结 ...Oracle 调优是一个复杂的过程,需要了解表结构、索引情况、SQL 语句的执行计划、连接方式、优化器、资源消耗等多个方面。只有通过不断的学习和实践,才能掌握 Oracle 调优的技巧。

    oracle 中SQL语句优化

    oracle中SQL语句优化

    sqlserver自动生成sql语句工具sqlserver转oracle

    本篇文章将详细探讨如何利用工具实现SQL Server自动生成SQL语句并转换到Oracle。 首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种...

    Oracle数据库SQL语句的性能优化.pdf

    总结,Oracle数据库SQL语句的性能优化是一个涉及多方面知识的综合过程,包括索引策略、查询优化器使用、子查询与连接优化、分页查询、存储过程设计、资源管理、SQL语句重构以及利用各种内置工具进行监控和调优。...

    ORACLE 19C SQL调优指南 中文版 Oracle DBA

    8. **SQL Profile和SQL Plan Baseline**:SQL Profile是优化器为了改进特定SQL语句性能而创建的优化建议,而SQL Plan Baseline则保存了成功的执行计划,防止因数据库变化导致的性能下降。 9. **回滚段优化**:回滚...

    ORACLE调优文档总结

    而SQL语句执行慢可能指向索引不足或查询逻辑问题。 3. **Oracle 9i优化设计与系统调整**: Oracle 9i版本引入了许多新的优化特性,如自动工作区管理、自动统计信息收集等。系统调整包括内存分配、表空间管理、索引...

    Oracle SQL自动调优生成报告和SQL语句的脚本

    这篇博客文章“Oracle SQL自动调优生成报告和SQL语句的脚本”提供了有关如何利用Oracle自带的工具进行SQL优化的具体步骤和脚本示例。 在Oracle数据库中,SQL调优主要包括以下几个方面: 1. **SQL分析**:通过执行`...

    Oracle_SQL语句监视器

    - **性能调优**: 分析执行计划和资源消耗,找到可以优化的地方,比如添加索引、调整表分区、重写SQL语句等。 - **监控数据库健康**: 定期查看SQL监视器,发现异常行为,预防可能的性能问题。 - **故障排除**: 当系统...

    oracle调优pdf文档(英文)

    这个“Oracle调优PDF文档”包含了由武汉支点、大唐集团和甲骨文中国在2012年11月9日共同分享的专业知识。在武汉光谷乐华商务大厦的活动中,专家们探讨了如何优化Oracle数据库性能,以提高系统效率和响应速度。 首先...

    ORACLE数据库SQL语句编写优化总结.rar

    在Oracle数据库中,SQL语句的编写和优化是数据库管理员和开发人员的重要技能。这份"ORACLE数据库SQL语句编写优化总结"文档很可能是对如何提高SQL查询性能、减少资源消耗以及提升系统整体效率的详细阐述。以下是根据...

    oracle 查看当前会话执行的sql语句

    ### Oracle 查看当前会话执行的SQL语句 在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看...

    Oracle SQL语句性能优化

    Oracle SQL语句性能优化是数据库管理中的关键环节,直接影响到系统的响应速度和资源利用效率。本文将详细探讨优化Oracle SQL语句的几个核心策略。 1. 选择合适的优化器 Oracle 提供了三种优化器:RULE(基于规则)...

    Oracle调优实战.doc

    Oracle 调优实战是一份详细的 Oracle 数据库性能调整指南,涵盖了从服务器运行状况分析到 SQL 语句优化的多个方面。本文档主要分为六大部分:服务器运行状况分析、必备工具、性能调整、TOPSQL 分析、WCM 信息检查和 ...

    oracle查看执行最慢与查询次数最多的sql语句

    在Oracle数据库管理中,了解SQL语句的执行性能和频率对于系统优化至关重要。本文将详细介绍如何查看Oracle数据库中执行最慢和查询次数最多的SQL语句,以帮助DBA(数据库管理员)识别潜在的性能瓶颈。 首先,我们来...

Global site tag (gtag.js) - Google Analytics