摘要: 一、本文说明本文整理于谭大师的让Oracle跑得更快1。二、只读表空间与数据备份和恢复的关系 表空间设置成只读之后,只需要执行一次备份操作即可,在后续备份时不再需要考虑这些表空间的备份。 原因很容易理解,这些表空间中的数据已经不再改变,存储在表空间中的数据状态始终保持在表空间设置为Read-Only那一刻,就像是给表空间做了一个快照一样,Oracle也不需要对它们进行额外的恢复工作,比如应用归档。 看下面的例子: 我们创建两个表空间,一个是只读(Read-Only)的,一个是常规的(Read-Write),下面来比较这两个表空间数据文件的变化情况。 1 SQL> create table 阅读全文
posted @ 2013-02-03 14:24 I’m Me! 阅读(9108) 评论(0) 推荐(0) 编辑
摘要: Oracle Bind Variable(绑定变量)就其本质来说就是把本来需要Oracle做硬解析的SQL变成了软解析,以减少Oracle花费在SQL解析上的时间和资源。 我们设想一个银行ATM机系统,这是一个比较典型的OLTP系统,用户分别在不同的ATM机上做操作,其实所有的用户做的操作基本上是相同的,主要是这样3种,查询,取款,存款。 对于查询,发出的查询大概就是这样的一条SQL: Select account_value from account_info where acount_name = 'myname'; 而对于取款和存款,对于数据库来说是一样的,不过是修改当前 阅读全文
posted @ 2013-02-02 15:28 I’m Me! 阅读(4977) 评论(0) 推荐(1) 编辑
摘要: 我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析。在Oracle中存在两种类型的SQL语句,一类为DDL语句(数据定义语言),他们是从来不会共享使用的,也就是每次执行都需要进行硬解析。还有一类就是DML语句(数据操纵语言),他们会根据情况选择要么进行硬解析,要么进行软解析。 DML:INSERT、UPDATE、DELETE、SELECT; DDL:CREATE、DROP、ALTER一、SQL解析过程Oracle对此SQL将进行几个步骤的处理过程: 1、语法检查(syntax check):检查此sql的拼写是否有语法错误; 2、语义检查(semant 阅读全文
posted @ 2013-02-01 21:58 I’m Me! 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 一、引言: 今天在测试绑定变量的时候,发现使用绑定变量时,用autotrace看的执行计划有误,由此想到autotrace和explain plan是否可以反映真实的执行计划? 实验环境: 操作系统:rhel 5.4 x32 数据库:oracle 11g r2二、实验内容: 在这里以autotrace为例子: ----创建一张jack_tab表,其中表里面的数值只有2个值,id=99只有1条记录,剩下的全部等于1---- 1 SQL> create table jack_tab as select 1 id,a.* from dba_objects a; 2 3 Table crea.. 阅读全文
posted @ 2013-01-31 16:11 I’m Me! 阅读(2269) 评论(0) 推荐(0) 编辑
摘要: 一、解释OLTP必须要求变量绑定的原因: 在OLTP系统中,SQL语句大多是比较简单或操作的结果集都很小。比如拿银行的ATM系统来说,尽管用户操作的表可能非常大(银行的用户非常多),但是用户操作的记录数可能只有1行(或者几行),如果再这张表上创建了索引,那么这种极小结果集的操作使用索引最适用,并且几乎所有SQL的执行计划中的索引都会毫无悬念地被选择,因为在这种情况下,索引可能只需要扫过几个数据块就可以定位到数据,而全表扫描将会相当费资源。因此,在这种情况下,即使每个用户的谓词条件不一样,执行计划也是一样的,就是统统使用索引来访问数据,几乎不大可能出现走全表扫描的情况。在这种执行计划几乎是唯一的 阅读全文
posted @ 2013-01-31 11:45 I’m Me! 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 一、本文说明: 首先需要说明一下,我个人比较喜欢看别人发表的一些文章,当我发现作者写的不错的时候我都会转载到这里来,其目的是想增加自己的技术能力,没有盗取作品的意思。L哥写的一些文章都比较不错,赞一个!该原文的作者就是Loucs。二、转载内容: 今天上午开发的同事问我大概9点左右有没有在开发测试库上操作过什么,说应用连接数据库报错了,但接着说现在又可以连上了,所以问我那时候数据库是不是有异常?我叫他把应用收到的ERROR信息发给我。 错误信息如下:1 08:56:03,273 INFO – 执行Do func=[GetSeqNo] keyNam=[keynam];KeyVal=[PRYPAYB 阅读全文
posted @ 2013-01-30 21:03 I’m Me! 阅读(3677) 评论(0) 推荐(0) 编辑
摘要: 一、本文说明:今天在看luocs的博客中看到一篇关于asynch descriptor resize事件的解决方案,虽然这个事件很少出现,但是对于学习Oracle的还是需要了解一下的。在这里属于转载,如果你想看原文可以点击友情链接中的Luocs。二、转载内容: 今天在帮开发同事解决问题的时候,从AWR报告里看出奇怪的地方,TOP 5事件里看到了较难看到的asynch descriptor resize事件。 这是一台开发测试数据库,CentOS 5.5上跑着Oracle 11g 11.2.0.1。 查了一下,系统参数设置和数据库参数: 1 [root@orcl ~]# more /etc/sy 阅读全文
posted @ 2013-01-28 09:47 I’m Me! 阅读(5240) 评论(0) 推荐(0) 编辑
摘要: 一、引言经常有朋友会聊到sessions和processes这两个参数,所以很有必要了解一下这两个参数的概念。那什么是sessions和什么是processes呢?二、Sessions的概念Sessions参数指定了一个Instance中能够同时存在的sessions数量,或者说,就是能同时登陆到数据库的并发用户数。通常,我们设定这个参数时需要考虑我们可能会有多少个同时连接到数据库的并发用户,并加上后台进程的进程数,最后乘以1.1。 比如说,估计系统中可能会同时有100个用户连接到数据库,那么你的session最少应该为(100+10)*1.1 = 121.在这里需要提一下的是:Session 阅读全文
posted @ 2013-01-25 15:25 I’m Me! 阅读(935) 评论(0) 推荐(0) 编辑
摘要: 一、本文说明 在浏览Dave的博客的时候发现有一篇关于索引维护的文章,感觉挺好的,自己对索引的维护了解甚少,因此在这里转载+模拟一下,如果想要看原文可以点击友情链接中的Dave在他的博客中可以找到。二、查看系统表中的用户索引 在Oracle中,SYSTEM表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。 一般来说,应该尽量避免在SYSTEM表空间中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表空间损坏了,只能重新生成数据库。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在 阅读全文
posted @ 2013-01-24 17:20 I’m Me! 阅读(920) 评论(0) 推荐(0) 编辑
摘要: 一、本文说明: 今天在做测试的时候发现字段上有索引,但是执行计划就是不走索引,经过在网上查找才发现原来是索引的集群因子过高导致的。本文属于转载+模拟。二、官网说明The index clustering factor measures row order in relation to an indexed value suches employee last name.The more order that exists in rowstorage for this value,the lower the clustering factor. ----row存储的越有序,clustering 阅读全文
posted @ 2013-01-24 14:49 I’m Me! 阅读(5995) 评论(0) 推荐(2) 编辑