自定义博客皮肤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的路上

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

原创 建立和使用包含static方法的对象类型

 *static方法:用于访问对象类型,因此不能访问self参数,只能由对象类型(obj_type)调用,而不能由实例(obj_instance)调用。在需要在对象类型上执行全局操作时使用。示例4:带static类型方法的对象操作--定义对象说明createorreplacetype person_obj2 asobject(namevarchar2(20),gender

2008-03-31 09:49:00 1041

原创 oracle对象类型的member方法

 *:用于访问对象实例的数据。如果在对象类型中需要访问特定对象实例的数据,则需要定义member方法,member方法可以使用内置参数self访问当前实例对象,当定义member方法时,无论是否定义self参数,它都会被作为第一个参数传递给member方法,但如果定义参数self,那么其类型必须要使用当前对象类型。Member方法只能有对象实例调用,而不能被对象类型调用。示例3:带memb

2008-03-22 16:55:00 4381 1

原创 oracle简单对象类型

 在plsql中,面向对象的程序设计是基于对象类型来完成的。对象类型是用户自定义的一种复合数据类型,它封装了数据结构和用于操纵这些数据结构的过程和函数,在建立复杂应用程序时,通过使用对象类型可以降低应用开发难度,进而提高应用开发的效率和速度。对象类型包括对象类型规范(object type specification)和对象类型体(object type body)两个部分。其中对象类型规

2008-03-22 11:15:00 2235

原创 oracle动态sql语句处理

 动态SQL语句处理:根据要处理的sql语句的作用不同,可以使用三种不同类型的动态sql方法:使用execute immediate语句可以处理包括ddl(create、alter和drop)、DCL(grant、revoke)、DML(insert、update、delete)以及单行select语句;使用open cursorname for sql_statement语句可以处理多行查询

2008-03-22 09:53:00 9875 6

原创 Oracle导入excel数据方法汇总

 Oracle导入excel数据方法汇总摘要:在程序编制过程和数据汇总交换过程中,经常会碰到需要将其他人员在office办公环境下编制的文件数据内容导入oracle中的情况。目前程序开发者经常使用的方法有如下几种:1,使用oracle提供的导入工具sql*loader;2,使用plsql developer工具;3使用其他数据转移工具做中转站。下面我们采用实例的方式分别描述几种导入方式的优

2008-03-21 17:34:00 33731 15

原创 oracle的系统事件触发器

oracle的系统事件触发器:系统事件触发器是指基于oracle系统事件(如logon和startup)所建立的触发器。通过这种触发器可以跟踪系统或数据库的变化。create table jax_event_table(eventname varchar2(30),time date);createtrigger tr_startupafter startup ondatabase

2008-03-20 15:58:00 5512 2

原创 触发器相关概念与应用

触发器是被隐含执行的存储过程,它可以使用PLSQL,java和c进行开发,它由触发事件、触发条件和触发操作三部分组成。*触发事件:从8i开始,oracle的触发事件扩充为:启动和关闭例程;oracle错误消息;用户登录和断开会话;特定表和视图的DML操作;在任何方案上的DDL语句。*触发条件(可选):when指定的一个boolean表达式,决定是否执行触发代码。*触发代码:触发代码不能

2008-03-20 12:03:00 2319

原创 程序包开发相关概念及其应用

包用于将oracle相关的嵌套表、record、varray、记录、游标以及子程序逻辑组合在一起的一种方法。它由包规范(package specification)和包体(package body)两部分组成,其中保规范实际是包与其他应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等;包体中定义的组件只能在包内使用。在user_source数据字典视图中可以查询得到

2008-03-20 10:03:00 1918

原创 oracle中与子程序(函数或过程)相关的几个视图

 Q17,子程序(函数与过程)相关的系统视图:user_resource:保存子程序的源代码的系统视图。User_objects:存储当前用户的所有对象,包括过程、函数、表、视图以及索引等。User_errors:存储当前用户执行过程中曾经的出错代码及出错位置信息。User_dependencies:跟对象直接依赖的其他对象。Deptree/ideptree(直接依赖/间接

2008-03-19 17:44:00 1213

原创 oracle的异常处理

  oracle提供了预定义例外、非预定义例外和自定义例外三种类型。其中预定义例外用于处理常见的oracle错误;非预定义例外用于处理预定义所不能处理的oracle错误;自定义例外处理与oracle错误无关的其他情况。Oracle代码编写过程中,如果捕捉例外则会在plsql块内解决运行错误,否则将错误传递到调用环境。*常用预定义例外:为了处理各种常见的oracle错误,plsql为开发人员提供

2008-03-19 15:36:00 4401 2

原创 oracle游标使用

 Q15,oracle的游标使用:PL/SQL包含显式游标和隐式游标两种类型,其中隐式游标用于处理select into和DML语句,而显式游标则专门用于处理select语句返回的多行数据。使用显式游标包括定义游标、打开游标、提取游标和关闭游标四个阶段。其中提取游标在oracle9i之前只有一种方式fetch into,这种方式每次只能提取一行数据;从oracle9i开始,通过使用fetch…

2008-03-19 11:56:00 7487 1

原创 oracle批量绑定的概念

从oracle9i开始,oracle提供批量绑定关键词forall和bulk collect通过批量绑定技术,极大地加快了数据的处理速度。在不使用批量绑定的时候,为了将嵌套表中的数据插入数据库表中,需要循环执行insert语句,而使用forall关键词可以让所有插入内容集中在一次insert中执行,从而加快了执行速度。Bulk collect子句用于取得批量数据,该子句只能用于select语句、f

2008-03-18 20:33:00 3233

原创 使用集合操作符给嵌套表赋值

  从oracle10g开始,允许将多个嵌套表的结果集合到某个嵌套表中(set,multiset union[distinct],multiset intersect,multiset except)。其中set有一个嵌套表传入参数,作用是消除嵌套表中的重复内容;multiset union是将两个嵌套表内容合并起来,加入关键词distinct可以消除重复内容;multiset interse

2008-03-18 16:59:00 1419

转载 oracle中的hash join详解

 Q9,oracle中的hash join详解。作者: fuyuncat来源: www.HelloDBA.com 一、  hash join概念      hash join(HJ)是一种用于equi-join(而anti-join就是使用NOT IN时的join)的技术

2008-03-17 15:55:00 3240

转载 oracle执行计划的一些概念

 oracle执行计划的一些概念:Rowid:系统给oracle数据的每行附加的一个伪列,包含数据表名称,数据库id,存储数据库id以及一个流水号等信息,rowid在行的生命周期内唯一。Recursive sql:为了执行用户语句,系统附加执行的额外操作语句,譬如对数据字典的维护等。Row source(行源):oracle执行步骤过程中,由上一个操作返回的符合条件的行的集合。

2008-03-17 15:54:00 1862

原创 oracle的层次查询

 Q7,oracle层次查询:在业务执行过程中,如果涉及到的目标表具有层次结构数据,在传统的查询执行过程中,我们需要使用自连接来完成查询的执行,这样不仅代码书写比较麻烦,而且执行时的资源花销也比较大。Oracle提供了层次查询函数来优化这类查询要求。在层次查询中,伪列level可以用于返回层次,根层次为1,第二级层次为2,以此类推。层次查询子句的语法为Start with conditio

2008-03-17 15:52:00 2437

原创 oracle的复杂聚合函数

   rollup、cube以及grouping sets统计关键字的使用:数据库的group by关键词执行对数据内容的聚合统计。select * from tsalary;1     1     10    开发   10000.002     2     10    测试   10000.003     3     10    管理   10000.004     4

2008-03-17 10:07:00 5332 2

原创 oracle的参照变量

 Q4,oracle的参照变量:oracle中的参照变量有两种,ref cursor和ref obj_type。是指用于存放数值指针的变量。通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用空间。Ref cursor:使用游标变量时不需要在定义时就指定相应的select语句,从而实现动态的游标操作。Declare Type c1_refcursor is ref curs

2008-03-15 10:51:00 1840 1

原创 oracle的多表插入

 Q5,oracle的多表插入操作。在业务处理过程中,经常会碰到将业务数据按照条件分别插入不同的数据表的问题,按照传统的处理方式,需要分条件执行多次检索后分别插入不同的表单,这样因为执行了重复的检索造成cpu和内存的浪费,从oracle9i开始引入了insert all关键字支持将某张表的数据同时插入多张表单。语法如下:Insert all Insert_into_clause [valu

2008-03-15 10:48:00 4052

原创 oracle的异常处理函数

 Q1:oracle用户自定义异常处理相关。A1:Exception_init编译指令,即exception的初始化。语法为pragma exception(exception_name,error_number)。在处理exception时,如果没有已经定义好的exception name可以使用,我们就只能用others来处理并捕捉所有的exception,PL/SQL设计者建议大家尽

2008-03-14 11:17:00 4010

原创 oracle的集合类型

Q7,从7.3版本之后,oracle的集合数据类型变为三种:Index_by表、嵌套表和Varray。这三种类型的集合相似点为:都是一维的类似数组的结构;都有内建的方法;访问由点分割。同时他们也存在很多差异,包括数据绑定、稀疏性(sparsity)和数据中的存储能力都不同。l         绑定涉及到集合中元素数量的限制:varray集合中的元素数量是有限的,不能超出其定义时给出的maxsi

2008-03-13 10:01:00 3414 1

原创 oracle9i客户端连接10g数据库

 Q2:机器上原来安装了oracle9i的客户端,并配置了两个远程连接,但是由于远程数据库没有准备测试环境,所以又在本地装了10g的数据库服务器,在将监听服务器配置成功,并且使用telnet工具可以监听到数据库的情况下,原来可以连接oracle9i的plsql developer机器无法连接新配置的oracle10g数据库资源,连接时提示无法打开服务器。A2:这是由于没有在oracle9i

2008-03-13 09:59:00 7044 1

oracle的sql脚本优化实例

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

2010-10-15

使用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 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关注的人

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