摘要:
You AskedTom:create table test( a int);beginfor i in 1..10000 loopinsert into test values (i);end loop;end;set autotrace onselect count(0) from test;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 ... 阅读全文
随笔档案-2011年08月
left join on ...and ... 与left join on ... where.. 的区别
2011-08-29 17:31 by Tracy., 538 阅读, 收藏, 编辑
摘要:
create table UserAccount( UID int, UName varchar(50), JoinDate datetime)insert into UserAccount values(1,'Jimmy','2006-10-3')insert into UserAccount values(2,'Jack','2006-10-25')insert into UserAccount values(3,'Mike','2006-11-13')insert into UserAccou 阅读全文
凤姐访谈录
2011-08-25 11:04 by Tracy., 542 阅读, 收藏, 编辑
摘要:
SHAUN:晚上好!我是SHAUN SHEEP!网络世界神奇莫测,每天数以亿万计的人们流连忘返,见证每天发生的神奇故事,不单单是在美国,在中国也是如此,下面让我们欢迎来自中国的网络奇人——凤姐 !!!SHAUN:你好!凤姐!请允许我这么称呼。。。凤姐:嘿嘿 您年龄那么大,叫凤妹妹就可以了SHAUN:呵呵 欢迎来到美国,也非常感谢你能亲自来到现场和广大美国人民交流凤姐:HI 大家好 也祝贺你们击败CNN取得我的独家访谈权SHAUN:哦 谢谢 我们非常想知道,你来到美国感觉如何?凤姐:这是每个中国人做梦都想来的国度啊,我现在还以为是在梦里。。。现在是不是美国的春节啊!马路上人这么少啊!我可... 阅读全文
Oracle:Virtual Columns in Oracle Database 11g Release 1
2011-08-24 10:35 by Tracy., 403 阅读, 收藏, 编辑
摘要:
When queried, virtual columns appear to be normal table columns, but their values are derived rather than being stored on disc. The syntax for defining a virtual column is listed below.column_name [datatype] [GENERATED ALWAYS] AS (expression) [VIRTUAL]If the datatype is omitted, it is determined bas 阅读全文
Oracle:PIVOT and UNPIVOT Operators in Oracle Database 11g Release 1
2011-08-24 10:25 by Tracy., 713 阅读, 收藏, 编辑
摘要:
This article shows how to use the new PIVOT and UNPIVOT operators in 11g, as well as giving a pre-11g solution to the same problems.PIVOTUNPIVOTPIVOTThe PIVOT operator takes data in separate rows, aggregates it and converts it into columns. To see the PIVOT operator in action we need to create a tes 阅读全文
Oracle:【DEADLOCK】Oracle“死锁”模拟
2011-08-24 10:07 by Tracy., 2800 阅读, 收藏, 编辑
摘要:
本着实验优先的原则,先模拟死锁的发生,然后在列一下死锁产生的四个必要条件和处理死锁的一般策略。1.创建两个简单的表t1_deadlock和t2_deadlock,每个表中仅仅包含一个字段asys@ora10g> conn sec/secConnected.sec@ora10g> create table t1_deadlock (a int);Table created.sec@ora10g> create table t2_deadlock (a int);Table created.2.每张表中仅初始化一条数据sec@ora10g> insert into t1_d 阅读全文
Select for update nowait
2011-08-24 09:28 by Tracy., 545 阅读, 收藏, 编辑
摘要:
Suppose steps below:1. begin TX12. in TX1, do update table1 set a = 1;3. begin TX24. in TX2, doselect * from table1 for update nowait;Since TX1 is holding a lock, so TX2 failed to acquire a lock. Then the "select * from table1 for update nowait" will return with an error. I called it " 阅读全文
Oracle:TOM实验DBMS_LOCK
2011-08-24 08:58 by Tracy., 1364 阅读, 收藏, 编辑
摘要:
创建一个带主键的表,和一个触发器,触发器会防止两个或多个会话同事插入相同的值。这个触发器使用DBMS_UTILITY.GET_ HASH_VALUE 来计算主键的散列值,得到一个0~1 073 741 823 之间的数(这也是Oracle 允许我们使用的锁ID 号的范围)。然后使用DBMS_LOCK.REQUEST 根据这个ID 分配一个排他锁(也称独占锁,exclusive lock)。一次只有一个会话能做这个工作。grant execute on dbms_lock to scott;create table demo (x int primary key);create or repla 阅读全文
Oracle:物化视图的PCT特性(二)
2011-08-23 16:11 by Tracy., 1249 阅读, 收藏, 编辑
摘要:
上一篇文章介绍了PCT的概念和优点,本文详细介绍一下PCT的限制。物化视图的PCT特性(一):http://blog.itpub.net/post/468/21406物化视图的分区变化跟踪特性(PCT)具有以下的限制条件:1.物化视图参考的基表中至少有一个是分区的;2.分区表必须是范围分区或复合分区;3.分区键必须由单列组成;4.物化视图必须包含基表的分区列或分区标志;5.如果物化视图包含GROUP BY语句,则分区列或分区标志必须出现在GROUP BY语句中;6.数据修改只能发生在分区表中;7.兼容性设置COMPATIBLE必须在9.0.0.0.0以上;8.物化视图不能参考远端表、视图或外连 阅读全文
Oracle:物化视图的PCT特性(一)
2011-08-23 16:07 by Tracy., 836 阅读, 收藏, 编辑
摘要:
Oracle的物化视图从9i开始支持了PARTITION CHANGE TRACKING(PCT)功能。本文简单描述一下PCT的概念及PCT的优点。物化视图的PCT特性(二):http://blog.itpub.net/post/468/21639PCT是基于分区的修改跟踪,如果基表进行了分区,Oracle可以知道物化视图中的每条记录会被基表中的哪个或哪几个分区所影响。PCT带来的优点主要体现在两个方面上:刷新和查询重新。当基表发生DROP PARTITION或TRUNCATE PARTITION操作后,物化视图仍然可以执行快速刷新。而且即使不执行快速刷新,Oracle也不会将这个物化视图中所 阅读全文
创建其他用户下的物化视图报错权限不足
2011-08-23 15:39 by Tracy., 2571 阅读, 收藏, 编辑
摘要:
在创建一个其他用户的物化视图时报错,错误信息为:ORA-01031: 权限不足。以前写过几篇文章,介绍物化视图创建所需要的权限:建立物化视图所需权限(一):http://yangtingkun.itpub.net/post/468/50672建立物化视图所需权限(二):http://yangtingkun.itpub.net/post/468/50707建立物化视图所需权限(三):http://yangtingkun.itpub.net/post/468/50838建立物化视图所需权限(四):http://yangtingkun.itpub.net/post/468/51163但是目前碰到的问 阅读全文
Oracle:Checkpoint&logswitch -- what is their relationship.
2011-08-23 14:06 by Tracy., 370 阅读, 收藏, 编辑
摘要:
You AskedPlease Tomcan you help me to understand what happens at the log switch timeand what happens at checkpoint time and how one event can determine the other one.Also i am very confuse where SCN is written: in datafile header,in rolback segment header etc?? thanks a lotwith respectrazvan and we 阅读全文
Oracle:如何计算索引的大小
2011-08-23 10:29 by Tracy., 4636 阅读, 收藏, 编辑
摘要:
上次因为创建索引失败,原因是TEMP临时表空间满,经过测试,索引创建需要的临时表空间大概是索引的大小,所以在执行alter index index_name rebuild online nologging parallel 5语句前,要计算出创建索引需要的临时段的大小。实验如下:SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 阅读全文
在Oracle中创建视图时, 如果我们用了”*”符号
2011-08-23 10:15 by Tracy., 656 阅读, 收藏, 编辑
摘要:
在Oracle中创建视图时, 如果我们用了”*”符号, 会被自动地根据当时表的定义扩展成字段列表, 在后面再加列时, 新的列不会自动出现在视图的定义中, 直到你重建视图为止. 那么在MVIEW中呢, 通过一个不经意的操作, 发现一个有趣的问题. 总之, 不要随便地在实体视图的定义中使用”*”号.下面我们在一个表上建两个实体化视图, 角本如下:CREATE TABLE T_MVTEST AS SELECT * FROM TAB;CREATE MATERIALIZED VIEW LOG ON T_MVTEST WITH ROWID,SEQUENCE; CREATE MATERIALIZED ... 阅读全文
在Oracle中怎样查看空间索引的存储空间
2011-08-23 09:54 by Tracy., 4118 阅读, 收藏, 编辑
摘要:
本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。 一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表损坏了,只能重新生成数据库。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在。select count(*) from dba_indexeswhere tablespace... 阅读全文
db file scattered read和sequential read.
2011-08-22 16:41 by Tracy., 854 阅读, 收藏, 编辑
摘要:
1. db file scattered read-DB 文件分散读取这种情况通常显示与全表扫描相关的等待。当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。然而这个等待事件不一定意味着性能低下,在某些条件下Oracle 会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO 下Oracle 会进行更为智能的选择,在RBO 下Oracle 更倾向于使用索引。因为全表扫描被置于LRU 阅读全文
非空闲等待事件之:db file sequential read(转)
2011-08-22 16:20 by Tracy., 476 阅读, 收藏, 编辑
摘要:
名称可能造成误导,该事件是单块读取操作产生的等待事件。ORACLE进程需要一个当前不在SGA中的块,该进程会等待从磁盘读入所需数据块到SGA中。当从索引、回滚或撤消段、按ROWID访问的表、重建控制文件、转储数据文件标题(dump)、数据文件标题读取....提交该事件。存在该事件并不一定表示存在性能问题,但是如果该事件的等待时间比其他等待时间多得多,则表明应用程序正在执行大量的索引读取,需要要考虑全表扫描是否更为有效?通过索引访问数据是否合适?如果存在高平均等待时间,该事件可能是由于受到缓慢的IO子系统和拙劣的数据库文件布局的影响。但对系统IO的调整应该在应用程序调整和SQL调整之后进行。如果 阅读全文
非空闲等待事件之:db file scattered read(转)
2011-08-22 16:20 by Tracy., 591 阅读, 收藏, 编辑
摘要:
当会话发布一个读入多个数据块的IO请求时提交该事件。ORACLE会话等待多个连续的数据块(由初始参数DB_FILE_MULTIBLOCK_READ_COUNT指定)从磁盘读入到SGA中。该事件是在全表扫描或索引快速全局扫描时发生的典型事件。初始化参数db_file_multiblock_read_count(MBRC)决定了读取数据块的最大数目,有两种情况会造成多块读取操作被分成几次操作:>> MBRC因子不能跨越整个区,如果一个区包含10个块,MBRC因子=8,那么多块读取会发布两次读取调用,一次8个数据块,一次2个数据块。>> 要读取的多块有,有一部分已在CACHE 阅读全文
Oracle shared server配置
2011-08-19 16:18 by Tracy., 3184 阅读, 收藏, 编辑
摘要:
接触Oracle这么些年来,看到Oracle不少,起码也有几百个了吧,但数据库s是shared server配置只有一个。所以也一直没有好好研究它。OCM考试大纲中有Configure the database instance to support shared server connections 一栏,那今天就来配置一下Oracle shared server。由上图可知,shared server进程主要通过disipatch进程进行派发,此进程起到了类似中间件的作用。采用shared server模式,可以最大程度的减少主机用户进程数(也就意味着shared server模式比ded 阅读全文
Asktom Oracle:database vs instances
2011-08-12 11:06 by Tracy., 297 阅读, 收藏, 编辑
摘要:
You AskedTom, I am little confused about Oracle Database and instances. If I have created a database DB1, and started it,open for all users, does it mean it is one instance? How can I have multiple instances of a database and how do I find what Instance I am using? So, Can I have two instances of sa 阅读全文
Oracle: What is the ORACLE_SID and DB_NAME name ?
2011-08-11 15:35 by Tracy., 292 阅读, 收藏, 编辑
摘要:
Query the views v$database and v$thread. V$DATABASE gives DB_NAME V$THREAD gives ORACLE_SIDIf ORACLE_SID = DB_SID and db_name = DBNAME:To find the current value of ORACLE_SID: SVRMGR> select instance from v$thread; INSTANCE ---------------- DB_SIDTo find the current value of DB_NAME: SVRMGR> s 阅读全文
Asktom Oracle: Partition table and index .
2011-08-11 15:24 by Tracy., 551 阅读, 收藏, 编辑
摘要:
You AskedHelloI am currently working with Peoplesoft CRM v8One of consultants decided to partitioned the tables using hash partitioning, he also partitioned the indexes locally. Obviously he just showed me how clueless he is making the indexes local to the tables and time has shown I am right, we ha 阅读全文
Asktom Oracle:How to multiplex single row into multiple rows
2011-08-11 10:03 by Tracy., 436 阅读, 收藏, 编辑
摘要:
Hi Tom, First of all, thanks for your tremendous contribution to the Oracle Community in helping people like us solve day to day Oracle replated problems. I have a small problem. Here are the details: CREATE TABLE T ( HS_ID NUMBER(20) PRIMARY KEY, HS_NM VARCHAR2(30 BYTE), HS_STRT_DT DATE, HS_END_DT 阅读全文
Oracle:物化视图语法
2011-08-10 16:39 by Tracy., 432 阅读, 收藏, 编辑
摘要:
物化视图对于前台数据库使用者来说如同一个实际的表,具有和一般表相同的如select等操作,而其实际上是一个视图,一个由系统实现定期刷新其数据的视图(具体刷新时间在定义物化视图的时候已有定义),使用物化视图更可以实现视图的所有功能,而物化视图却不是在使用时才读取,大大提高了读取速度,特别适用抽取大数据量表某些信息以及数据链连接表使用,但是物化视图占用数据库磁盘空间。具体语法如下:create materialized view [view_name]refresh [fast|complete|force][on [commit|demand] |start with (start_time). 阅读全文
Oracle:10053事件简述
2011-08-10 11:12 by Tracy., 899 阅读, 收藏, 编辑
摘要:
一. 10053事件当一个SQL出现性能问题的时候,可以使用SQL_TRACE 或者 10046事件来跟踪SQL. 通过生成的trace来了解SQL的执行过程。 Oracle SQL Trace 和 10046 事件http://blog.csdn.net/tianlesoftware/archive/2010/09/02/5857023.aspx Event 10053 执行计划 绑定变量 Bind peekinghttp://blog.csdn.net/tianlesoftware/archive/2010/04/30/5544307.aspx Oracle 跟踪事件 set eventh 阅读全文
Asktom:Thanks for the question regarding "consistent gets -- Very puzzling".
2011-08-09 16:47 by Tracy., 250 阅读, 收藏, 编辑
摘要:
You AskedTom:create table test( a int);beginfor i in 1..10000 loopinsert into test values (i);end loop;end;set autotrace onselect count(0) from test;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 TABLE ACCESS (FUL 阅读全文
oracle 10g 共享服务器搭建
2011-08-04 17:24 by Tracy., 1213 阅读, 收藏, 编辑
摘要:
oracle 10g 共享服务器搭建1、原理===================================================================Oracle 专用模式(DEDICATED) 和 共享模式(SHARE)专用服务器(DEDICATED):一个客户端连接对应一个服务器进程共享服务器(SHARE):多个客户端连接对应一个服务器进程,服务器端存在一个进程调度器来管理。它必须使用net services.也就是说必须配置tns。它适合用于高并发,事物量小,如果这个时候采用了共享模式,可以大大减少由于高度并发对于ORACLE服务器的资源消耗。共享服务器体系: 阅读全文
如何快速的杀掉Oracle的Session
2011-08-04 15:41 by Tracy., 18997 阅读, 收藏, 编辑
摘要:
--如何快速的杀掉Oracle的Session/*==============================================================================本资料经网络收集整理,已经验证,但对使用资料所造成的后果及影响不负任何责任==============================================================================*/--1.如何查看session级的等待事件?/*======================================================== 阅读全文
Oracle: DBMS_STATS的分析表与备份恢复的一点SQL
2011-08-03 15:27 by Tracy., 422 阅读, 收藏, 编辑
摘要:
begindbms_stats.gather_table_stats(ownname => USER, tabname => 'TMS_ROUTE_HEADER');end;BEGINDBMS_STATS.set_table_stats (ownname => USER,tabname => 'TMS_ROUTE_HEADER',numrows => 100,numblks =>5); END;begindbms_stats.delete_table_stats(ownname => USER,tabname => 阅读全文
Oracle:Not exists
2011-08-02 17:32 by Tracy., 625 阅读, 收藏, 编辑
摘要:
I agree with using not exists. Consider a case where you want to perform more logic than just "One not in the other".Consider Item, Sale, and SaleDetail:create table Item( ItemId number(6), ItemDescription varchar(200), UnitPrice number(18,6))/Create table sale( SaleId number(6), Transacti 阅读全文
Oracle:使用pipeline function获得实时输出
2011-08-02 15:58 by Tracy., 832 阅读, 收藏, 编辑
摘要:
在普通的函数中,使用dbms_output输出的信息,需要在服务器执行完整个函数后一次性的返回给客户端。如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。关键字PIPELINED表明这是一个管道函数,管道函数的返回值类型必须为集合,在函数中,PIPE ROW语句被用来返回该集合的单个元素,函数以一个空的 RETURN 语句结束,以表明它已经完成。create or replace type MsgType as table of varchar2(4000);/create or replace function 阅读全文
oracle嵌套表--整理的学习资料
2011-08-02 15:49 by Tracy., 685 阅读, 收藏, 编辑
摘要:
oracle嵌套表--整理的学习资料自己整理了一下一、嵌套表的定义: 嵌套表是表中之表。一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。在某种意义上,它是在一个表中存储一对多关系的一种方法。考查一个包含部门信息的表,在任何时间内每个部门会有很多项目正在实施。在一个严格的关系模型中,将需要建立两个独立的表department和project. 嵌套表允许在department表中存放关于项目的信息。勿需执行联合操作,就可以通过department表直接访问项目表中的记录。这种不经联合而直接选择数据的能力使得用户对数据访问更加容易。甚至在并没有定义 阅读全文
Oracle:详细介绍Oracle数据库的聚簇技术
2011-08-02 14:48 by Tracy., 3091 阅读, 收藏, 编辑
摘要:
1. 什么是聚簇 \JM=Fy d1=A=: 聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。 Lks)IT ~&|K<&6dt 2. 使用 Oracle 聚簇索引 ,6Yp+ZWR lfc=NAlUDS 聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域。例如,表 BOOKSHELF 和BOOKSHELF_AUTHOR 数据 阅读全文