1:所有都要进行绑定变量
2:查看执行计划
3:进行trace分析,tkprof *.trc a.sql
查看锁资源的sid
select object_name,oracle_username,session_id from v$locked_object l,dba_objects d where l.object_id=d.object_id
找到对应的session_id,就是我们要找到sid
select sid,serial# from v$session s where s.sid = 获取的值
杀死session的语句
alter system kill session 'sid,serial#' ;
例如sid为76,serial#是17994
alter system kill session '76,17994';
如果不行,再进行pid查询,然后杀死
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24
4:查看当前session的id
SELECT SID FROM V$MYSTAT WHERE ROWNUM =1;
5:分析表,使CBO更加准确定位
analyze table abc compute statistics;
execute dbms_stats.GATHER_DATABASE_STATS;
6:回收表空间
select segment_name,segment_type,blocks from dba_segments
where tablespace_name='TABLESPACENAME'
and blocks > N
order by blocks;
select /*+ ordered use_hash(a,b,c) */
a.file_id,a.file_name,a.filesize, b.freesize,
(a.filesize-b.freesize) usedsize,
c.hwmsize,
c.hwmsize - (a.filesize-b.freesize) unsedsize_belowhwm,
a.filesize - c.hwmsize canshrinksize
from
(
select file_id,file_name,round(bytes/1024/1024) filesize from dba_data_files
) a,
(
select file_id,round(sum(dfs.bytes)/1024/1024) freesize from dba_free_space dfs
group by file_id
) b,
(
select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents
group by file_id) c
where a.file_id = b.file_id
and a.file_id = c.file_id
order by unsedsize_belowhwm desc
7:删除表
drop table_name cascade constraints;
8:查看统计分析结果
select * from table(dbms_xplan.display)
analyze index idx_exam_count validate structure
9:字符集和类型
select * from nls_database_parameters
避免高字符集向低字符集转换,尤其是导入和导出时。
oracle对应最后可以为NULL的列,如果为NULL是不占空间的。
如果是设计直接站的字符可以VARCHAR2(100 CHAR),而不是VARCHAR2(100)
select e.exam_id , vsize(e.exam_id) from exam_info e
10: io相关sql
Select sid,
serial#,
opname,
target,to_char(start_time, 'HH24 :MI :SS'),
(sofar / totalwork) * 100
from v$session_longops;
Select name,value from v$sysstat where name like ‘%table scan%’;
11:关于oracle的缓存问题
select namespace,
pins,
pinhits,
reloads,
invalidations,
pinhitratio*100 pinhitratio
from v$librarycache;
select sum(pins) pins,
sum(pinhits) pinhits,
sum(reloads) reloads,
sum(invalidations) invalidations,
100-(sum(pinhits)/sum(pins)) *100 reparsing
from v$librarycache; 查询总体的情况
12:oracle 10 awr
execute dbms_workload_repository.modify_snapshot_settings(interval => 120,retention => 7*24*60);
修改awr的间隔时间和保持天数
@awrrpt 进行执行,可以选择html/text,days,开始和结束的快照id,来生产结果文件。
13:开启autotrace的功能
1 :登录后台用sys用户执行rdbms\admin\utlxplan
2 : create public synonym plan_table for plan_table; 创建同义词;
3:grant all on plan_table to public ; 把该表的权限授予public用户;
4:create role plustrace;
5:执行\sqlplus\admin\plustrce
#6:grant select any dictionary to plustrace; 授予该角色可以查询任意的数据字典。
7:grant plustrace to dba with admin option; 把该角色授予dba用户,并且dba可以把该角色进行再授权。
8:grant plustrace to public; 这样所有用户都可以使用autotrace;
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出
grant all on plan_table to scott;
set timing on