- 浏览: 495855 次
- 性别:
- 来自: OnePiece
文章分类
- 全部博客 (196)
- --------- 基础----------- (0)
- java 碎碎念 (12)
- java 并行编程 (11)
- java I/O (6)
- java Charset & Encoding (2)
- spring学习笔记 (8)
- 正则表达式 (5)
- web前端-javascript (11)
- web前端-jQuery (7)
- web前端-碎碎念 (1)
- mybatis (0)
- 数据库-通用 (8)
- 数据库-oracle (20)
- nosql-redis (11)
- nosql-mongoDB (1)
- xml (2)
- log4j (2)
- uml (3)
- web services: soap/wsdl (6)
- soa-tuscany (2)
- linux (6)
- ----------修养----------- (0)
- 深入理解java虚拟机 (7)
- java 设计模式 (9)
- 数据结构和算法 (2)
- 读书笔记--代码整洁之道 (2)
- 计算机基础 (1)
- -----------践行---------- (0)
- 重构(refactor) (7)
- jvm-诊断 (4)
- 数据库-让oracle跑得更快 (7)
- Nginx (6)
- ehcache (2)
- 短信开发 (1)
- Servlet+Filter+Listener (2)
- 运维 (6)
- 问题记录 (38)
- 杂七杂八 (12)
最新评论
-
zhanggang807:
第二种方法比较好
<spring> 定时任务每次都执行两次的问题,慎用new ClassPathXmlApplicationContext() -
assasszt:
谢谢分享,很清楚的讲明了原理。
字符集与字符编码简介 -
su0nils000:
难得的笔记
<进阶-2> 打造高效正则表达式 -
足至迹留:
mini188 写道用MD5来解决碰撞是不是也是可行的呢?个人 ...
Hash简介 -
mini188:
用MD5来解决碰撞是不是也是可行的呢?
Hash简介
9.1 表类型
Oracle主要有以下9种表类型:
(1) 堆组织表(heap organized table):这些就是普通的标准数据库表。数据以堆的方式管理。增加数据时,会使用段中找到的第一个能放下此数据的自由空间。从表中删除数据时允许以后的insert和update重用这部分空间。
(2) 索引组织表(index organized table):这些表按索引结构存储。这就强制要求行本身有某种物理顺序。在堆中,只要放得下数据就可以放在任何位置;而索引组织表,数据要根据主键有序地存储。
(3) 索引聚簇表(index clustered table):聚簇(cluster)是指一个或多个表组成的组,这些表物理地存储在相同的数据库块上,有相同聚簇键值的所有行会相邻的物理存储。这些数据按聚簇键值聚簇在一起,聚簇键使用B*树索引建立。
(4) 散列聚簇表(hash cluster table):这些表类似于聚簇表,但是不使用B*树索引按聚簇键来定位数据,散列聚簇将键散列到聚簇上,从而找到数据应该在哪个数据块上。在散列聚簇中,数据就是索引,如果需要频繁地通过键的相等性比较来读取数据,散列聚簇表就很适用。
(5) 有序散列聚簇表(sorted hash clustered table):这种表类型是oracle 10g中新增的,它结合了散列聚簇表的某些方面。
(6) 嵌套表(nested table):嵌套表是oracle对象关系扩展的一部分。他们实际上就是系统生成和维护的父/子关系中的子表。嵌套表与子表的主要区别是:嵌套表不像子表那样是独立表。
(7) 临时表(temporary table):这些表存储的是事务期间或会话期间的草稿数据。临时表要根据需要从当前用户的临时表空间分配临时区段。每个会话只能看到这个会话分配的区段。
(8) 对象表(object table):对象表基于某种对象类型创建。他们拥有非对象表所没有的特殊属性,如系统会为对象表的每一行生成对象标识符。对象表实际是堆组织表,索引组织表和临时表的特例,还可以包含嵌套表作为其结构的一部分。
(9) 外部表(external table):这些表中的数据并不存储在数据库本身中,而是放在数据库外,即放在平常的操作系统文件中。
不论哪种类型的表,都有以下基本信息:
(1) 一个表最多可以有1000列。不过除非存在某个硬性要求,不鼓励设计中真的包含那么多列。Oracle在内部会把列数大于254的行存储在多个单独的行段,这些行段相互指向,而且必须重新组装为完整的行映像。表中的列数远远少于1000列时才最高效。
(2) 表的行数几乎是无限的,不过你可能会遇到其他的某个限制。
(3) 表中的列有多少种排列,表就可以有多少个索引。随着基于函数的索引的出现,理论上说,所能创建的索引数是无限的。
(4) 在一个数据库中可以有无限多个表。
9.2 术语
9.2.1 段
Oracle中的段(segment)是占用磁盘上存储空间的一个对象。有多种段类型:
(1) 聚簇(cluster):这种段类型能存储表。有两种类型的聚簇:B*树聚簇和散列聚簇。
(2) 表(table):表段保存一个数据库表的数据,这可能是最常用的段类型,通常与索引段联合使用。
(3) 表分区(table partition)或子分区(subpartition):这种段类型用于分区,与表段很类似。分区表由一个或多个表分区段组成,组合分区表则由一个或多个表子分区段组成。
(4) 索引(index):这种段类型可以保存索引结构。
(5) 索引分区(index partition):类似于分区表,这种段类型包含一个索引的某个片。分区索引由一个或多个索引分区段组成。
(6) Lob分区(lob partition)、lob子分区(lob subpartition)、lob索引和lob段:lob索引和lob段是保存大对象的结构。
(7) 嵌套表(nested table):这是为嵌套表指定的段类型。
(8) 回滚段(rollback)和type2 undo段:undo数据就存储在这里。回滚段是DBA手动创建的段,Type2 undo段是由oracle自动创建和管理的。
考虑一下这个简单的create语句:
这个语句会创建6个段。表本身创建一个段。主键约束创建一个索引段。
注意: 唯一约束或主键约束可能创建一个新索引,也可能不创建。如果约束列上已经有一个索引,而且这些列处于索引的前几列,这个约束就会使用这些列(而不再创建新索引)。
另外每个LOB字段分别创建两个段:一个用于存储字符大对象或二进制大对象所指的实际数据块,另一个段用于组织这些数据块。
9.2.2 段空间管理
Oracle 9i开始,管理段空间有两种方法:
手动段空间管理和自动段空间管理。
9.2.3 高水位线
存储在数据库中的表段使用了这个术语。例如,如果把表想像成一个平面结构,或者想象成从左到右依次排开的一系列块,高水位线(high-water mark, HWM)就是包含了数据的最右边的块:
上图显示了HWM首先位于新创建表的第一个块中,过一段时间随着这个表放入数据,HWM会升高。如果我们删除了表中的一些(甚至全部)行,可能就会有许多块不再包含数据,但是他们仍在HWM之下,而且这些块会一直保持在HWM下,直到重建,截除或收缩这个对象。
HWM很重要,因为oracle在全面扫描段时会扫描HWM之下的所有块,即使其中不包含任何数据,这会影响全面扫描的性能。特别是当HWM之下的大多数块都是空时。这时再看下,如果是delete数据,则不会改变HWM,但是使用truncate就会把表的HWM重置为0,还会截除表上的相关索引。由于以上原因,如果你打算删除表中的所有行,就应该使用truncate(如果可以使用的话),想想之前还介绍过truncate不会产生undo也是影响性能的一方面。
9.2.4 logging和nologging
通常对象都采用logging方式创建,这说明对象上完成的操作只要能生成redo就都会生成redo。Nologging则允许该对象完成某些操作时可以不生成redo。
9.2.5 initrans和maxtrans
段中每个块都有一个块首部。这个块首部有一个事务表。事务表中会建立一些条目来描述哪些事务将块上的哪些行/元素锁定。这个事务表的初始大小由对象的initrans设置指定。事务表会根据需要动态扩展,最大达到maxtrans.
9.3 堆组织表
应用中99%或者更多的情况下使用的可能都是堆组织表。执行create table语句时,默认得到的表类型就是堆组织表。如果你想要任何类型的表结构,就需要在create语句本身中指定它。
堆是计算机科学领域中得到深入研究的一种经典数据结构。它实际上就是一个很大的空间、磁盘或内存区,会以一种显然随机的方式管理。数据会放在最合适的地方,而不是某种特定顺序来放置。许多人希望能按数据放入表中的顺序从表中取出数据,但是对于堆,这时无法保证的。也就是说,我们按顺序插入一系列数据,然后select * from table查出来的顺序并不能保证跟插入的顺序一致。
全表扫描时,会按命中的顺序来获取数据,而不是以插入的顺序。这是一个必须了解的重要的数据库表概念:一般来讲,数据库表本质上是无序的数据集合。
如果你的查询需要按插入的顺序来获取数据,就必须向表中增加一列,以便获取数据时使用这个列对数据排序。
应该把堆组织表看作一个很大的无序行集合。这些行会以一种看来随机的顺序取出,而且取出的顺序还取决于所用的其他选项(并行查询,不同的优化器模式等等),同一个查询可能会以不同的顺序取出数据。不要过分依赖查询得到的行顺序,除非查询有一个order by语句。
9.4 索引组织表
索引组织表(index organized table, IOT)就是存储在一个索引结构中的表。存储在堆中的表是无组织的(也就是说,只要有可用的空间,数据可以放在任何地方),IOT中的数据则按主键存储和排序。
IOT有什么意义呢?实际上,可以反过来问:堆组织表有什么意义?由于一般认为关系数据库中的所有表都有一个主键,堆组织表那不就是在浪费空间吗?使用堆组织表时,我们必须为表和表主键上的索引分别留出空间。而IOT则不存在主键的空间开销,因为索引就是数据,数据就是索引,两者已经合二为一。事实上索引是一个复杂的数据结构,需要大量的工作来管理和维护,而且随着存储的行宽度有所增加,维护的需求也会增加。另一方面,相比之下,堆管理起来则很容易。堆组织表在某些方面的效率要比IOT高。
那么什么情况下需要使用IOT? 比如
(1) 表完全由主键列组成,而且所有的查询都使用到了第一列。也就是说所有表字段都是联合索引的一部分,而且查询总是要走索引。
(2) 另一个就是代码查找表。比如,要从zip_code查找state。此时可以不要堆表,而只使用IOT本身。如果你只会通过主键来访问一个表,这个表可能就非常适合实现为IOT。
(3) 如果你想保证数据存储在某个位置上,或者希望数据以某种特定的顺序物理存储,IOT就是一种合适的结构。
9.5 索引聚簇表
许多人都容易把oracle中的“聚簇”与sqlserver或sybase中的“聚簇索引”相混淆。聚簇(cluster)是指:如果一组表由一些共同的列,则将这样一组表存储在相同的数据块中;聚簇还表示把相关的数据存储在同一个块上。Sqlserver中的聚簇索引(cluster index)则要求行按索引键有序的方式存储,这类似于前面所述的IOT。利用聚簇,一个块可能包含多个表的数据。从概念上讲,这是将数据“预联接”地存储。聚簇还可以用于单个表,可以按某个列将数据分组存储。例如,部门10的所有员工都存储在同一个块上(或者如果一个块放不下,则存储在尽可能少的几个块中)。聚簇并不是有序的存储数据(这是IOT的工作),它是按某个键以聚簇方式存储,但数据存储在堆中。
9.6 散列聚簇表
散列聚簇表(Hash clustered table)在概念上与前面介绍的索引聚簇表非常相似,只是一个主要区别:聚簇键索引被一个散列函数所取代。表中的数据就是索引,这里没有物理索引。Oracle会取得一行的键值,使用某个内部函数或者你提供的某个函数对其计算散列。然后使用这个散列值得出数据应该在磁盘上的哪个位置。不过,使用散列算法来定位数据有一个副作用,如果不向表增加一个传统索引,将无法对散列聚簇中的表完成区间扫描。在一个索引聚簇中,如果有以下查询:
Select * from emp where deptno between 10 and 20;
它就能利用聚簇索引来找到这些行。在一个散列聚簇中,这个查询会导致一个全表扫描,除非deptno列上已经有一个索引。
9.7 有序散列聚簇表
有序散列聚簇是oracl 10g中新增的。其中不仅有前面所述的散列聚簇的有关性质,还结合了IOT的一些性质。
9.8 嵌套表
嵌套表(nested table)是oracle对象关系扩展的一部分。这是数据元素的一个无序集,所有数据元素的数据类型都相同,可以是一个内置数据类型,也可以是一个对象数据类型。不过还不仅如此,因为设计嵌套表是为了制造一个假象,好像父表中的每一行都有其自己的子表。如果父表中有100行,那么就有100个虚拟的嵌套表。但实际来讲,物理上只有一个父表和一个子表。在嵌套表和父/子表之间还存在一些显著的语法和语义差别。
使用嵌套表有两种方法。一种方法是在pl/sql代码中使用,用来扩展pl/sql语言。另一种方法是作为一种物理存储机制,持久的存储集合。Tom总是在pl/sql中使用嵌套表,而从未将嵌套表用作持久存储机制。
9.9 临时表
临时表(temporary table)用于保存事务或会话期间的中间结果集。临时表中保存的数据只对当前会话可见,所有会话都看不到其他会话的数据;即使当前会话已经提交了数据,别的会话也看不到它的数据。对于临时表,不存在多用户并发问题,因为一个会话不会因为使用一个临时表而阻塞另一个会话。
Oracle主要有以下9种表类型:
(1) 堆组织表(heap organized table):这些就是普通的标准数据库表。数据以堆的方式管理。增加数据时,会使用段中找到的第一个能放下此数据的自由空间。从表中删除数据时允许以后的insert和update重用这部分空间。
(2) 索引组织表(index organized table):这些表按索引结构存储。这就强制要求行本身有某种物理顺序。在堆中,只要放得下数据就可以放在任何位置;而索引组织表,数据要根据主键有序地存储。
(3) 索引聚簇表(index clustered table):聚簇(cluster)是指一个或多个表组成的组,这些表物理地存储在相同的数据库块上,有相同聚簇键值的所有行会相邻的物理存储。这些数据按聚簇键值聚簇在一起,聚簇键使用B*树索引建立。
(4) 散列聚簇表(hash cluster table):这些表类似于聚簇表,但是不使用B*树索引按聚簇键来定位数据,散列聚簇将键散列到聚簇上,从而找到数据应该在哪个数据块上。在散列聚簇中,数据就是索引,如果需要频繁地通过键的相等性比较来读取数据,散列聚簇表就很适用。
(5) 有序散列聚簇表(sorted hash clustered table):这种表类型是oracle 10g中新增的,它结合了散列聚簇表的某些方面。
(6) 嵌套表(nested table):嵌套表是oracle对象关系扩展的一部分。他们实际上就是系统生成和维护的父/子关系中的子表。嵌套表与子表的主要区别是:嵌套表不像子表那样是独立表。
(7) 临时表(temporary table):这些表存储的是事务期间或会话期间的草稿数据。临时表要根据需要从当前用户的临时表空间分配临时区段。每个会话只能看到这个会话分配的区段。
(8) 对象表(object table):对象表基于某种对象类型创建。他们拥有非对象表所没有的特殊属性,如系统会为对象表的每一行生成对象标识符。对象表实际是堆组织表,索引组织表和临时表的特例,还可以包含嵌套表作为其结构的一部分。
(9) 外部表(external table):这些表中的数据并不存储在数据库本身中,而是放在数据库外,即放在平常的操作系统文件中。
不论哪种类型的表,都有以下基本信息:
(1) 一个表最多可以有1000列。不过除非存在某个硬性要求,不鼓励设计中真的包含那么多列。Oracle在内部会把列数大于254的行存储在多个单独的行段,这些行段相互指向,而且必须重新组装为完整的行映像。表中的列数远远少于1000列时才最高效。
(2) 表的行数几乎是无限的,不过你可能会遇到其他的某个限制。
(3) 表中的列有多少种排列,表就可以有多少个索引。随着基于函数的索引的出现,理论上说,所能创建的索引数是无限的。
(4) 在一个数据库中可以有无限多个表。
9.2 术语
9.2.1 段
Oracle中的段(segment)是占用磁盘上存储空间的一个对象。有多种段类型:
(1) 聚簇(cluster):这种段类型能存储表。有两种类型的聚簇:B*树聚簇和散列聚簇。
(2) 表(table):表段保存一个数据库表的数据,这可能是最常用的段类型,通常与索引段联合使用。
(3) 表分区(table partition)或子分区(subpartition):这种段类型用于分区,与表段很类似。分区表由一个或多个表分区段组成,组合分区表则由一个或多个表子分区段组成。
(4) 索引(index):这种段类型可以保存索引结构。
(5) 索引分区(index partition):类似于分区表,这种段类型包含一个索引的某个片。分区索引由一个或多个索引分区段组成。
(6) Lob分区(lob partition)、lob子分区(lob subpartition)、lob索引和lob段:lob索引和lob段是保存大对象的结构。
(7) 嵌套表(nested table):这是为嵌套表指定的段类型。
(8) 回滚段(rollback)和type2 undo段:undo数据就存储在这里。回滚段是DBA手动创建的段,Type2 undo段是由oracle自动创建和管理的。
考虑一下这个简单的create语句:
create table t(x int primary key, y clob, z blob);
这个语句会创建6个段。表本身创建一个段。主键约束创建一个索引段。
注意: 唯一约束或主键约束可能创建一个新索引,也可能不创建。如果约束列上已经有一个索引,而且这些列处于索引的前几列,这个约束就会使用这些列(而不再创建新索引)。
另外每个LOB字段分别创建两个段:一个用于存储字符大对象或二进制大对象所指的实际数据块,另一个段用于组织这些数据块。
9.2.2 段空间管理
Oracle 9i开始,管理段空间有两种方法:
手动段空间管理和自动段空间管理。
9.2.3 高水位线
存储在数据库中的表段使用了这个术语。例如,如果把表想像成一个平面结构,或者想象成从左到右依次排开的一系列块,高水位线(high-water mark, HWM)就是包含了数据的最右边的块:
上图显示了HWM首先位于新创建表的第一个块中,过一段时间随着这个表放入数据,HWM会升高。如果我们删除了表中的一些(甚至全部)行,可能就会有许多块不再包含数据,但是他们仍在HWM之下,而且这些块会一直保持在HWM下,直到重建,截除或收缩这个对象。
HWM很重要,因为oracle在全面扫描段时会扫描HWM之下的所有块,即使其中不包含任何数据,这会影响全面扫描的性能。特别是当HWM之下的大多数块都是空时。这时再看下,如果是delete数据,则不会改变HWM,但是使用truncate就会把表的HWM重置为0,还会截除表上的相关索引。由于以上原因,如果你打算删除表中的所有行,就应该使用truncate(如果可以使用的话),想想之前还介绍过truncate不会产生undo也是影响性能的一方面。
9.2.4 logging和nologging
通常对象都采用logging方式创建,这说明对象上完成的操作只要能生成redo就都会生成redo。Nologging则允许该对象完成某些操作时可以不生成redo。
9.2.5 initrans和maxtrans
段中每个块都有一个块首部。这个块首部有一个事务表。事务表中会建立一些条目来描述哪些事务将块上的哪些行/元素锁定。这个事务表的初始大小由对象的initrans设置指定。事务表会根据需要动态扩展,最大达到maxtrans.
9.3 堆组织表
应用中99%或者更多的情况下使用的可能都是堆组织表。执行create table语句时,默认得到的表类型就是堆组织表。如果你想要任何类型的表结构,就需要在create语句本身中指定它。
堆是计算机科学领域中得到深入研究的一种经典数据结构。它实际上就是一个很大的空间、磁盘或内存区,会以一种显然随机的方式管理。数据会放在最合适的地方,而不是某种特定顺序来放置。许多人希望能按数据放入表中的顺序从表中取出数据,但是对于堆,这时无法保证的。也就是说,我们按顺序插入一系列数据,然后select * from table查出来的顺序并不能保证跟插入的顺序一致。
全表扫描时,会按命中的顺序来获取数据,而不是以插入的顺序。这是一个必须了解的重要的数据库表概念:一般来讲,数据库表本质上是无序的数据集合。
如果你的查询需要按插入的顺序来获取数据,就必须向表中增加一列,以便获取数据时使用这个列对数据排序。
应该把堆组织表看作一个很大的无序行集合。这些行会以一种看来随机的顺序取出,而且取出的顺序还取决于所用的其他选项(并行查询,不同的优化器模式等等),同一个查询可能会以不同的顺序取出数据。不要过分依赖查询得到的行顺序,除非查询有一个order by语句。
9.4 索引组织表
索引组织表(index organized table, IOT)就是存储在一个索引结构中的表。存储在堆中的表是无组织的(也就是说,只要有可用的空间,数据可以放在任何地方),IOT中的数据则按主键存储和排序。
IOT有什么意义呢?实际上,可以反过来问:堆组织表有什么意义?由于一般认为关系数据库中的所有表都有一个主键,堆组织表那不就是在浪费空间吗?使用堆组织表时,我们必须为表和表主键上的索引分别留出空间。而IOT则不存在主键的空间开销,因为索引就是数据,数据就是索引,两者已经合二为一。事实上索引是一个复杂的数据结构,需要大量的工作来管理和维护,而且随着存储的行宽度有所增加,维护的需求也会增加。另一方面,相比之下,堆管理起来则很容易。堆组织表在某些方面的效率要比IOT高。
那么什么情况下需要使用IOT? 比如
(1) 表完全由主键列组成,而且所有的查询都使用到了第一列。也就是说所有表字段都是联合索引的一部分,而且查询总是要走索引。
(2) 另一个就是代码查找表。比如,要从zip_code查找state。此时可以不要堆表,而只使用IOT本身。如果你只会通过主键来访问一个表,这个表可能就非常适合实现为IOT。
(3) 如果你想保证数据存储在某个位置上,或者希望数据以某种特定的顺序物理存储,IOT就是一种合适的结构。
9.5 索引聚簇表
许多人都容易把oracle中的“聚簇”与sqlserver或sybase中的“聚簇索引”相混淆。聚簇(cluster)是指:如果一组表由一些共同的列,则将这样一组表存储在相同的数据块中;聚簇还表示把相关的数据存储在同一个块上。Sqlserver中的聚簇索引(cluster index)则要求行按索引键有序的方式存储,这类似于前面所述的IOT。利用聚簇,一个块可能包含多个表的数据。从概念上讲,这是将数据“预联接”地存储。聚簇还可以用于单个表,可以按某个列将数据分组存储。例如,部门10的所有员工都存储在同一个块上(或者如果一个块放不下,则存储在尽可能少的几个块中)。聚簇并不是有序的存储数据(这是IOT的工作),它是按某个键以聚簇方式存储,但数据存储在堆中。
9.6 散列聚簇表
散列聚簇表(Hash clustered table)在概念上与前面介绍的索引聚簇表非常相似,只是一个主要区别:聚簇键索引被一个散列函数所取代。表中的数据就是索引,这里没有物理索引。Oracle会取得一行的键值,使用某个内部函数或者你提供的某个函数对其计算散列。然后使用这个散列值得出数据应该在磁盘上的哪个位置。不过,使用散列算法来定位数据有一个副作用,如果不向表增加一个传统索引,将无法对散列聚簇中的表完成区间扫描。在一个索引聚簇中,如果有以下查询:
Select * from emp where deptno between 10 and 20;
它就能利用聚簇索引来找到这些行。在一个散列聚簇中,这个查询会导致一个全表扫描,除非deptno列上已经有一个索引。
9.7 有序散列聚簇表
有序散列聚簇是oracl 10g中新增的。其中不仅有前面所述的散列聚簇的有关性质,还结合了IOT的一些性质。
9.8 嵌套表
嵌套表(nested table)是oracle对象关系扩展的一部分。这是数据元素的一个无序集,所有数据元素的数据类型都相同,可以是一个内置数据类型,也可以是一个对象数据类型。不过还不仅如此,因为设计嵌套表是为了制造一个假象,好像父表中的每一行都有其自己的子表。如果父表中有100行,那么就有100个虚拟的嵌套表。但实际来讲,物理上只有一个父表和一个子表。在嵌套表和父/子表之间还存在一些显著的语法和语义差别。
使用嵌套表有两种方法。一种方法是在pl/sql代码中使用,用来扩展pl/sql语言。另一种方法是作为一种物理存储机制,持久的存储集合。Tom总是在pl/sql中使用嵌套表,而从未将嵌套表用作持久存储机制。
9.9 临时表
临时表(temporary table)用于保存事务或会话期间的中间结果集。临时表中保存的数据只对当前会话可见,所有会话都看不到其他会话的数据;即使当前会话已经提交了数据,别的会话也看不到它的数据。对于临时表,不存在多用户并发问题,因为一个会话不会因为使用一个临时表而阻塞另一个会话。
发表评论
-
<让oracle跑得更快-7> AWR性能报告
2015-03-01 22:45 2133AWR是oracle 10g下提供的一 ... -
<让oracle跑得更快-6> 绑定变量
2015-02-28 21:52 1250变量绑定是OLTP系统中一 ... -
<让oracle跑得更快-5> 执行计划
2015-02-28 21:48 1292如果要分析某条(不是整体性能,后面还会讲到awr报告,会再次说 ... -
<让oracle跑得更快-4> 优化器(optimizer)
2015-02-27 21:27 2057Oracle数据库中优化器(o ... -
<让oracle跑得更快-3> latch和等待
2015-02-27 21:18 1170经常有人把latch造成的 ... -
<让oracle跑得更快-2> 锁和阻塞
2015-02-26 22:24 11682.1 锁和阻塞 首先,注意区别并发(concurrency) ... -
<让oracle跑得更快-1> 引起数据库性能问题的因素
2015-02-26 22:04 1545此《让oracle跑得更快》 ... -
OLTP(联机事务处理)和OLAP(联机分析处理) 【转】
2015-02-12 14:13 1250做数据库优化时,一定要先了解数据库支撑的应用特点,不同类型的应 ... -
<oracle优化>(url收藏)
2015-02-11 22:18 8251. CBO & RBO Rule Based Opt ... -
<oracle-11> 数据类型
2015-02-08 20:06 2557选择一个正确的数据类 ... -
<oracle-10> 索引
2015-02-01 21:19 2040索引是应用设计和开发的一个重要方面。如果有太多的索引,修改(插 ... -
<oracle-8> redo和undo
2015-01-26 22:23 1655本章介绍oracle数据库中 ... -
<oracle-7> 事务
2015-01-26 11:07 1551事务(transaction)是数 ... -
<oracle-6> 并发多版本控制
2015-01-12 21:17 14666.1 什么是并发控制 并 ... -
<oracle-5> 锁(lock)和闩(latch)
2015-01-07 21:11 2765开发多用户、数据库驱动的应用时,最大的难点之一是:一方面要力争 ... -
<oracle-4> oracle进程
2015-01-06 23:02 1404Oracle中的各个进程要完成某个特定的任务或一组任务,每个进 ... -
<oracle-3> 内存结构
2015-01-05 22:20 1556这一篇主要讨论oracle的3 ... -
<oracle-2> oracle文件
2014-12-22 20:57 1141与oracle实例相关的文件只有下面几种: 参数文件(para ... -
<Oracle-1> oracle体系结构概述
2014-12-21 22:02 1223本系列主要参考《Oracle ...
相关推荐
在压缩包中的“sys数据库”可能是指Oracle数据库中的系统模式,它包含系统级别的对象,如数据字典表和视图。在SQL Server中,也有类似的系统数据库,如master、model、msdb和tempdb,它们各自承担着不同的角色。如果...
Oracle XE是Oracle数据库的一个简化版,主要针对个人开发和小型企业使用,而Tomcat则是一款流行的开源Java应用服务器,常用于部署Web应用程序。在Java Web开发中,数据库连接池是一种重要的技术,它能有效地管理和...
### SSH框架连接Oracle数据库的关键配置知识点 在基于Java 2 Platform, Enterprise Edition (J2EE) 的Web开发中,SSH(Struts + Spring + Hibernate)框架是常用的开发组合之一。SSH框架结合了Struts用于MVC(Model...
2. **启用Oracle的配置**:在原有的Oracle配置基础上取消注释,并且根据实际情况修改Oracle数据库的登录用户名和密码。 示例代码: ```properties #mysql配置 #db.url=jdbc:mysql://localhost:3306/jeesite?...
Oracle 系统的结构可以描述为:客户端应用程序 <--(1)--> Oracle 客户端软件 <---(2)---> 系统 TCP/IP 模块 <---(3)---> 网络 <--> 系统的 TCP/IP 模块 <---> Oracle 数据库。在这个结构中,用户名和密码在网络上...
通用数据库访问类 通过配置 可实现不同数据库的的访问&def目前实现了SQLserver&def Oracle&def DataAccess <!--在配置文件中加如下--> <?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- 连接字符...
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>root</user-name> <password>123456</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor....
当我们需要在JBoss 7中与Oracle数据库进行交互时,必须正确配置Oracle JDBC驱动。以下是详细的配置步骤和相关知识点。 首先,我们需要获取Oracle的JDBC驱动。Oracle JDBC驱动通常被称为ojdbc.jar,它允许Java应用...
- 修改 `<jndi-name>`、`<connection-url>`、`<driver-class>`、`<user-name>` 和 `<password>` 等元素。 **步骤三**: 放置修改后的文件。 - 将修改后的 `sqlserver-ds.xml` 文件放置到 `tobeyou**\server\default...
在本实例中,我们将学习如何使用Ajax进行开发,特别是在设置中文环境并连接Oracle数据库方面。首先,我们需要创建一个JavaScript函数,这个函数将负责触发Ajax请求。通常,我们会使用`XMLHttpRequest`对象或者现代...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
本文将详细讲解如何在JBoss中配置Oracle数据源,以便应用程序能够高效、安全地连接到Oracle数据库。 首先,Oracle数据源的配置主要涉及到JBoss服务器的配置文件,通常在`standalone.xml`或`domain.xml`中进行。在这...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
要在JBoss上配置Oracle数据库,需要按照以下步骤操作: 1. **添加JDBC驱动**: 将Oracle的JDBC驱动程序复制到`server/default/lib`目录下。 2. **事务处理数据源**: 将`/docs/examples/jca/oracle-xa-ds.xml`复制到`...
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!-- JDBC URL --> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbname</property> <!-- 数据库...
<--------------------只做验证----...为便于验证oracle<1>/<2>的sql语句而上传的配套sql格式数据库源文件 <--------------------只做验证--------------------> <--------------------只做验证-------------------->