深入理解Oracle表(4): 表(Table)和段(Segment)之间是什么关系
表是段,但段不一定是表,段还有index段、undo段、分区之类的 具体如下: 首先,要清楚它们的概念:表是逻辑对象;段是物理存储对象 然后,再看它们之间的关系: ① 段的存在,并不是依赖于表的。建立一些其它逻辑对象也会会创建段,如索引、物化视图
深入理解Oracle表(3):三大表连接方式详解之Nested loop join和 Sort merge join
关系数据库技术的精髓就是通过关系表进行规范化的数据存储 并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理 这里Think愿意和大家一起来学习分享Oracle的三大表连接技术 在早期版本,Oracle提供的是nested-loop join,两表连接就相当于二重循环,假定两表分别
从4个方面实战oracle的密码操作
较好的实践是,oracle的密码操作通过profile来实现,而资源则是通过资源消费组来控制,profile其实是种限制。 通过profile来控制密码的使用,大抵有四: 1) 密码的历史 在这里,有两个参数:password_reuse_time和password_reuse_max,比较好的实践是,这两个参数当关联起来使用。 如:password_reuse_time=30,password_reuse_max=10, 用户可以在30
undo系列学习之undo段及区的状态和使用概述
undo表空间只做一件事:保存旧值。在AUM下,段是自动生成,区是自动分配与回收,且是不连续的。每个段至少有2个区。oracle自动使用undo段,在某种意义上,我们只要关注undo表空间的大小就可以了。 查询当前哪个undo表空间被激活: sys@ORCL> show parameter undo_tablespace NAME TYPE VALUE ------------------------------------ ----
外键和锁
使用外键是需要付出代价的,也就是,即时检查,逐行进行,当然Oracle有个延时检查要求每次修改时都要对另外一张表多一次select操作,使用select lock in share mode方式意味着需要额外的锁,来确保该记录不会在事务未完成前被删除这将导致更多的锁等待,甚至是死锁,因为关联到其他表,死锁很难被爬出小测试Session_A: mysql> begin; Query OK, 0 rows affected (0.00 sec) **加了X锁 mysql>
启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则
处理方法其实很简单、只要: alter user <username> identified by <same password>; 这个操作后,恢复正常了 下面作个简单测试:SQL> conn hr/hr ERROR: ORA-28002: the password will expire within 2 days Connected. SQL> conn / as sysdba Connected. SQL> alter user hr identified by hr; User altered. SQL> conn hr/hr Connected. SQL> conn scott/tiger ERROR: ORA-2
深入理解Oracle索引(25):一招鲜、吃遍天之单字段索引创建思路
本文较短、不过实用性很好、还是记录之、 ㈠ 先别看SQL语句、看执行计划、挑出走全表扫的表 ㈡ 回头看SQL语句、分析上述表的约束字段有哪些、检查各个约束字段的索引是否存在 ㈢ 选择可选性最高的约束字段建立索引By David Lin2013-07-01Good Luck
深入理解Oracle索引(24):B*Tree 索引小结
这个索引专题N久未见阳光了、偶觉得特过去、不幸福、于是有了本文 坊间传闻、B*Tree 索引在应用开发阶段、常作"炮灰"状、而在维护时期、则是"马后炮" 即便身世坎坷常被冷眼相待、但到底是B*Tree、魅力无限、全身散发着令人 YY 的韵味、你比如: 如果存在主键或者唯一性约束、则不论
Oracle DBA 每天、每周、每月应该做的工作
㈠ 每天的工作 ① 检查 alert.log ② 环境确认 ● 数据库实例是否正常工作 ▼ ps –ef|grep ora_ ▼ select status fro
深入理解Oracle索引(23):6 种常见不走索引的原因分析
有时候、挺郁闷的、丫的、咋回事啊、就不走索引、 如果、你发现不走索引、却莫冒失强加自己的意志、 总得给出理由吧、做个测试先、证实/伪走索引切实明智 否则、可能会返回错误的结果、也可能导致性能下降 下面就常见不走索引的 6 种原因简要分析一下、做到心里有底
深入理解Oracle索引(22):索引和NULL 协同合作互惠共赢
㈠ 合作的基础⑴ /* 全为 NULL 的列是无法存储到B*Tree里面的 */ hr@ORCL> create table t (x number,y number); hr@ORCL> create index idx_t on t(x,y); hr@ORCL> insert into t values(1,1); hr@ORCL> insert into t values(1,null); hr@ORCL> insert into t values(null,1); hr@ORCL> insert into t values(null,null); hr@ORCL> commit; hr@ORCL> exec dbms_stats.gather_table_stats(ownname=>USER,tabname=>\'T\'); hr@ORCL> exec dbms_stats.gather_i
深入理解Oracle索引(21):视图和小表是否应该加索引
㈠ 视图能使用索引吗 答案是不能、为什么呢? 我们先要知道什么是视图? 视图、本质上讲、就只是一条被存储的SQL语句而已 那有人就要问了、为什么物化视图可以哩? 这个.....这个、这根本就是两码事嘛、两个完全不同的概念&
深入理解Oracle索引(20):外键是否应该加索引
先表明我的立场、我是绝对支持外键一定要加索引! 虽然在高版本的Oracle里、对这个要求有所降低、但依然有如下原因: ① 死锁 外键未加索引是导致死锁的最主要原因、因为 无论更新父表主键、或者删除一个父表记录、都会在子表加一个表锁 &nb
深入理解Oracle索引(19):表被 delete 后、索引叶子块里 entry 条目的状态
先瞧一个大家习以为常的现象:hr@ORCL> drop table t purge; Table dropped. hr@ORCL> create table t (x number,y varchar2(30)); Table created. hr@ORCL> insert into t select rownum,rownum||\'a\' from dual connect by rownum<1000000; 999999 rows created. hr@ORCL> create index idx_t on t(y); Index created. hr@ORCL> commit; Commit complete. hr@ORCL> exec dbms_stats.gather_table_stats(ownname=>\'HR\',tabname=>\'T\',estimate_percent=>100,cas
深入理解Oracle索引(18):函数索引的陷阱以及如何避免索引被污染
㈠ 函数索引的陷阱 使用函数索引一定要注意在函数代码变更后重建函数索引、否则、Oracle将返回错误结果但不给提示 测试如下:hr@ORCL> drop table t purge; Table dropped. hr@ORCL> create table t (x number,y varchar2(30)); Table created. hr@ORCL> insert into t select rownum,rownum||\'a\' from dual connect by rownum<1000; 999
深入理解Oracle索引(17):Cost 值相同 CBO 对索引的选择
规则如下: 测试如下:hr@ORCL> drop table t purge; Table dropped. hr@ORCL> create table t as select * from dba_objects; Table created. hr@ORCL> alter table t add (object_id_1 number); Table altered. hr@ORCL> update t set object_id_1=object_id; 50363 rows updated. hr@ORCL> commit; Commit complete. hr@ORCL> create index idx_t_a on t(object_id);
深入理解Oracle索引(16):聚簇因子
它的定义: 根据索引的值指示表中行的有序程度、通知 CBO 关于表的行和索引的同步情况 ● 该值与块数相近、表示相同的数据存放得比较集中 ● 该值与行数相近、表示表中行的顺序与索引的顺序不同 &nbs
深入理解Oracle索引(15):日期转换函数的格式参数大小写规则对函数索引的影响
规则如下: 依据这个规则、只有 3 种输出:大写、小写、首字母大写 测试如下:sys@ORCL> select to_char(sysdate,\'Month\') from dual; TO_CHAR(SYSDATE,\'MONTH\') ------------------------------------ June sys@ORCL> select to_char(sysdate,\'MOnth\') from dual; TO_CHAR(SYSDATE,\'MONTH\') ------------------------
深入理解Oracle索引(14):Composite Index 两大原理解析
声明:虽然题目是Oracle、但同样适合MySQL InnoDB索引 在大多数情况下、复合索引比单字段索引好 很多系统就是靠新建一些合适的复合索引、使效率大幅度提高 复合索引比单字段索引复杂、有两个原则需把握:前缀性和可选性 但是、可叹的是、国内很多IT系统开发人员没有意识到应该优先设
【Oracle 真2系列】初始化参数是静态 & 动态
在学习 Oracle 过程中、会发现、其实 Oracle 的很多知识点都是成双入对的 那么、为了便于理解和记忆、我将对此做一个系列的总结 此系列的开篇是:区分初始化参数是静态 or 动态 ? 在 Oracle 中、从 9i开始引入 spfile 、有很多参数可以支持在线修改、即修改会马上生效 官方文档给出如下说明:The ISSY