1.oracle体系结构
2.Oracle管理精通
3.sql
4.备份恢复
5.Oracle rac
6.调优
主机调优
存储调优
网络调优
db调优
应用调优
7.灾备 goldengate dataguard sharepelx
14.数据字典:v$动态性能视图
静态性能视图:dba_:所有视图
all_:可访问的对象
user_ :自己所拥有的对象
14 数据字典:v$动态性能视图
1.关闭数据库
shutdown immediate;
2.启动数据库
2.1startup
oracle数据库文件:数据文件,日志文件,控制文件
Oracle数据库:实例(数据库内存+进程)+文件
SGA中主要:shared_pool,redolog,db_
查看oracle内存:ipcs
查看oracle进程:ps -ef|grep ora
软硬解析的具体情况(数据库自启动以来的解析次数,解析时间):select name,value from v$sysystat where name like 'parse%';
sharedpool有3个空间:free(容易出错),library(容易出错),row cache,
清空shared pool内存的语句:alter system flush shared_pool;该语句可以解决4031错误,但是会产生大量的硬解析。
共享sql可以减少硬解析的次数,共享sql需要:sql语句完全一样(空格,回车,大小写,数值不一致,统统任务sql不一样);
针对数值不一样的sql,可以使用绑定变量来达到共享sql语句的目的,以减少硬解析的次数。
如下案例:
declare
v_sql varchar2(50);
begin
for i in 1..100
loop
v_sql:='insert into test values(:1)';
execute immediate v_sql using i;
end loop;
commit;
end;
1.找出没有共享的sql语句:
select sql_fulltext from v$sql where executions=1 order by sql_text;
2.解析命中率
select sum(pinhints)/sum(pins)*100 from v$librarycache;
select sum(gets),sum(getmisses),100*sum(gets-getmisses)/sum(gets) from v$rowcache where gets>0;
3.解决4031错误的方法
1)alter system flush shared_pool;
2) 共享SQL:绑定变量
3)增加shared pool空间
show parameter sga_target;
show parameter sga_max_size;
select component,current_size from V$sga_Dynamic_Components;
alter system set shared_pool_size=150M scope=both;
4)将librarycache中的有内容的chunk情况,重新挂回free cache中
5)保留区(专门用来存放大对象的)
select request_misses from v$shared_pool_reserved;
查看sql执行计划
select * from table(dbms_xplan.display_cursor('sql_id'));
查看buffer cache的大小:
select component,current_size,miin_size from v$sga_dynamic_components;
buffer cache大小的设置:
1)设置sga_max_size:alter system set sga_max_size=xxM scope=spfile;
2) 设置sga_target_size:alter system set sga_target_size=xxM scope=spfile;
3)重启数据库
4)设置buffer cache的大小:alter system set db_cache_size=20M scope=memory;
2.整个数据库所有文件中block的总和:
select sum(blocks) from dba_data_files;
3.查看某个文件的某个块所属的对象:
select object_name,dbafil,dbablk from x$bh a,dba_objects b where a.obj=b.object_id
and dbafil=1 and dbablk=338;
4.查看buffer cache中各种状态的块拥有几个
空闲空间的比例最好控制在10%以内
select decode(state,0,'free',1,decode(lrba_seq,0,'available','begin used'),3,'begin used',state) as block_status,count(*) from x$bh
group by decode(state,0,'free',1,decode(lrba_seq,0,'available','begin used'),3,'begin used',state);
5.找出消耗物理IO资源最大的SQL语句:
select disk_reads,substr(sql_text,1,4000) from v$sqlarea order by disk_reads asc;