
oracle性能优化
文章平均质量分 80
张冲andy
熟悉各种数据库,包括不限于 mysql,postgresql,oracle,redis,mongodb,clickhouse等
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
锁的种类,阻塞,死锁产生与解决办法。
TM锁的种类: TM锁几种模式的互斥关系:阻塞定义:当一个会话保持另一个会话正在请求的资源上的锁定时,就会发生阻塞。被阻塞的会话将一直挂起,直到持有锁的会话放弃锁定的资源为止。4个常见的dml语句会产生阻塞INSERTUPDATEDELETESELECT…FOR UPDATE —————————————————原创 2016-12-22 23:41:03 · 3359 阅读 · 0 评论 -
oracle 之 安装10.2.0.1 且 升级到 10.2.0.4
一、 centos 6.5 安装 oracle 10.2.0.11.安装操作系统,选择桌面环境2.配置本地yum源 , 可参考 http://blog.youkuaiyun.com/zhang123456456/article/details/566909453.补包yum -y install binutils compat-libstdc++-33 compat-libstdc原创 2017-09-21 21:15:07 · 3907 阅读 · 0 评论 -
oracle之 关闭透明大页
方法一:1、设置/etc/grub.conf文件,添加 transparent_hugepage=never ,在系统启动是禁用[root@hbdw1 ~]# cat /etc/grub.conf # grub.conf generated by anaconda## Note that you do not have to rerun grub after makin原创 2017-09-29 19:10:26 · 3679 阅读 · 0 评论 -
SQL_TRACE与tkprof分析
一. SQL_TRACE当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作。 可以通过sql命令启动SQL_TR原创 2016-12-18 14:38:52 · 360 阅读 · 0 评论 -
oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息
11g中引入了新的动态性能视图V$SQL_MONITOR,该视图用以显示Oracle监视的SQL语句信息。SQL监视会对那些并行执行或者消耗5秒以上cpu时间或I/O时间的SQL语句自动启动,同时在V$SQL_MONITOR视图中产生一条记录。当SQL语句正在执行,V$SQL_MONITOR视图中的统计信息将被实时刷新,频率为每秒1次。SQL语句执行完成后,监视信息将不会被立即删除,Oracle会原创 2017-09-11 21:24:38 · 1732 阅读 · 0 评论 -
oralce之 10046对Hash Join分析
前两天解决了一个优化SQL的case,SQL语句如下,big_table为150G大小,small_table很小,9000多条记录,不到1M大小,hash_area_size, sort_area_size均设置足够大,可以进行optimal hash join和memory sort。123456select /*+ leadin原创 2017-09-10 20:10:27 · 268 阅读 · 0 评论 -
oracle之 等待事件LOG FILE SYNC (awr)优化
log file sycn是ORACLE里最普遍的等待事件之一,一般log file sycn的等待时间都非常短 1-5ms,不会有什么问题,但是一旦出问题,往往都比较难解决。什么时候会产生log file sync等待?常见有以下几种:1)commit操作2)rollback操作3)DDL操作(DDL操作实施前都会首先进行一次commit)4)DDL操作导致的数据字典修改所产原创 2017-09-10 17:57:11 · 10825 阅读 · 2 评论 -
Oracle之 等待事件log file sync + log file parallel write (awr优化)
这是3月份某客户的情况,原因是server硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况。我们先来看下awr的情况。 我们能够看到,该系统的load profile信息事实上并不高,每秒才21个transaction。先来看看top5events:从top 5event,我们能够发现,log file sync的avg wait很之高,高达124ms原创 2017-09-10 17:32:07 · 2588 阅读 · 0 评论 -
oracle之 oradebug 命令用法
1> oradebug有哪些可用命令?以sysdba身份登陆数据库,通过oradebug help可以看到oradebug常用命令sqlplus / as sysdbaoradebug help2> 跟踪当前会话信息oradebug setmypid --跟踪当前会话oradebug setospid --跟踪系统进程oradebug setorapid --跟原创 2017-08-16 23:22:28 · 1339 阅读 · 0 评论 -
oracle之 调整 I/O 相关的等待
I/O相关竞争等待简介当Oracle数据库出现I/O相关的竞争等待的时候,一般来说都会引起Oracle数据库的性能低下,发现数据库存在I/O相关的竞争等待一般可以通过以下的三种方法来查看Oracle数据库是否存在I/O相关的竞争等待:(1)Statpack报告中在"Top 5 Wait Events"部分中主要都是I/O相关的等待事件。(2)数据库的等待事件的SQL语句跟踪中主转载 2017-08-30 12:55:10 · 1158 阅读 · 0 评论 -
Oracle 之 AIO (异步io)
Linux 异步 I/O (AIO)是 Linux 内核中提供的一个增强的功能。它是Linux 2.6 版本内核的一个标准特性,AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果。同步IO:线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。异步IO:线程发送一...原创 2017-09-07 21:39:56 · 1689 阅读 · 0 评论 -
oracle之 db file sequential read等待事件优化思想
为什么db file sequential read事件在full table scan操作中显现,为什么在多块读中为什么会有单块读存在 ?extent的大小 :当扩展区中的最后一组块仅是1个块,oracle使用单块读来提取这个块。这正常来说不是一个问题,除非你扩展区尺寸太小。以下是一个event 10046的trace文件,显示在全表扫描操作中包围的db file sequential原创 2017-08-28 17:52:14 · 1923 阅读 · 0 评论 -
Nested loops、Hash join、Sort merge join(三种连接类型原理、使用要点)
nested loop 嵌套循环(原理):oracle从较小结果集(驱动表、也可以被称为outer)中读取一行,然后和较大结果集(被侦查表,也可以叫做inner)中的所有数据逐条进行比较(也是等值连接,也可以是非等值连接),如果符合规则,就放在结果集中,然后取驱动表的下一条数据继续循环,直到结束。简单的理解就是:从A表抽一条记录,遍历B表查找匹配记录,然后从a表抽下一条,遍历B表,就是一个原创 2017-04-28 10:44:38 · 2450 阅读 · 0 评论 -
oracle之 反向键索引
反向键索引是一种B-tree索引,它在保持列顺序的同时,物理地改变每个索引键的字节(反向键索引除了ROWID和still之外,反转每个索引列的字节)。例如,如果索引键为20,如果在十六进制中存储为这个键的两个字节是C1,则是标准b树索引中的15个字节,那么一个反向键索引将字节存储为15,C1。优点:反转键解决了b树索引右侧叶块争用的问题。这个问题在Oracle Real Application c...原创 2018-03-23 09:48:02 · 1547 阅读 · 0 评论 -
oracle之 AWR固定基线
前言:可以创建AWR基线来为数据库建立已保存的工作负载视图,以便以后用来与其他AWR快照进行比较。1、 手工创建 AWR 固定基线(固定基线如果没有设置过期时间,会永久保存)-- 根据时间创建DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_time IN DATE,end_time IN DATE,baseline_name IN VARCHAR2,d...原创 2018-03-22 16:08:23 · 709 阅读 · 1 评论 -
MOVE降低高水位 HWM
--创建实验表空间SQL> create tablespace andy03 datafile '/home/oracle/app/oradata/orcl/andy03.dbf' size 10M autoextend on next 30M; --创建实验数据SQL> create table andy03 tablespace andy03 as select * from ...原创 2018-02-25 11:24:00 · 321 阅读 · 0 评论 -
What is DB time in AWR?
AWR中有 DB time这个术语,那么什么是DB time呢? Oracle10gR2 官方文档 给出了详细解释(Oracle10gPerformance Tuning Guide 5.1.1.2 Time Model Statistics) The most important of the time model statistics is DB time. This stat原创 2017-09-05 20:18:03 · 322 阅读 · 0 评论 -
Linux 之 hugepage 大页内存理论
HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能。尤其是对于8GB以上的内存以及较大的Oracle SGA size,建议配值并使用HugePage特性。本文基于x86_64 Linux下来描述如何配值 HugePages。1、Hugepage的引入 操作系统原创 2017-09-05 16:48:59 · 13746 阅读 · 0 评论 -
SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表)
swap_join_inputs是针对哈希连接的hint,它的含义是让优化器交换原哈希连接的驱动表和被驱动表的顺序,即在依然走哈希连接的情况下让原哈希连接的驱动表变被驱动表,让原哈希连接的被驱动表变为驱动表。注意,在swap_join_inputs hint中指定的目标表应该是原哈希连接中的被驱动表,否则oracle会忽略该hint。/*+ swap_join_inputs(原哈希转载 2017-04-30 19:39:21 · 2574 阅读 · 0 评论 -
虚拟索引
从9.2版本开始Oracle引入了虚拟索引的概念,虚拟索引是一个“伪造”的索引,它的定义只存在数据字典中并有存在相关的索引段。虚拟索引是为了在不真正创建索引的情况下,验证如果使用索引sql执行计划是否改变,执行效率是否能得到提高。一、虚拟索引支持类型虚拟索引支持B-TREE索引和BIT位图索引,在CBO模式下ORACLE优化器会考虑虚拟索引,但是在RBO模式下需要添加hin原创 2017-04-05 17:29:58 · 590 阅读 · 0 评论 -
Oracle 11g 新特性 - Database Replay (重演) 说明
Oracle 11g 新特性 -- Database Replay (重演) 说明 一.理论知识说明 官方文档的说明:Introduction to Database Replayhttp://docs.oracle.com/cd/E11882_01/server.112/e16540/dbr_intro.htm#RATUG104转载 2017-04-17 22:34:06 · 2384 阅读 · 1 评论 -
Merge into使用详解( 同时执行inserts和updates操作 )
Merge是一个非常有用的功能,类似于MySQL里的insert into on duplicate key.Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现用B表来更新A表数据,如果A表中没有,则把B表的数据转载 2017-04-04 13:03:30 · 3071 阅读 · 0 评论 -
MOVE降低高水位 HWM
MOVE降低高水位 HWM--创建实验表空间SQL> create tablespace andy03 datafile '/home/oracle/app/oradata/orcl/andy03.dbf' size 10M autoextend on next 30M; --创建实验数据SQL> create table andy03 tablespace andy03原创 2017-04-02 09:58:58 · 559 阅读 · 0 评论 -
图形化升级单机oracle 11.2.0.1 到 11.2.0.4
1. 讲补丁包上传到 oracle server ,解压、安装[root@11g ~]#unzip p13390677_112040_Linux-x86-64_1of7.zip -d /tmp && unzip p13390677_112040_Linux-x86-64_2of7.zip -d /tmp2. 检查当前版本SQL> select * from v$versio原创 2017-03-19 13:15:37 · 1960 阅读 · 0 评论 -
oracle隐含参数的查看与修改
v$parameter视图中查询参数的时候其实都是通过x$ksppi和x$ksppcv这两个内部视图中得到的。 1. 可以通过如下方式查询当前实例的所有隐含参数:col name for a30;col value for a10;selectx.ksppinm name,y.ksppstvl value,y.ksppstdf isde原创 2017-02-26 14:24:14 · 2977 阅读 · 0 评论 -
三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF
三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF理论背景Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都原创 2017-02-25 22:03:21 · 675 阅读 · 0 评论 -
利用外部表实现SQL查询Oracle告警日志Alert.log
本文根据刘相兵大师的blog的脚本,并做了一些该进:http://www.oracledatabase12g.com/archives/%E5%88%A9%E7%94%A8%E5%A4%96%E9%83%A8%E8%A1%A8%E5%AE%9E%E7%8E%B0sql%E6%9F%A5%E8%AF%A2oracle%E5%91%8A%E8%AD%A6%E6%97%A5%E5%BF%97al转载 2017-01-01 19:33:02 · 1146 阅读 · 0 评论 -
等待事件分析
在Oracle 10g中的等待事件有872个,11g中等待事件1116个。 我们可以通过v$event_name 视图来查看等待事件的相关信息。1.1 查看v$event_name视图的字段结构:SQL> desc v$event_name Name --------------------------- EVENT# EVENT_ID NAME P转载 2016-12-29 22:49:30 · 355 阅读 · 0 评论 -
Oracle Hints详解
在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用。基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生转载 2016-12-29 12:01:15 · 285 阅读 · 0 评论 -
latch: cache buffers chains故障处理总结(转载)
一大早就接到开发商的电话,说数据库的CPU使用率为100%,应用相应迟缓。急匆匆的赶到现场发现进行了基本的检查后发现是latch: cache buffers chains 作祟,处理过程还算顺利,当时忘了记录log,这里总结下处理思路,以便下次查看。故障分析思路 查看等待事件,判断故障起因SQL>select * from (select sid,event,p1转载 2016-12-25 16:27:43 · 545 阅读 · 0 评论 -
PL/SQL批处理语句:BULK COLLECT 和 FORALL对优化的贡献
我们知道PL/SQL程序中运行SQL语句是存在开销的,因为SQL语句是要提交给SQL引擎处理 这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换,每次却换时,都有额外的开销 请看下图: 但是,FORALL和BULK COLLECT可以让PL/SQL引擎把多个上下文却换压缩成一个,这使得在PL/SQL中的要转载 2017-05-02 13:50:47 · 839 阅读 · 0 评论 -
如何加快建 index 索引 的时间
朋友在500w的表上建索引,半个小时都没有结束。所以就讨论如何提速。 一.先来看一下创建索引要做哪些操作:1. 把index key的data 读到内存==>如果data 没在db_cache 中,这时候很容易有大量的db file scatter read wait2. 对index key的data 作排序==>sort_area_size 或者pga_aggr转载 2017-04-17 16:09:17 · 677 阅读 · 0 评论 -
oracle 之 手动建库
1、-- 查看服务器 ORA 环境变量情况[oracle@orastb ~]$ env|grep ORAORACLE_BASE=/u01/app/oracleORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_12、-- 创建参数文件[oracle@orastb ~]$ cd /u01/app/oracle/product/1原创 2017-09-04 16:37:07 · 415 阅读 · 0 评论 -
单机 Oracle 11g(11.2.0.4)手动打补丁PSU(11.2.0.4.8)
环境说明:database : 11.2.0.4 x64os: centos6.7 x64准备内容:OPatch : p6880880_112000_Linux-x86-64.zipDB PSU : p21352635_112040_Linux-x86-64.zip信息检查,查看环境是否符合打该 patch , optch版本安装环境详细原创 2017-03-19 20:14:22 · 4367 阅读 · 0 评论 -
自动工作负载库理论与操作(Automatic Workload Repository,AWR)
AWR的由来: 10g之前的oracle:用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接 断开后,其原来的连接信息在v$session和v$session_wait中就会被删除;oracle10g及之后保留下了v$session_wait中的这些信息,并多了v$active_session_原创 2017-07-25 11:52:35 · 648 阅读 · 0 评论 -
10046事件跟踪会话sql
一: 跟踪当前会话sql1. sys用户给执行跟踪dblink用户授权SQL> grant alter session to dblink;Grant succeeded.2. 返回dblink用户操作 SQL> show user;USER is "DBLINK"3. 查询sid,serial#SQL> select sid,s原创 2016-12-20 11:34:06 · 801 阅读 · 0 评论 -
执行计划-数据访问方式(全表扫描与4种索引的方式)
执行计划Oracle执行计划的相关概念: Rowid:系统给oracle数据的每行附加的一个伪列,包含数据表名称,数据库id,存储数据库id以及一个流水号等信息,rowid在行的生命周期内唯一。 Recursive sql:为了执行用户语句,系统附加执行的额外操作语句,譬如对数据字典的维护等。 Row source(行源):oracle执行步原创 2016-12-27 21:31:19 · 3418 阅读 · 0 评论 -
B-index、bitmap-index、text-index使用场景详解
索引的种类:B-tree索引、Bitmap索引、TEXT index1. B-tree索引介绍: B-tree 是一种常见的数据结构,也称多路搜索树,并不是二叉树。B-tree 结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。适用场景:索引字段有着很高的selectivity或者结果集很小的时候。例如 身份证号码 手机号码 QQ号等字段,原创 2016-12-30 13:22:36 · 827 阅读 · 0 评论 -
直方图、基数、选择性、群集因子
基本概念 基数(Cardinality) 列唯一键(Distinct_keys)的数量,比如性别,该列只有男女之分,所以这一列基数是2。选择性(Selectivity) 列唯一键(Distinct_Keys)与行数(Num_Rows)的比值。直方图 (Histogram)是一种对数据分布质量情况进行描述的工具。它会按照某一列不同值出现数量多少,以及出现的原创 2017-03-19 23:10:57 · 539 阅读 · 0 评论 -
Oracle资源管理器在HIS系统中的应用
【摘要】系统管理员是否遇到过执行某个大数据量统计报表查询或者进行全库RMAN备份的时候,导致整个HIS系统的操作变慢甚至影响正常业务使用的情况,其实这是典型的服务器资源争用和等待的案例,如何合理的分配和管理有限的服务器资源,让更重要的业务更充分的利用资源,这是本文Oracle资源管理所实现的功能。关键词:Oracle,资源管理1. 前言众所周知,业务系统的任何操作都需要消耗服转载 2017-05-15 18:40:38 · 1767 阅读 · 0 评论