Oracle分区表全局索引添加分区时不会失效
COALESCE PARTITION | SUBPARTITION (hash)DROP PARTITION | SUBPARTITIONEXCHANGE PARTITION | SUBPARTITIONMERGE PARTITION | SUBPARTITIONMOVE PARTITION | SUBPARTITIONSPLIT PARTITION | SUBPARTITIONTRUNCATE PARTITION | SUBPARTITION上面所有操作都会引起global索引失效。其中下面的操作会引起local索引失...
如何查看统计信息是否成功收集
可通过dba_ind_statistics和dba_tab_statistics中的LAST_ANALYZED字段,观察是否完成了统计信息的收集,只有完成的收集工作才会记录在这两个视图中。测试过程如下:1 创建一个200w行左右的测试表,数据源为dba_objects。2 查看视图中统计信息:select a.OWNER,a.INDEX_NAME,a.TABLE_NAME,a....
DBMS_SQLTUNE使用方法
SQL调优工具包DBMS_SQLTUNE的使用方法oracle 提供了优化建议功能包DBMS_SQLTUNE,该包可以帮助我们分析SQL,并提供优化建议。原有执行计划alter session set statistics_level=all;set serveroutput offselect * from test.emp where ename='SCOTT' and DEPTNO=20;SELECT * FROM table(dbms_xplan.display_cursor(N...
如何处理表空间级别,表级别,索引级别的碎片
How To Reclaim Wasted Space on The Segment (Table, Index and LOB) and Tablespace Levels (文档 ID 1682748.1)
碎片较多的表重组
首先查询出数据库中需要重组的表:SELECT d.name,d.dbid,p.*,p.curr_mb-p.net_mb as save_mb,round((p.CURR_MB-p.NET_MB)/p.CURR_MB*100) AS PERCENTAGEFROM (SELECT t.owner owner,SUBSTR(t.TABLE_NAME,1,50) TABLE_NAME,t.tablespace_name,t.NUM_ROWS,t.AVG_ROW_LEN ROWLEN, ROUND(BLOCKS*8...
根据操作系统进程号,查找sql语句
有时需要根据操作系统编号查找正在执行的sql语句:select sess.username,sql1.SQL_TEXTfrom v$session sess,v$sqltext sql1,v$process prowhere sess.SQL_ADDRESS=sql1.ADDRESS and pro.ADDR=sess.PADDR and pro.SPID='&spid'order by sql1.PIECE;...
稳定sqlplan方法
with优化妙用
--语法:/*with alias_name1 as (subquery1), alias_name2 as (subQuery2), …… alias_nameN as (subQueryN) select col1,col2…… col3 from alias_name1,alias_name2……,alias_nameN &nb...
rolllup巧用
--构造环境drop table dept purge;drop table emp purge;create table dept as select * from scott.dept;create table emp as select * from scott.emp;------------------------------------------------------------------------------------------------------------------------------------------------...
使用with子句优化代码中重复查询
/*好处: 1. 性能更好,一份复制(类似SYS_TMP...),多份使用。 2. 结构清晰,预先定义。 3. 代码修改不必修改多处。 请注意观察语句1和语句2执行计划的差异,尤其是语句2的SYS_TEMP_0FD9D6605_3B91BA4这些奇怪的命名。其实这就表示是...
三种链接方式的区别
1 nested loops join--我们用设置statistics_level=all的方式来观察如下表连接语句的执行计划:--T2表被访问100次(驱动表访问1次,被驱动表访问100次)--这个set linesize 1000对dbms_xplan.display_cursor还是有影响的,如果没有设置,默认情况下的输出,将会少了很多列,如BUFFERS等Set linesize 1000alter sessio...
INDEX SKIP SCAN适用场景
--请记住这个INDEX SKIP SCAN扫描方式drop table t purge;create table t as select * from dba_objects;update t set object_type='TABLE' ;commit;update t set object_type='VIEW' where rownum<=30000;commit;create index idx_type_id on t(object_type,object_id);exec dbms_stats.gather_table_stat...
INDEX FULL SCAN和INDEX FAST FULL SCAN区别
---请记住这个INDEX FULL SCAN扫描方式,并体会与INDEX FAST FULL SCAN的区别drop table t purge;create table t as select * from dba_objects;update t set object_id=rownum;commit;alter table T modify object_id not null;create index idx_object_id on t(object_id);set autotrace traceonlyset li...
索引反向使用案例,加index_desc hint
drop index idx_t;create index idx_t on t(owner desc,object_type asc);select /*+index(a,idx_t)*/ * from t a order by owner desc ,object_type asc;执行计划-------------------------------------------------------------------------------------| Id | Operation  ...
手工执行sql tuning advisor和sql access advisor
sql tuning advisor:创建任务DECLARE my_task_name VARCHAR2(30); my_sqltext CLOB;BEGIN my_sqltext := 'SELECT /*+ ORDERED */ * ' || 'FROM employees e, locations l, departments d ' || 'WHERE e.department_id = d.department_id AND ' || ...
awrsqrpt.sql使用方法,功能持续完善中
ORACLE_HOME/RDBMS/admin/awrsqrpt.sql 这个脚本可以很方便地取出某个sql在某两个快照间隔内,消耗cpu时间,执行次数,逻辑读,物理读,sql的执行计划以及sql的full sql text,对调优非常方便
PLSQL使用绑定变量
想对一个sql做10046trace,结果因为10g数据库无法对sql_id做,只能使用绑定变量的方法,下面sql是如何使用绑定变量运行sql的语句declare v_sql VARCHAR2(2000):= 'insert into regions values(:1,:2)';begin execute immediate v_sql using 11,'Japan';end;...
持续更新,查看dump oracle数据块查看
alter system dump datafile 8 block 2523;Block dump from disk:buffer tsn: 87 rdba: 0x160dd924 (88/907556)scn: 0x0d5e.326709f3 seq: 0x01 flg: 0x06 tail: 0x09f30601frmt: 0x02 chkval: 0x85a7 type: 0x06=trans dataHex dump of block: st=0, typ_found=1Dump of memory from 0x0000000034FD7000 to 0x00000...
记一次insert因为db file sequential read影响性能导致性能原因的分析
通过详细的10046 trace发现,大量的io等待分布在以下数据文件上:Misses in library cache during parse: 0Elapsed times include waiting on following events: Event waited on Times M...
io问题导致的insert缓慢
生产环境一日常insert在业务量加倍之后非常缓慢,对有问题sql做awr报告和10046trace得出以下结论:In the 10046 trace, the execution of sql elapsed 27.85 secs, the waiting event held 12...