虚拟列(Virtual Column)——时间换空间
从Oracle11g开始,提供了虚拟列(Virtual Column)功能。和传统的数据列差异在于,虚拟列在数据库中并不存在实际保存的数值,而是通过计算公式,进行计算获取列值。 我们从Oracle官方文档中,找到下面...
位图索引(Bitmap Index)——索引共用
位图索引区别于传统B*树索引有两个结构特点:其一是叶子节点上是一个可能的索引列取值对应一个叶子节点。另一个就是叶子节点上通过一个位图向量表示对应行是否取定这个索引值。 使用位图向量记录对应...
位图索引(Bitmap Index)——位图索引与数据DML锁定
位图索引相对于传统的B*树索引,在叶子节点上采用了完全不同的结构组织方式。传统B*树索引将每一行记录保存为一个叶子节点,上面记录对应的索引列取值和行rowid信息。而位图索引将每个可能的索引取值组织为一...
位图索引(Bitmap Index)——从B*树索引到位图索引
索引是我们最常使用的一种性能优化手段。本质上讲,使用索引的优势就是通过付出一个额外的索引块扫描过程,获取到符合条件的rowid集合,之后依据rowid集合访问数据表块。从而节省下进行全表搜索的I/O消耗。&...
神奇的“双引号”——从一个误创建对象错误谈起
在Oracle中,无论是SQL还是PL/SQL,都是使用单引号进行字符串的标识。双引号是我们经常忽视的一个方面,本篇介绍一个由于双引号引起的故障解决。 一个同事找到笔者,说创建的一个数据库表不能d...
Sequence使用细节两例
Oracle的Sequence对象是我们经常使用的一种生成唯一性数据序列的工具对象。数字类型列配合Sequence对象,可以方便的实现主键列功能。本片介绍使用Sequence对象时,需要关注的两个问题。 实验环境准备...
最大取值数据列行获取
一个同事问起如果获取一个数据列最大取值所在的一行记录,感觉是一个有趣的问题。一般看起来很简单的问题,解法可能有多样,我们选择的路径可能有多种方式。 环境准备 原始问题是:获取数据表...
数据表创建参数介绍(四)
ü FREELISTS Freelists与Freelist Group都是涉及到段对象空间分配的机制。分配给数据段的空闲空间包括两个部分,高水位线HWM以上空闲块和HWM以下空闲块。...
数据表创建参数介绍(三)
PART2、存储结构相关参数 在storage关键字里,包括了存储上对数据对象空间分配的一些重要参数。其中的核心内容控制了Oracle如何给这个数据表对象分配空间。 在这里,我们需要说明一下数据表空间Tables...
索引列的usable和visible(三)
下面我们回到遇到的索引失效后,不能更新DML操作的问题。 经过分析,笔者感觉问题的原因可能处在索引IND_STKTESTONHAND_COMP0的unique特性上。下面进行如下实验。 -- Create/Recreate i...
索引列的usable和visible(二)
上篇我们讨论了unusable的原理和使用,设置为unusable的索引,连带的DML操作会如何呢? 注意下面的实验,笔者发现,如果此时对数据表进行DML操作,数据库会报错拒绝。 SQL...
索引列的usable和visible(一)
索引是Oracle数据库中一个重要的组成部分。Oracle优化和处理很多方面都是围绕索引进行的。在Oracle11g中,索引添加了一个visible属性,来加强对索引的控制能力。今天我们来一起聊聊这个新加入的visible属性和...
数据表创建参数介绍(二)
ü COMPRESS压缩参数 Compress参数含义很清楚:就是在存储数据表数据的时候是否启用压缩选项。压缩使用的级别是数据块block级别。Oracle对数据块的压缩采...
数据表创建参数介绍(一)
创建数据表create table是我们对数据库进行的常见操作。我们一般使用create table之后,指定了数据列信息和主键等约束信息,其他就交给Oracle使用默认值了。今天我们一起来看看这些默认值。说明:本片只关注...
同义词Synonym的一个小实验
今天看到secooler的一篇关于同义词的文章(http://space.itpub.net/519536/viewspace-687959),觉得很有意思。于是想做一些延展性的测试。 secooler的文章是从同义词相关的错误ORA-00980进行...
对象、同义词和公有同义词顺序选取
笔者开发的项目中,广泛使用公有同义词技术。通过公有同义词,消除不同数据源对象之间访问的差异,做到数据逻辑和物理上的分布。 突然想到一个问题:在一个schema下,如果存在自身对象、私有同义词和...
说说sys_context函数
sys_context函数是Oracle提供的一个获取环境上下文信息的预定义函数。该函数用来返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。 sys_context实际上就是一个Oracl...
分布式数据库组件——Database Link
今天我们一起聊聊Database Link。 Database Link(下面简称为DBLink)是Oracle分布式数据构建的一个基石技术。通过DBLink,将两个物理上独立的数据库连接了起来,使得客户端有可能透明的访问两个数据...
Rownum与Order by(二)
那么,我们是不是要放弃这个SQL结构了呢?笔者从网络上获取一个方案,如果将order by后面字段为主键字段,这种SQL结构是可以返回正确的结果的。下面实验: SQL> alter table t add constraint ...
Rownum与Order by(一)
rownum是数据表的一个虚列,是随着select获取到的数据集合而依次生成的数据项目。借助rownum,很多复杂的SQL需求都得以解决。但是,rownum绝不是一个数据列,使用它的时候一定要注意rownum的生成原理和特性。本篇...