自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

47522341的专栏

在去dba的路上

  • 博客(150)
  • 资源 (29)
  • 收藏
  • 关注

原创 PL/SQL性能优化工具profiler的部署和使用

<br />摘要... 2<br />PL/SQL性能优化工具profiler的部署和使用... 2<br />产品名称,产品版本... 2<br />适用平台... 2<br />创建及维护日期... 2<br />引言... 2<br />执行环境:... 2<br />访问权限:... 3<br />用法... 3<br />简介... 3<br />描述... 3<br />先决条件... 3<br />附录1 调用范例... 4<br />测试过程创建... 4<br />调用过程脚本... 5<

2010-08-10 10:53:00 4885

原创 事务的锁定和阻塞机制

事务的锁定和阻塞机制... 21,oracle锁的分类与产生... 21.1 oracle的锁类型... 21.2 悲观封锁和乐观封锁... 21.3 阻塞... 31.4 TM锁的类型... 31.5 TX锁的类型... 52,锁相关的数据字典... 62.1 关于v$lock. 62.2 其他相关视图说明... 93,锁相关的sql statement

2010-04-06 14:19:00 3843

转载 oracle中多行聚合成字符串

CREATE TABLE t_row_str(ID INT,col VARCHAR2(10));INSERT INTO t_row_str VALUES(1,a);INSERT INTO t_row_str VALUES(1,b);INSERT INTO t_row_str VALUES(1,c);INSERT INTO t_row_str VALUES(2,a);INSERT I

2010-02-06 11:03:00 1744 1

转载 oracle的escape转义字符

定义:escape关键字经常用于使某些特殊字符,如通配符:%,_转义为它们原来的字符的意义,被定义的转义字符通常使用/,但是也可以使用其他的符号。实例:SQL> select * from t11 where name like %_%;NAME----------aa_aaaaSQL> select * from t11 where name like %/_%

2010-01-18 09:52:00 1737

原创 一个隐式转换引起的性能故障问题的解决过程

今天开发人员过来说一个每天执行上千次的procedure速度比较慢,希望能调整一下但不知如何下手。于是过去瞅了一眼,本来以为事情会比较简单。 因为思路很清晰嘛。执行步骤如下。1,  在plsql developer中新开一个sql窗口;2,  设置10046跟踪事件3,  Tkprof解析跟踪结果4,  定位到故障sql后根据需要实施优化。但没想到事情还是起了点周折,前面几

2010-01-13 15:37:00 1560

转载 2008 中国首届Oracle数据库精英工程师评选电子试题

2008 中国首届Oracle数据库精英工程师评选电子试题 和答案(2008年9月3日) =========================================================== 2008 中国首届Oracle数据库精英工程师评选电子试题 和答案(2008年9月3日)作者: zhulch(http://zhulch.itpub.net)发表于: 200

2010-01-06 09:24:00 1900

转载 行迁移和行链接

 转载:行迁移和行链接上一篇 / 下一篇  2009-02-13 11:29:25 / 个人分类:转载 查看( 128 ) / 评论( 0 ) / 评分( 0 / 0 ) row chain:When a row is too large to fit into any block, row chaining occurs. In this case, the Oracle d

2009-11-20 15:06:00 1256

翻译 linux环境下升级9204-9208

 第一步 下载安装文件... 21.1 确认系统版本... 21.2 下载补丁... 2二, 升级准备... 4三, 升级配置... 53.1 identify the oracle9i installation. 53.2 阅读升级注意事项... 63.3 上传升级包并解压... 63.4 确认环境变量ORACLE_SID和ORACLE_HOME设置. 6

2009-11-10 15:17:00 1916

原创 connect by rownum造表

 之前需要递增的数据都是使用如下的示例方式.select rownumfrom dba_objects , dba_objectswhere rownum  效率相对较差.  今天突然发现有哥们使用了如下方式, 眼前一亮.select rownumfrom dualconnect by rownum

2009-11-03 17:13:00 1372

原创 数据库迁移方案01

环境描述:源数据库Oracle服务器版本:  Oracle9.2.0.8数据库名称 db_name = oradb  instance_name=oradb操作系统版本: windows 2003实例安装位置: $oracle_base = e:/oracle 目标数据库Oracle服务器版本:  Oracle9.2.0.8数据库名称 db_name = orc

2009-09-22 14:43:00 2608 1

原创 Cache buffer latches的形成原因分析

Cache buffer latches的形成原因分析当一个数据块被读入SGA. 这些数据块所在缓冲区的头地址(buffer headers)被挂载到链列表上(LRU, LRUW).这些连列表被挂载在hash buckets上. Oracle定义了一些cache buffer chains latches来保护这种内存结构的数据一致性读取.如下表所示.一个进程在对数据块执行add, rem

2009-08-15 11:34:00 1368

原创 动态语句长度超过32K的解决方法

 Oracle的varchar2类型最大长度为4000, PLSQL的varchar2最大长度为32767就是32K, 这也是本地动态sql语句能够处理的最大长度.如果动态sql语句过长,就没有办法在一个varchar2变量中存储整个语句,导致execute immediate本地动态sql方式无法使用。但现实中,有些时候确实会碰到超长的动态sql语句,怎么办呢?解决办法就是,使用dbms

2009-08-12 17:25:00 5219

原创 增强plsql developer的session monitor工具

增强plsql developer的session工具... 1一, 过滤器... 11.1 all session. 21.2 user sessions. 21.3 active sessions. 31.4 所有session 的当前等待... 3二, 详细资料... 42.1 游标... 42.2 sql文本... 52.3 统计表... 52.4

2009-08-11 15:32:00 5852 1

转载 connect by start with详细用法

树结构查询ORACLE是一个关系数据库管理系统,它用表的形式组织数据,在某些表中的数据还呈现出树型结构的联系。例如,我们现在讨论雇员信息表EMP,其中含有雇员编号(EMPNO)和经理(MGR)两例,通过这两列反映出来的就是雇员之间领导和被领导的关系。有些雇员领导另一些雇员,有些雇员被领导,还有些雇员领导一些人又被别人领导,他们之间的这种关系就是一种树结构,图1.1表示了EMP表雇员间的这种树结构。

2009-08-06 16:08:00 4054

原创 dba 监控脚本

    一直以来都希望能有一个合适的监控脚本,在每晚固定的时候搜集整理oracle的运行状态(比如, 日志异常, tablespace剩余空间, 运行过程中的alert信息, 以及某个时间段内的io, cpu, memory等的使用情况. 有兴趣的哥们还可以随便往里添加一些你觉得重要的内容), 并自动发送邮件给哥们.    原因无他, 首先哥们懒, 其次, 就算不懒, 每日执行重复但还颇为

2009-07-27 17:07:00 2663

原创 五, 监控oracle的等待事件

五, 监控oracle的等待事件select event,       sum(decode(wait_Time, 0, 0, 1)) "Prev",       sum(decode(wait_Time, 0, 1, 0)) "Curr",       count(*) "Tot"  from v$session_Wait group by event order by 4;5.1 等待

2009-07-22 14:49:00 15885 4

原创 六, 监控当前数据库的活动session

六, 监控当前数据库的活动session6.1 监控session的执行语句6.1.1 通过动态性能视图查找活动session的执行语句select a.SID,a.USERNAME,a.machine,a.TERMINAL,b.PIECE,b.SQL_TEXTfrom v$session a,     v$sqltext bwhere b.ADDRESS = decode(a.SQL

2009-07-22 14:47:00 4104

原创 AIX进程监控与管理

AIX进程监控与管理... 2一, PS命令... 21.1 显示10个消耗cpu最多的进程... 21.2 显示10个消耗存储空间最多的进程... 31.3 按顺序显示系统中受罚的进程: 31.4 按照优先级顺序显示系统中的进程... 51.5 按处理时间为顺序显示系统中的前十个进程... 51.6 按实际内存使用的多少顺序显示系统中的前十个进程... 61.7

2009-07-18 11:20:00 7532 2

原创 AIX系统Memory性能评估

AIX系统Memory性能评估... 2一, VMM的管理简介... 21.1 空闲列表维护... 21.2 文件占用内存的比率维护... 21.3 vmstat命令显示内存中的数据页数... 3二, 使用vmstat确定内存的使用情况... 32.1 faults故障... 42.2 memory(内存) 42.3 page磁盘交换... 4三, svmon命

2009-07-18 11:18:00 3230

原创 四, 监控使用系统资源较多的用户信息

四, 监控使用系统资源较多的用户信息下述语句监控当前活动用户中, 使用cpu,逻辑读, 物理读, 解析次数较多的session的相关信息. 报表结果包括, session id, 系统pid, session状态, 正在执行的sql语句等.select se.r1,       se.sid,       se.spid,       se.status,       se.name,  

2009-07-18 11:15:00 1633

原创 三, 监控用户锁

三, 监控用户锁数据库的锁有时候是比较耗费资源的, 特别是发生锁等待的时候, 我们必须找到发生等待的锁, 有可能的话, 杀掉该进程. 下面的语句将找到数据库中所有的DML语句产生的锁, 还可以发现, 任何DML语句其实产生了两个锁, 一个是表锁, 一个是行锁. 可以通过alter system kill session ‘sid, serial#’来杀掉会话.SELECT /*+ rule

2009-07-17 17:32:00 2332

原创 监控sql语句的重载率

二, 监控sql语句的重载率Sql的重载率, 就是相同的语句, 由于无法使用共享池里已经保存的执行计划而不得不重新将代码载入后执行分析,建立查询树后再进行执行的一个过程. 极端糟糕的情况下, 重载率可能接近于1 , 就是说,每一个语句都需要载入后重新执行.2.1 oracle库缓存Oracle的库缓存是内存的一个区域, 是共享池里的三个组成部分之一. 库缓存由共享SQL工作区, P

2009-07-17 15:01:00 1737

原创 一, 监控缓冲区的命中率

一, 监控缓冲区的命中率1.1 oracle的内存结构内存结构(SGA system global area)是oracle为一个实例分配的一组共享内存缓冲区, 它包含该实例的数据和控制信息. SGA在实例启动时被自动分配, 当实例关闭时被收回. 数据库的所有数据操作都通过SGA来进行. SGA中内存根据存放信息的不同, 可以分为如下几个区域.数据库缓冲区(Buffer Cac

2009-07-16 14:41:00 4543 1

原创 AIX进程监控与管理

AIX进程监控与管理... 2一, PS命令... 21.1 显示10个消耗cpu最多的进程... 21.2 显示10个消耗存储空间最多的进程... 31.3 按顺序显示系统中受罚的进程: 31.4 按照优先级顺序显示系统中的进程... 51.5 按处理时间为顺序显示系统中的前十个进程... 51.6 按实际内存使用的多少顺序显示系统中的前十个进程... 61.7

2009-07-15 16:35:00 2426

原创 AIX系统Memory性能评估

AIX系统Memory性能评估 2一, VMM的管理简介 21.1 空闲列表维护 21.2 文件占用内存的比率维护 21.3 vmstat命令显示内存中的数据页数 3二, 使用vmstat确定内存的使用情况 32.1 faults故障 42.2 memory(内存) 42.3 page磁盘交换 4三, svmon命令 53.1 memory段 63.2

2009-07-15 16:33:00 1697 1

原创 AIX系统CPU监控与评估

AIX系统CPU监控与评估... 2一, VMSTAT命令(CPU) 21.1 cpu. 31.2 kthr(内核等待) 31.3 faults故障... 41.4 memory(内存) 41.5 page磁盘交换... 5二, iostat命令... 5三, Sar命令... 53.1 实时采样和显示... 63.2 sar –P(报告每个处理器的信息)

2009-07-15 16:29:00 4472

原创 AIX交换磁盘空间

AIX交换空间管理与查看... 2一, 交换磁盘空间概念... 21.1 虚拟内存... 21.2 虚拟内存管理器(VMM) 21.3 交换(分页)空间概念... 31.4请求分页... 3二, 查看交换磁盘空间... 42.1 lsps命令... 42.2 使用vmo命令检查AIX如何处理分页空间分配... 42.3 vmstat监视分页控件的颠簸... 5

2009-07-13 14:36:00 6782

原创 oracle口令管理

1, 口令文件信息查询口令文件中存储着拥有sysdba或者sysoper权限的用户. 这里我们首先检查一下每个系统中有哪些用户拥有管理权限. 使用语句select * from v$pwfile_users可以完成这步操作.USERNAME SYSDBA SYSOPERSYS TRUE TRUECTLKF TRUE FALSE2, 查询用户的资源信息select du.us

2009-07-13 10:47:00 6997

原创 AIX系统磁盘IO性能评估

AIX系统磁盘IO性能评估... 2一, 对磁盘IO的性能考虑, 裸设备优缺点分析... 21.1 对磁盘IO的性能考虑... 21.2 裸设备的优点... 21.3 裸设备的缺点... 2二, IOSTAT工具使用... 32.1 参数与用法... 32.2 iostat报告解析... 6三, sar –d看... 7四, 使用lslv –l  lvname估

2009-07-10 14:18:00 5927

原创 分析函数ratio_to_report的使用

Ratio_to_report函数Syntax 分析函数RATIO_TO_REPORT 用来计算当前记录的指标expr占开窗函数over中包含记录的所有同一指标的百分比. 这里如果开窗函数的统计结果为null或者为0,就是说占用比率的被除数为0或者为null, 则得到的结果也为0. 开窗条件query_partition_clause决定被除数的值, 如果用户忽略了这个条件, 则计

2009-06-24 09:10:00 7359

原创 oracle的多表insert操作

在一般操作中,我们可能会碰到一些相同或者雷同的数据源要插入到不同的数据表中的情况. 在oracle9i之前的版本中, 我们必须执行多次insert语句, 因此, 为了填充不同的表, 就在源表上添加了一些不必要的IO操作. Oracle9i引入了多表insert操作, 采用以下三个形式.Unconditional(无条件的): 没有任何限制地向多个表中插入给定表的数据;Pivoting: 用

2009-06-11 10:58:00 4094

转载 独家:程序员五大层次,你属于哪一层?

独家:程序员五大层次,你属于哪一层?本文发表于 2009-06-10 09:08 |8490次阅读 | 共有评论(53)条 发表评论关键词:新闻资讯  | 感谢max_yuki的提供 | 收藏这篇新闻<!--show_ads_zone(13);--><!---->软件界一个无可争议的事实是,不同程序员的效率有差别,而且差别很大。许多专家将优秀程序

2009-06-10 15:35:00 1445

原创 索引的特性与优化

一, 索引的概念... 1二, 索引的文件存储... 12.0 转储索引结构... 32.1 索引头内容分析... 42.2 索引root节点分析... 62.3 索引叶子节点分析... 7三, 如何建立最佳索引... 9何时使用索引... 9什么是最佳索引... 10最佳索引的参数(CF) 10有效使用索引的几个问题... 11四, 导致索引无效的情况

2009-06-10 15:31:00 2614 1

原创 在pldeveloper中输出超过255个的字符串

Oracle编程人员经常会在pl/developer界面中打印输出超过255个长度的字符, 正常使用dbms_output.put_line(&out_str)会产生错误提示. declare   out_str varchar2(2000);begin  out_str := lpad(001,1000,*);  dbms_output.put_line(out_str);end;

2009-06-10 15:29:00 1443

原创 借助内存表处理复杂的oracle查询要求

借助内存表处理复杂的oracle查询要求.在日常业务处理过程中,我们经常会碰到一些非常规的查询需求, 这些需求我们或者可以借助动态语句,或者其他现有的oracle函数完成查询结果, 但效率往往差强人意. 假设我们有一个客户订单业务表{订单号, 订单客户, 订单日期, 数量, 金额}存储了订单的往来明细数据,订单表中保存最近3个月的往来明细共1000w条记录, 其中客户总量约500000.

2009-06-10 15:27:00 11339

原创 用户管理的和基于RMAN的不完全恢复

用户管理的和基于RMAN的不完全恢复执行不完全的数据库恢复操作,需要理解重做日志和archivelog进程/oracle数据库的同步和允许执行不完全恢复使用的选项.不完全恢复是出现某些类型的错误时,唯一可以使用的恢复方法.理解何时以及怎样使用不完全恢复方法是很重要的.在任何时候,只要出现了一个可以导致你不能恢复到改变以前的数据库状态的错误,就需要使用下面几种不完全恢复方法之一.Canc

2009-02-27 15:53:00 2062 1

原创 一个数据库完全一致恢复的测试实例

一个oracle数据库的恢复测试1,关闭数据库完全备份SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down. $ cp *.dbf backup1$cp control01.ctl backup12,创建表并插入数据SQL> startup

2009-02-26 17:05:00 2098

原创 RMAN冗余备份概念与方法

冗余备份概念RMAN提供了一种更谨慎的备份策略:duplexed方式备份,其实质就是在生成备份集的同时,向指定位置copy指定份数(最大不超过4)的备份集复制,以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。RMAN有三种方式的duplexed备份。在RMAN中执行backup命令时指定copies参数RMAN> backup copies 2 tab

2009-02-18 17:23:00 3330 1

转载 RMAN未使用catalog备份丢失控制文件的恢复方法

情况描述客户报告数据库故障,新来的系统管理员误操作。删掉了一些文件。具体情况是:删掉了所有重要数据文件、所有控制文件。数据库原来是归档模式,用rman备份数据,而rman 使用控制文件。幸运的是,最后一次 rman full 备份是包括了控制文件在内。系统没有设定自动备份控制文件。现在状况是数据库无法启动。 不用说,客户的备份方案不够完善,但是这时候再去说这些话责备用户有事后诸葛亮之嫌,"

2009-02-16 17:06:00 1288

原创 RMAN的配置configure

RMAN配置作用RMAN中具有一些列的默认配置,这些配置决定了备份和恢复时的一些选项,比如自动分配通道的配置;备份保留时间的配置;备份集大小的限制;启用或禁用备份优化功能;镜像复制的备份数量;是否将某个表空间排除在备份之外。修改配置是通过CONFIGURE命令。如果想恢复某项设置,我们执行如下命令configure …clear。大部分配置项的值都是To后面的内容,

2009-02-16 16:15:00 2375

oracle的sql脚本优化实例

oracle的sql statement优化调整实例 分析了两种可行的优化方式及优化结果。 统计信息收集

2010-10-15

使用 VMware Server 在 Oracle Enterprise Linux 上安装 Oracle RAC 10g

VMware Server 允许您在一台物理计算机上运行多个操作系统。每个虚拟机都是一个独立的操作环境,并带有一组自己的虚拟组件,如磁盘、处理器和内存。虚拟技术在计算环境中十分有用,它允许您在同一物理主机上独立地开发和测试软件以防止数据或软件损坏。VMware 软件广泛地用于服务器整合,以降低总拥有成本并加快应用程序开发和测试周期。

2010-03-17

使用VMWare server在Oracle Enterprise Linux上安装Oracle RAC 10g(RAW磁盘管理方式)

VMware Server允许用户在一台物理计算机上运行过个操作系统。每个虚拟机都是一个独立的操作环境,并带有一组自己的虚拟组件,如磁盘,处理器和内存。虚拟技术在计算环境中十分有用,它允许用户在同一物理主机上独立地开发和测试软件以防止数据或软件损坏。VMware软件广泛地用户服务器整合,以降低总成本并加快应用程序开发和测试周期。 在本指南中,您将了解如何安装和配置两个在Enterprise Linux和VMware Server上运行Oracle RAC 10g第二版的节点。注意,本指南仅用于教学和评估的目的,oracle和其他供应商不会为本指南提供支持。

2010-03-17

statspack完整使用手册

statspack完整使用指南: 包括: statspack的安装; statspack的自动数据收集; statspack的门限调整; statspack的报表自动产生与邮件发送(aix环境下); statspack的报表详细解析.

2009-12-11

oracle数据库迁移实例01

windows环境下, db_name和instance_name都不相同的情况下的数据库迁移. 通过镜像文件实现.

2009-09-22

oracle性能监控

随着应用的深入, oracle数据库的表对象, 过程sql等往往不再按照开发人员设计时的思路运行. 所以, DBA的一个重要工作就是定期监控, 分析评价oracle数据库的性能是否依然满足客户的应用需求. 分析评价oracle数据库性能主要有数据库吞吐量, 数据库用户响应时间两项指标. 数据库用户响应时间又可以分为系统服务时间和用户等待时间两项. 因此, 获得满意的用户响应时间有两个途径: 一个是减少系统服务时间, 即提高数据库的吞吐量; 二是减少用户等待时间, 即减少用户访问同一数据库资源的冲突率. Oracle数据库性能恶化的表现基本上都是用户响应时间比较长, 需要用户长时间的等待. 而性能恶化的原因却是多种多样, 下面我们就详细描述查找出影响性能的各种可能原因的方法.

2009-08-15

oracle DBA 的职责

ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据 库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。 (2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。 (3). 每月对表和索引等进行Analyze,检查表空间碎片,寻找数据库性能调整的机会,进行数据库性能调整,提出下一步空间管理计划。对ORACLE数据库状态进行一次全面检查。

2009-08-15

Oracle.Wait.Interface 性能调整与优化指导

Oracle.Wait.Interface 性能调整与优化指导

2009-08-15

cache buffers chain形成原因分析

当一个数据块被读入SGA. 这些数据块所在缓冲区的头地址(buffer headers)被挂载到链列表上(LRU, LRUW).这些连列表被挂载在hash buckets上. Oracle定义了一些cache buffer chains latches来保护这种内存结构的数据一致性读取.如下表所示. 一个进程在对数据块执行add, remove, search, inspect, read 或者modify之前需要首先获得cache buffers chains latch. 有两条规则跟oracle访问数据块时的cache buffers chains相关.  每一个logical read都会造成一个latch和cpu时间.  Oracle必须获得期望的latch才能执行下一个步骤.

2009-08-15

AIX系统CPU监控与评估

中央处理器是系统最快的组件之一. 在某一个时间单位内对单个程序来说保持100%的CPU占用率(也就是说空闲0%, 等待0%)超过几秒钟是很少见的. 如果监视器长时间地显示CPU占用率为100%, 则很有可能是某个程序陷入了死循环. 即使程序仅仅是占用较多资源而不是崩溃了, 也需要将他们识别出来并进行处理.

2009-08-14

AIX 系统交换磁盘空间的监控与管理

系统究竟需要多大的交换空间? 首先, 我们认为将分页空间的大小设置为RAM的两倍(以前的基本原则). 通常来说, 如果我的系统拥有超过4GB的内存, 我会按照RAM的大小来创建分页空间.在投入运行之后, 要经常监视系统, 如果看到分页空间的利用率从来都没有接近过百分之五十, 就不需要添加额外的空间. Oracle为AIX提供的文档推荐设置交换空间为RAM大小的一半加上4GB, 但是上限为32GB.

2009-08-14

AIX系统磁盘IO监控与评估

一般来说, 高的%iowait表明系统存在一个应用程序问题, 缺少内存问题或低效的IO子系统配置. 例如, 应用程序的问题可能是由于过多的IO请求而不是处理许多数据. 理解IO瓶颈并且要清楚解决瓶颈问题的关键在于提高IO子系统的效率.

2009-08-14

一个释放临时表空间实例

Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。直到耗尽硬盘空间。 网上有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB。也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小。 临时表空间的主要作用: 索引create或rebuild Order by 或 group by Distinct 操作 Union 或 intersect 或 minus Sort-merge joins analyze

2009-02-11

一个回滚段清理的实例

日前在整理数据库表空间的是否,发现最大的数据文件来自回滚段。回滚段文件undotbs1的数据文件已经达到23G。 希望清理这部分数据,但一时又无从下手。于是决定深入了解一下这部分内容。

2009-02-11

Oracle的回滚段存储内容分析

事务在执行DML操作时,会首先将相关的数据块写入数据缓冲区中,数据缓冲区中存储的是DML操作相关的完整数据块,比如我们对表中的某一个记录执行update操作,oracle会将记录所在的数据块读入数据缓冲区中。 在执行update操作之后,oracle后台进程会首先将修改前的内容(包括数据块中其他记录内容)以及scn,块信息等写入回滚段中,但这里写的时候不仅仅只是简单的块复制,而是将原来的数据块顺序写入回滚段的数据块。测试表明,在源表数据块占用空间较少的情况下(比如设置pctfree为99),对源表两个数据块中记录的修改只占用一个回滚段中的数据块(因为这时回滚段的数据块pctfree值是默认的,相对较小,一个回滚块可以存储更多的源数据块)。但如果设置源表占用空间较大,比如设置默认或者设pctfree为1,则对源表的两个数据块内容修改时,会占用回滚段中的两个数据块。 同时会将修改记录的前后内容都写入重做日志文件中(这里只写入修改前后的该记录的信息,数据块中的其他记录将不会写入重做日志)。 一旦用户对该操作执行了commit或rollback操作,回滚段内容会理解清空。 现在我们来作个测试验证上面的说法。

2009-02-11

深入解析oracle的回滚段

  回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。

2009-02-11

Oracle的列转行问题

Oracle中使用语句将行数据转换称不同的列表示,或者将不同的列数据写到同一列的不同行上的行列转换问题是一个非常传统的话题。 网络上流传了很多将行数据转换称列数据的方法和应用实例,一般通过decode或者case函数与聚合函数联合实现功能,这里就不再重复。 日前本人在一个偶然的应用中用到了一个需要将列数据转换为行数据的问题。搜索了很久没有发现很合适的方法。网络一般推荐使用union all实现。这样的一个重要问题在于会造成对数据表的重复访问,性能是个重要问题。 基于此,作者设想了另外一种实现可能性。实践证明,这种方法有效提供了查询性能。

2009-02-11

Oracle数据文件收缩实例

近期来,FreeList的重要作用逐渐为Oracle DBA所认识,网上也出现一些相关的讨论。本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等。而与FreeList密切相关的一个重用特性HWM,与sql性能密切相关,本文也作了原理分析介绍。在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。 缩略语: ASSM:auto segement space management HWM:high water mark DBA:data block address OLTP:online transaction process OPS:oracle parallel server

2009-02-11

Logminer应用实例

Oracle logminer是oracle从8i之后提供的一个非常有用的分析工具,使用该工具可以轻松获得oracle重做日志文件中的具体内容。该工具可以分析出所有对于数据库的DML语句,9i后可以分析DDL语句,另外还可以分析得到一些必要的回滚SQL语句。 其中一个最重要的用途就是不用全部恢复数据库就可以恢复数据库的某个变化。特别适用于调试、审计或者回退某个特定的事务。

2009-02-11

从三个方面讲解如何适当优化sql

许多人在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!下面我将从这三个方面分别进行总结:

2008-12-03

索引监控设置及查看所有用户的unused indexes

首先,详细描述了索引监控的设置方法; 然后,给出了一种可以同时查看所有用户没有使用过的索引的方法。 信息全部来自metalink

2008-12-03

使用over函数实现递归汇总计算

Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。

2008-11-25

oracle的tuning技术总结

关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA、PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化。做好这两个方面的优化,就可以使一套完整的Oracle应用系统处于良好的运行状态。

2008-11-24

oracle的10053事件

Oracle 为RDBMS 提供了多种的诊断工具,诊断事件(Event)是其中一种常用、好用的方法,它使DBA 可以方便的转储数据库各种结构及跟踪特定事件的发生.

2008-11-24

trunc函数应用实例

trunc函数在日期比较和事务执行中是经常要使用到的一个函数,以前使用比较多的是忽略参数fmt的应用,这时默认返回的是距离当前最近的上一个整数日期.比如语句select trunc(sysdate) from dual;就可以返回当天的整数时间. 日前系统中有个业务处理,需要定时每小时执行一次预定义事务,开始时定义下一个执行时间为 sysdate +1/24,后来发现下一次的执行时间,oracle是在事务执行完成之后才进行计算的.本来我设想是在每个整点执行过程,结果由于事务需要执行1分钟,这样每次执行时间间隔就变成了一个小时零一分钟,顺延. 有点不爽,于是找了下资料,发现原来我们还可以使用带fmt参数的trunc函数解决这个问题,于是将执行时间修改为trunc(sysdate,'HH')+1/24于是问题解决. 下面顺便整理一下oracle文档中关于这个函数的解释.

2008-11-24

从执行计划和索引结构优化查询语句

我们知道,一般在查询语句出现性能瓶颈,需要对其进行优化时,一个比较有效的手段就是DBA通过调整sql语句的执行计划,或者建立有效索引以达到数据执行时间最短的效果.

2008-11-24

使用hint强制基于规则的查询优化

Oracle从9i开始默认的优化规则设置为choose,这时,如果对关键数据表的analyze数据不准确或者数据不存在,则可能导致oracle选择错误的执行路径,导致执行效率低下.笔者所参与的系统中,曾碰到在几个数百万条记录的表进行关联时,结果集在1000条记录之内时,执行时间超过20分钟.这种检索速度是灾难性的. 其中一个可以选择的优化方式是dba通过分析表的结构,数据量,索引结构等信息,通过hint/*ordered*/和索引hint/*index(table_name index_name)*/强制oracle的执行路径.极端情况下,这种优化可以提高的查询速度是非常可观的. 下面我们根据具体的查询来给出两种查询方式的异同.

2008-11-24

Oracle中的package对象

Oracle中的package对象是其他数据库中所不存在的特性之一,这是oracle面向对象编程的一种体现.我们可以像定义面向对象语言的对象一样定义oracle的package.并为package定义对应的属性(全局变量)和方法(function,procedure). package的全局变量在oracle编程过程中有很多有趣并非常实用的作用.比如,我们可以利用这个特性定义带参数的视图,以增加特定情况下(无法通过普通视图完成数据的筛选过程)程序的可维护性. 本文利用几个测试简单描述package的全局变量特性和用法.

2008-11-24

Oracle数据库业务优化心得

做了一大半年的业务数据库优化了,有一点感想,写出来自励一下。

2008-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除