第43章 性能管理 2018-08-13

第43章  性能管理   2018-08-13

能检测都可以通过em查看
自动内存管理AMM
自动共享内存管理ASMM
手动设置

启用共享内存管理
10g
pga 自动管理
show parameter_target
1.pag_aggregate_target>0
2.workarea_size_policy=auto

查看内存的命中率
select * from v$pga_target_advice;

select * from v$pga_target_advice;
命中率100的第一个列的值
vi pga.sql
set heading on
set linesize 3000
set long 2000
set term off verify off feedback off pagesize 999
set markup html on entmap on spool on preformat off
spool /tmp/a1.html rep
select * from v$pga_target_advice;
spool off
ho sed '/^SQL/d' -i /tmp/a1.html
exit
SQL>start pga.sql
之后就可以在网页上查看了
浏览效果会更舒服


sga自动管理
sga_max_size=<>
sga_target>0
sga_target<=sga_max_size
通常sga_max_size=mem*3/4

show parametter sga_a
show parameter sga_max
select * from v$sga_target_advice;

修改sga参数
SQL>alter system set sga_max_size=800M scope=spfile;
SQL>startup force
SQL>alter ssytem set sga_target=665;
11g/12c
memory_target=0

AMM
memory_max_target=mem*0.8
memeory_target>0
pga_aggregate_target 和 sga_target 不需要设置大小
pga+sga自动管理
select * from v$memory_target_advice;

12c新功能
pga最大值可以限制


动态性能视图、无效对象和不可用对象
start ?/rdbms/admin/utlrp.sql
start ?/rdbms/admin/utlrpi.sql
执行上面的任意一条语句,就会自动处理无效对象,如果处理不了,只能人工处理、

索引无效
重建无效的索引
alter index <> rebuild [tablespace <>]

读代码找出错误的地方
PL/SQL
select tsxt from user_source where name='<>';

这样也可以查找错误
alter <function|procedure|package> <name> compire;
show error

select object_name,object_type from dba_objects where status='INVALIED';

实战操作
sqlplus scott/tiger
alter table emp move;
select index_name,status from user_indexes;
这时候会发现PK_EMP是UNUSEABLE
alter index pk_emp rebuild;
select index_name,status from user_indexes;
这时候会发现PK_EMP是VALID

create force view v1 as select * from vaaa;
select object_name,object_type,status from user_objects;
这时候会发现视图v1是无效的(INVALID)
desc user_views;
查看视图的内容
select text from user_views;
发现视图调用的是select * from vaaa;
select object_name,object_type,status from user_objects where object_name='VAAA';
发现no rows selected

create table vaaa as select * from dept;
select * from v1;
现在再查看vaaa
select object_name,object_type,status from user_objects where object_name='VAAA';

创建一个无效的过程
create or replace procedure p1
is
v1 number;
v2 number
begin
select * from emp where empno=7566;
end;
/

alter procedure p1 compile;
show error
查看源代码
select text from user_source where name='P1';


view > user_views
synonym > user_synonyms
pl/sql > suer_objects > user_source
index > user_indexes

posted @ 2018-08-14 14:01  喝咖啡的土豆  阅读(67)  评论(0编辑  收藏  举报