oracle 优化
文章平均质量分 79
RuleV5
1、8年开发经验,擅长java、java ee、php、Android等技术;
2、熟悉SSH、Spring MVC、SSJ、thinkphp等常规开发框架;
3、熟悉jquery、ajax、JavaScript、html、css等前端开发技术;
4、熟悉Mysql、Oracle数据库以及redis非关系性数据库;
3、熟悉大数据相关技术、以及电商推荐系统。
展开
-
临时表空间总是满的初步想法(AIX系统,裸设备)
由于开发人员的水平有高低,dba精力有限,不可能及时解决sql语句问题!打算通过模仿重做日志的方法来解决数据库运行缓慢问题!1.查看临时文件的使用/剩余空间 select (BYTES_USED+BYTES_FREE)/1024/1024 "总空间M", BYTES_原创 2011-04-21 23:11:00 · 1136 阅读 · 0 评论 -
判断Oracle10G RAC redo日志大小是否存在问题
在此我们将提到两个可能出现的问题。 首先提到的就是批处理任务,该任务可能没有足够的完整重做空间来完成,或是因为速度快,以致联机重做日志在归档到脱机重做日志前即已切换(使用了所有的重做日志,并且开始再次写入第一个重做日志)。联机重做日志只有在归档(启用归档时)后才可以被重写,因此DML 和 DDL 活动必须等待,直到有可用的联机日志。在操作系统级别上,按它们最近的更新日期和原创 2011-12-30 12:41:39 · 2917 阅读 · 0 评论 -
oracle dba常用检查脚本
以下为oracle dba常用检查的脚本1、检查命中率1.1 SGA部分1.1.1 检查缓冲区命中率select sum(decode(name, 'physical reads', value, 0)) phys, sum(decode(name, 'db block gets', value, 0)) gets, sum(decode(nam原创 2011-04-21 22:53:00 · 1503 阅读 · 0 评论 -
oracle 10g logminer 使用
Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的具体内容,特别是,该工具可以分析出所有对于数据库操作的DML(insert、update、delete等)语句,另外还可分析得到一些必要的回滚SQL语句。该工具特别适用于调试、审计或者回退某个特定的事务,从9i可以也可以分析ddl语句原创 2011-11-23 00:12:17 · 2590 阅读 · 0 评论 -
oracle海量数据加快创建索引速度
基本信息情况:数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production操作系统版本:CentOS release 5.6加快创建索引速度主要从一下角度考虑:使用nologging 参数使用parallel 并行参数在session级别使用manual pga,手动调整so原创 2012-03-28 16:13:02 · 13736 阅读 · 0 评论 -
性能视图和性能参数
性能视图和性能参数一.性能视图 性能视图是Oracle中一些记录数据库性能方面的视图,通过查看这些视图,获得数据库当前或历史上某个时间的性能数据。 它比SQL_TRACE,AWR报告获取数据更及时,便捷。1.1 V$SQL V$SQL 视图是一个DBA 使用频率非常高的动态视图,它通常和V$SESSION 一起使用来获得当前会话的一些SQL执行情况。可以通过该视图查看正原创 2011-12-19 10:46:53 · 2492 阅读 · 1 评论 -
自连接 in和exits比较
先看我从网上找的一段话:*************************************开始线***********************************************有两个简单例子,以说明 “exists”和“in”的效率问题1) select * from T1 where exists(select 1 from T2 whereT1.a=T原创 2012-05-28 12:52:30 · 1904 阅读 · 0 评论 -
ass109.awk脚本学习使用
ass109.awk脚本学习使用SQL> oradebug setmypidStatement processed.SQL> oradebug unlimitStatement processed.SQL> oradebug dump systemstate 266Statement processed.SQL> oradebug tracefile_na原创 2012-05-25 10:27:30 · 2677 阅读 · 0 评论 -
rac 碰到 gc buffer busy
数据库版本: 10.2.0.5-64节点数:2操作系统版本:centos 5.6 -64今天做awr报告发现gc buffer busy等待时间gc buffer busy This wait event, also known as global cache buffer busy prior to Oracle 10g, specifies the time th原创 2012-07-05 11:50:51 · 1562 阅读 · 0 评论 -
SQL Profiles-Part I
转载老熊的博客:Oracle 11g从发布到现在,也有几个年头了。而在国内来说,Oracle 10g仍然是主流,甚至一些电信运营商的核心系统仍然在使用9i。作为Oracle 10g的一项新特性,SQL Profiles被使用得并不太多。不管是在论坛、个人的BLOG还是其他一些地方,SQL Profiles的介绍也相对较少。对我个人来说,已经在多个优化场合中使用SQL Profiles,在这转载 2012-07-11 17:10:10 · 1024 阅读 · 0 评论 -
分页和buffer_cache关系
今天老大说分页时候会不会cache select语句的信息,然后再到下一页会不会快点,我说不会,我做个试验给他看看首先清理内存中信息(重启数据库或者手动情况都一样)alter system flush buffer_cache;做一个10046时间,观察trace内容set linesize 200set timing onalter session set tracefi原创 2012-07-13 14:14:44 · 870 阅读 · 0 评论 -
AWR、ASH和Statspack的生成语句
AWR、ASH和Statspack的生成语句2010-08-24 14:03---Statspack初始化方法(必须拥有DBA权限)@$ORACLE_HOME/rdbms/admin/spcreate.sql---Statspack删除方法@$ORACLE_HOME/rdbms/admin/spdrop.sql---Statspack清除方法@$ORACLE_HOM转载 2012-07-23 15:21:41 · 1096 阅读 · 0 评论 -
个人总结sql优化一般步骤
1、通过top sql找出有问题的sql语句select * from (select * from v$sqlstats order by DISK_READS desc) where rownum还可以对ELAPSED_TIME,AVG_HARD_PARSE_TIME等排序2、指定某个jdbc的连接找出有问题的sql语句我们jdbc连接到数据库,一般情况下是web界面原创 2012-08-20 16:23:50 · 2879 阅读 · 3 评论 -
查出碎片最多的表
先搞一个简单的select t.table_name, avg_row_len * num_rows / (1 - pct_free / 100) / 8192 actual_block, alloc_block, 1 - ((avg_row_len * num_rows / (1 - pct_free / 100) / 8192) / allo原创 2012-11-14 21:35:54 · 1901 阅读 · 2 评论 -
处理在线日志数据过大问题之一--根据rowid批量删除
我们有一个实时日志表数据量太大了(这个不是分区表),这个表不能中断业务,我们先要在线删除部分数据。有这个是生产库不能中断业务不能使用create table rename 的方法来搞。我就老老实实的使用rowid批删除的方法。1、先创建了一个存储过程:create or replace procedure delete_table_by_condition(table_name v原创 2013-01-14 14:44:32 · 2865 阅读 · 0 评论 -
oracle系统繁忙时,快速定位
1 看现在的连接数select count(*) from gv$session;2 我们这里是bs架构,我们针对应用来看一下session的大致情况2.1 执行的sqlselect gs.inst_id, gs.SID, gvs.sql_text, gs.SERIAL#, gs.STATUS,原创 2013-02-18 17:19:35 · 2926 阅读 · 0 评论 -
oracle 10g 10053事件
10053事件 你是否想知道一句sql语句如何执行,它是否走索引,是否采用不同得驱动表,是否用nestloop join,hash join…..?这一切对你是否很神秘呢?或许你会说 execution plan 能看到这些东西,但是你是否清楚 execution plan 是如何得到?这篇文章就是给出了隐藏在 execution plan 底下的具体实现。 幸运的是,现在我们有了这样原创 2012-02-03 14:11:51 · 1711 阅读 · 0 评论 -
toad 分析执行计划产生的影响
今天在群里碰到一哥们说生成环境和真实环境执行计划不一样,真实环境不走索引。测试环境几秒钟、真实环境2分多钟。先上直接计划SQL> SELECT COUNT(*) 2 FROM CLAFIMDF 3 WHERE CLAIM_TYPE IN ('E', 'M') 4 AND CLAIMS_PROCESS_STATUS in ('58', '80原创 2012-01-19 18:09:42 · 2268 阅读 · 0 评论 -
oracle 锁问题
一、出现阻塞解决方法 1、找出那些用户在阻塞 select sid,serial#,username from v$session where sid in (select blocking_session from v$session);原创 2011-04-21 23:00:00 · 716 阅读 · 0 评论 -
Oracle执行计划 讲解(二)
现在我们讲讲oracle执行计划里面每个参数的含义我们以下面的一个例子来讲解这里做个补充:trace的类型一共有以下几种序号命令解释1SET AUTOTRACE OFF此为默认值,即关闭Autotrace 2SET AUTOTRACE ON EXPLAIN原创 2011-11-18 16:20:36 · 8578 阅读 · 1 评论 -
oracle10g R2 v$session视图详解
引言: 从10g开始,伴随ASH功能的引入,对V$SESSION视图进行了彻底改造。 从Oracle10gR1开始,Oracle在V$SESSION中增加关于等待事件的字段,实际上也就是把原来V$SESSION_WAIT视图中的所有字段全部整合到了V$SESSION视图中,开始的时候我还以为ASH是依赖联合查询来获取信息的,仔细一看才发现现在V$SESSION已经发生了变化。(如原创 2011-11-19 13:48:20 · 6130 阅读 · 0 评论 -
Oracle执行计划 讲解(一)
看懂Oracle执行计划是优化的第一步,让我们从下面的例子开始吧。 下面为补充内容1、创建测试表SQL> create table t as select 1 id,object_name from dba_objects; Table created SQL> update t set id=99 where rownum=1; 1 row upda原创 2011-11-17 21:57:16 · 22087 阅读 · 2 评论 -
简单判断sql解析类型
我们知道sql解析可以分为软解析和硬解析,(我去,这都不知道百度去),由于硬解析和会消耗大小的性能,特别是对于oltp系统来说。怎么判断解析类型呢,一般想到10046事件,但是不要完全信10046事件,原因是是10046sql_trace 在trace session的时候,默认session执行的每个SQL都将从新进行hard parse,产生一个新的child cursor,自然,这个被t原创 2011-12-19 13:53:41 · 1153 阅读 · 0 评论 -
10046事件和sql_trace
一. SQL_TRACE当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作。可以通过sql命令启动SQL_TRACE,或者在初始化参数里原创 2011-12-15 20:34:31 · 2025 阅读 · 0 评论 -
v$sqltext,v$sql,v$sqlarea 区别
1、v$sqltext 存储的是完整的sql,但是sql语句是被分割的SQL> desc v$sqltext; Name Null? Type ----------------------------------------- -------- ----------------------------原创 2011-05-05 11:04:00 · 1427 阅读 · 0 评论 -
oracle10g 性能调优之AWR篇(一)
当数据库发生了性能问题时,如何去定位?作为一个DBA,持续的收集相关统计数据对于性能分析来说十分重要。oracle10g引入了自动工作量存储(Automatic Workload Repository AWR)技术,它不仅能收集统计数据,还能从统计数据中分析出度量数据。 数据库的性能分析,大致可以分为两个层面,会话级和系统级。 1)会话级,如果我们能够确定某个会话存在性能问原创 2011-12-07 14:31:19 · 2447 阅读 · 0 评论 -
oracle10g 性能调优之AWR篇(二)
awr报告绝非是要用户每次都从头到尾读一遍,而是要根据用户根据自己的实际情况从报告中需要有用的信息比如对于oltp系统: *Library Hit *Buffer Hit 这两项要非常关注,应为oltp是一个sql非常密集的系统,共享池命中低说明很多sql不能被重用,需要重新解析,这会大大降低系统性能和sql执行效率。原创 2011-12-15 19:36:26 · 11357 阅读 · 2 评论 -
绑定变量
一.绑定变量 bind variable: A variable in a SQL statement that must be replaced with a valid value, or the address of a value, in order for the statement to successfully execute.变量绑定是OLTP系统中一个非常值得关注原创 2011-12-15 20:30:25 · 1060 阅读 · 0 评论 -
收集统计信息(二) 之 dbms_stats
这次讲解一下收集统计信息常用的存储过程收集统计信息类:一、dbms_stats.gather_table_stats存储过程This procedure gathers table and column (and index) statistics. It attempts to parallelize as much of the work as possible, but原创 2011-12-15 20:32:08 · 3728 阅读 · 0 评论 -
收集统计信息(一)
分析和收集统计信息收集统计信息对于CBO来说是非常重要的,我们通过下面的列子来说明1、创建测试环境1)创建测试表SQL> create table t as select * from dba_objects; Table created2)创建索引SQL> create index ind_t_id on t(object_id); Index cre原创 2011-12-15 20:31:24 · 1826 阅读 · 0 评论 -
收集统计信息(三)
动态采样 动态采样(Dynamic Sampling)技术的最初提出是9iR2,在段对象(表、索引、分区)没有分析的情况下,为了使CBO得到足够的信息以保证做出正确的执行计划而发明的一种技术,可以把它看做分析手段的一种补充。 当段上没有统计信息时(即使没有做分析),动态采样技术可以通过直接从需要分析的对象上采集一些数据块(采样)来后的CBO所需要的统计信息。原创 2011-12-15 20:33:20 · 1131 阅读 · 0 评论 -
ORACLE常见的等待事件
一. 常见的等待事件: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的。 在Or转载 2011-12-15 20:37:50 · 2366 阅读 · 0 评论 -
oracle 10g RAC修改sga
基本情况:操作系统版本:CentOS-5.6 X86-64cpu:2*12内存:16M数据库版本:10.2.0.4节点数:2安装系统的时候/etc/sysctl.conf没有配置最优,实际上对于CentOS5.6-64来说kernel.shmall和kernel.shmmax默认即可1、恢复上面的两个值到默认状态# Controls the maxi原创 2012-01-06 13:43:11 · 2719 阅读 · 0 评论 -
服务器端配置rac taf (rac应用分离)
数据库版本: 10.2.0.1操作系统版本: CentOS-5.61) 创建service[oracle@rac1 ~]$ srvctl add service -d jscn -s taf_dianping -r jscn1 -a jscn2 -P basic[oracle@rac1 ~]$ srvctl start service -d jscn -s taf_dianpin原创 2013-04-12 17:14:59 · 1677 阅读 · 0 评论