一. 参数、视图等
1. 警报日志位置: show parameters background_dump_dest alert.log 日志
2. 跟踪日志文件: user_dump_dest
3. SGA 大小: show parameters sga_max_size; 或 sga_target
sga 各部分: show sga
PGA(程序合局区,服务器进程使用的包含数据和信息的内存,非共享): 由 *_area_size 参数控制。
pga_aggregate_target:控制总共可用的pga
纯数据库服务器,oracle占用内存的大小大概为80%,pga设置为oracle占用内存的20%,也就是:总内存*80%*20%
4.各种视图 v$process: 进程视图
select * from v$session; 会话
select * from v$sgastat; sga视图,还有 v$pgastat
v$sysstat
5.查找sql语句引起cpu高的问题的过程:
top查找哪个进程引起的
ps -ef|grep pid 查到是否本地还是远程用户 (local=no表示远程用户)
根据pid捕获有问题的语句:
select /*+ ORDERED */ sql_text
from v$sqltext a
where (a.hash_value,a.ADDRESS)in
(select decode(sql_hash_value,0, prev_hash_value,sql_hash_value),
decode(sql_hash_value,0,prev_sql_addr,sql_address)
from v$session b
where b.PADDR = (select addr from v$process c where c.spid='&pid'))
order by piece ASC;
(不太好用,要找更好的)
6.连接
左外连接:包括左边所有 A left join B on A.id=B.id
右外连接,类似
内连接即自然连接,inner join
一般不用加号,有较多限制
7. redo, undo
redo log记录执行的操作,使用改变向量(change vector)来记录,只记录操作代码、数据块地址等,记录量比实际执行语句少很多,能连续、顺序、快速地写出。
用户在 commit事务时,表示此时间点之前的 redo 写入了重做日志文件中而已,足以保证 提交成功的数据不会丢失。这
是 no-force-at-commit策略,也就是提交时不强制写。
由于ORACLE认为你一旦做数据更新,那么就意味着你要COMMIT(其他数据库不全是这种设计理念,比如DB2),所以在你更新数据的时候就做了大量的工作,在commit时所做工作并不多:产生SCN,写redo到磁盘,释放lock等。因此大事务和小事务commit时所花的时间差不多。
undo
读不阻塞写,写不阻塞读。
undo是为了回滚事务(rollback),也就是需要保存修改前数据的值,以便能够恢复到之前的状态。回滚的过程也会产生redo。
对于插入操作,回滚段记录的是 rowid。 update,记录的是被更新字段的旧值。delete记录的是整行的数据,因此delete的回滚是需要很长时间。
查看undo表空间大小:
select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1';
查看回滚段的大小和状态
select usn,xacts,status,rssize/1024/1024 as "size(MB)",hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
归档日志:
1. 开启: alter database archivelog;
关闭: alter database noarchivelog;
必须在mount 模式下执行,startup mount
需重启数据库
2.查看: archive log list;
3. 删除:
rman target/
delete archivelog all completed before 'sysdate-2'; -- 删除2天之前的归档日志
delete archivelog from time 'sysdate-2'; -- 删除从两天前到现在的归档日志
等待事件、性能
所有等待事件:v$event_name
1. v$session, v$session_wait v$sqltext
可以通过v$session_wait获取等待事件,得到等待时间最长的事件的 sid,在 v$session 根据 sid 查到 sql_hash_value, 根据 hash_value 在 v$sqltext 中查看相关语句。
2. v$session_wait_history 可以查看之前活动session 的最近十个等待事件。
3. ASH : ash 是每一秒钟对 v$session 表进行采样得到的信息,但只记录活动的会话。使用的内存大小可以通过 v$sgastat 查询出来。内存写满了会覆盖前面的。
4. AWR :采样工作由MMON后台进程进行,默认每60分钟把所有重要的统计信息和负载信息执行一次快照。ASH 信息是AWR信息的一部分。把ASH 10%左右的信息写到AWR负载库中。相关表以 WRH$ 开头,存储在 SYSAUX表空间。
5. v$system_event
可以查看各类事件的自数据库运行以来的总的等待时间。
关注 event, time_waited, wait_class 等字段。如果 wait_class是idle,是空闲等待,不需要看。
如 db file scattered read 事件一般表示全表扫描,等待时间很长的话,可能就是没有建索引了。
db file sequential read 事件: 一般表示读取索引或通过索引读取数据块,等待时间很长的话,表示索引有问题,或者多表链接顺序没有正确的使用驱动表,
direct path read/write: 直接路径读、写。是指绕过SGA,直接读写PGA。一般指磁盘排序IO操作、直接路径加载。要确定是否有过度排序的语句,或者增大临时文件使用的空间,如增大 pga_aggregate_target
6. v$session_longops: 查看花费时间长的事件
v$sql_plan:查看执行计费,可以通过 operation 、options字段查询匹配哪些sql语句(需关联到sql_text表)进行了全表、全索引的扫描。
性能诊断
1. 执行计划
set autotrace off | on | on explain | on statistics | traceonly
或者
explain plan for select * from dual;
@?/rdbms/admin/utlxplp;
有效地降低sql的逻辑读(consistent gets)是sql优化的基本 原则之一。
2. sql_trace
对sql进行跟踪,设置参数 timed_statistics 为 true; max_dump_file_size要足够大。
alter session set sql_trace=true; (不能sysdba登录,会提示权限不够)
将会生成跟踪文件,用 tkprof 格式化跟踪文件,进行查看。
对特定的 session 进行 sql_trace:
获取session 的 sid 和 serial , select sid,serial#,username from $session;
exec dbms_system.set_sql_trace_in_session(sid, serial, true);
运行一段时间后关闭: exec dbms_system.set_sql_trace_in_session(sid, serial, false);
3. 10046事件
有4个级别:level 1 相当于sql_trace, level 4 相当于level 1 + 绑定值
level 8 相当于level 1 + 等待事件跟踪, level 12 相当于 level 4 + level 8
全局设置:在参数文件中增加: event="10046 trace name context forever,level 12"
session: alter session set events '10046 trace name context forever";
或:alter session set events '10046 trace name context forever,level 8';
关闭:alter session set events '10046 trace name context off';
设定其它会话: 需要用到 sid, serial#, username(同2)
exec dbms_system.set_ev(sid, serial, 10046, level, username);
关闭: dbms_system.set_ev(sid, serial, 10046, 0, username);
经测试:10046事件实际打印的执行计划的信息没有sql_trace 详细
物化视图
视图的查询结果是执行视图定义的查询语句动态得到的。
而物化视图则使用中间表存储了视图定义时查询语句的结果,查询物化视图时就不需要再动态关联各个表执行查询了。
物化视图是典型的空间换时间。
什么时候使用物化视图:定义视图的查询语句较为复杂;where语句较为严格,查询结果的数据量比原来少很多;原表数据更新频率不高或物化视图不需与原表同步实时更新数据。这时使用物化视图可大大提高查询性能。
相关推荐
oracle基础教程 课程说明 1 课程介绍 1 课程目标 1 相关资料 1 第1章 ORACLE数据库概述 2 1.1 产品概述 2 1.1.1 产品简介 2 1.1.2 基本概念 3 1.2 ORACLE系统结构 4 1.2.2 ORACLE物理结构 4 1.2.3 系统全局区 6 ...
对于初学者来说,掌握Oracle基础知识是进入数据库领域的第一步。本文将深入浅出地介绍Oracle数据库的一些核心概念和基本操作,帮助你快速入门。 一、Oracle数据库系统概述 Oracle数据库是由美国Oracle公司开发的,...
oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料
Oracle 基础教程 Oracle 是一款流行的关系型数据库管理系统,由 Oracle 公司开发和维护。作为一个功能强大且广泛应用的数据库管理系统,Oracle 具有强大的数据存储和管理能力,广泛应用于各种 Industries,包括金融...
通过本Oracle基础教程PPT,你将逐步了解并掌握这些概念,为你的Oracle学习之路打下坚实基础。随着对Oracle的理解加深,你还可以进一步探索高级主题,如数据仓库、分布式数据库、RAC集群等。学习Oracle不仅是技术的...
以下将详细讲解Oracle基础知识,包括数据库管理、表的创建与维护、SQL查询技巧、权限管理以及PL/SQL编程等方面。 1. **Oracle数据库优势** Oracle数据库因其高性能、高可用性和安全性而受到青睐。它支持大规模并发...
这个"oracle基础知识考试题_答案.zip"压缩包文件包含了关于Oracle数据库的基础知识学习材料,特别是针对初学者或者准备Oracle相关资格考试的人员。 首先,Oracle数据库的核心概念包括SQL(结构化查询语言)的使用,...
本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...
Oracle基础教程.pdf
ORACLE基础知识及故障定位 学校oracle基础知识,包含所有orcale的数据库知识,以及常见问题解决思路,解决方案,问题怎么定位。
《Oracle基础教程》是由James Perry和Gerald Post合著,并由钟鸣、郝玉洁等人翻译的一本教育性书籍,旨在帮助初学者和专业人士理解Oracle数据库的基础知识。源码下载部分提供了书中各章节实例的数据文件,使读者能够...
本文将基于"Oracle基础资料"这一主题,结合提供的压缩包文件"Oracle8i_9i数据库基础.doc",深入探讨Oracle数据库的基础知识,包括其核心概念、数据类型、SQL语句、表的创建以及备份恢复策略。 首先,Oracle数据库的...
oracle基础教程,很适合oracle的学习和数据库的操作练习。同时里面主要是以练习为主。包括了ORACLE的基础操作。
这篇“Oracle基础培训文档”旨在为初学者提供一个全面了解Oracle数据库的平台,帮助大家掌握其基本概念、操作和管理技巧。 首先,我们从基础开始,Oracle数据库的核心是SQL(结构化查询语言),它是用于管理和处理...
"Oracle基础教程.pdf" 提供了丰富的学习资源,共分为21章,涵盖了Oracle数据库的核心概念和技术。 第1章:Oracle简介 本章将介绍Oracle数据库的历史、特点和应用领域,以及它在现代企业级数据管理中的重要地位。你...
以上是Oracle基础训练的主要内容,通过深入学习和实践,你将能熟练掌握Oracle数据库的基础操作和高级特性。"Oracle基礎教程(一).ppt"至"Oracle基礎教程(三).ppt"中的材料将帮助你逐步掌握这些知识,为你的数据库管理...
"Oracle基础知识"涵盖了SQL语言的基本概念以及Oracle 10G版本的相关特性。以下将详细介绍这些知识点。 首先,SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言。SQL基础包括以下几个部分...
Oracle 基础知识点总览 Oracle 基础知识点可以概括为以下几个方面: 1. Oracle 概述 Oracle 是一种对象关系数据库管理系统(ORDBMS),它提供了关系数据库系统和面向对象数据库系统这二者的功能。Oracle 数据库...