`
colorlife
  • 浏览: 132313 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle基础

阅读更多

一. 参数、视图等

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基础教程

    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基础教程

    Oracle 基础教程 Oracle 是一款流行的关系型数据库管理系统,由 Oracle 公司开发和维护。作为一个功能强大且广泛应用的数据库管理系统,Oracle 具有强大的数据存储和管理能力,广泛应用于各种 Industries,包括金融...

    oracle基础教程ppt

    通过本Oracle基础教程PPT,你将逐步了解并掌握这些概念,为你的Oracle学习之路打下坚实基础。随着对Oracle的理解加深,你还可以进一步探索高级主题,如数据仓库、分布式数据库、RAC集群等。学习Oracle不仅是技术的...

    Oracle 基础知识 -大全- 原创整理.pdf

    以下将详细讲解Oracle基础知识,包括数据库管理、表的创建与维护、SQL查询技巧、权限管理以及PL/SQL编程等方面。 1. **Oracle数据库优势** Oracle数据库因其高性能、高可用性和安全性而受到青睐。它支持大规模并发...

    oracle基础知识考试题_答案.zip

    这个"oracle基础知识考试题_答案.zip"压缩包文件包含了关于Oracle数据库的基础知识学习材料,特别是针对初学者或者准备Oracle相关资格考试的人员。 首先,Oracle数据库的核心概念包括SQL(结构化查询语言)的使用,...

    oracle基础知识回顾与练习.zip

    本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...

    Oracle基础教程.pdf

    Oracle基础教程.pdf

    ORACLE基础知识及故障定位.pdf

    ORACLE基础知识及故障定位 学校oracle基础知识,包含所有orcale的数据库知识,以及常见问题解决思路,解决方案,问题怎么定位。

    Oracle基础教程源码下载 James Perry , Gerald Post 著,钟鸣 郝玉洁 等译

    《Oracle基础教程》是由James Perry和Gerald Post合著,并由钟鸣、郝玉洁等人翻译的一本教育性书籍,旨在帮助初学者和专业人士理解Oracle数据库的基础知识。源码下载部分提供了书中各章节实例的数据文件,使读者能够...

    oracle基础资料

    本文将基于"Oracle基础资料"这一主题,结合提供的压缩包文件"Oracle8i_9i数据库基础.doc",深入探讨Oracle数据库的基础知识,包括其核心概念、数据类型、SQL语句、表的创建以及备份恢复策略。 首先,Oracle数据库的...

    图灵邮电版oracle基础教程+数据库文件

    oracle基础教程,很适合oracle的学习和数据库的操作练习。同时里面主要是以练习为主。包括了ORACLE的基础操作。

    ORACLE基础培训文档

    这篇“Oracle基础培训文档”旨在为初学者提供一个全面了解Oracle数据库的平台,帮助大家掌握其基本概念、操作和管理技巧。 首先,我们从基础开始,Oracle数据库的核心是SQL(结构化查询语言),它是用于管理和处理...

    oracle基础教程.pdf

    "Oracle基础教程.pdf" 提供了丰富的学习资源,共分为21章,涵盖了Oracle数据库的核心概念和技术。 第1章:Oracle简介 本章将介绍Oracle数据库的历史、特点和应用领域,以及它在现代企业级数据管理中的重要地位。你...

    ORACLE 基础训练

    以上是Oracle基础训练的主要内容,通过深入学习和实践,你将能熟练掌握Oracle数据库的基础操作和高级特性。"Oracle基礎教程(一).ppt"至"Oracle基礎教程(三).ppt"中的材料将帮助你逐步掌握这些知识,为你的数据库管理...

    Oracle基础知识

    "Oracle基础知识"涵盖了SQL语言的基本概念以及Oracle 10G版本的相关特性。以下将详细介绍这些知识点。 首先,SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言。SQL基础包括以下几个部分...

    Oracle基础.ppt

    Oracle 基础知识点总览 Oracle 基础知识点可以概括为以下几个方面: 1. Oracle 概述 Oracle 是一种对象关系数据库管理系统(ORDBMS),它提供了关系数据库系统和面向对象数据库系统这二者的功能。Oracle 数据库...

Global site tag (gtag.js) - Google Analytics