
Oracle
文章平均质量分 73
bisal(Chen Liu)
这个作者很懒,什么都没留下…
展开
-
【Oracle】-【COMMIT对索引的影响】-从trace看COMMIT对索引的影响
之前看过老杨http://yangtingkun.itpub.net/post/468/231000的一篇文章,讲述了INSERT操作对全文索引无操作,但DELETE时为了防止删除的数据仍能通过索引的ROWID访问产生的错误,此时会进行索引的删除操作,因此大批量的DELETE-COMMIT就会耗时,甚至导致数据库挂起。最近因为工作上的需求,有个任务涉及到数据迁移,因此一直关注COMMI原创 2013-07-31 09:09:03 · 1828 阅读 · 0 评论 -
【Oracle】-【体系结构-LGWR】-LGWR的一些理解
LGWR的一些理解:LGWR,是Log Writer的缩写,也是一种后台进程。主要负责将日志缓冲内容写到磁盘的在线重做日志文件或组中。DBWn将dirty块写到磁盘之前,所有与buffer修改相关的redo log都需要由LGWR写入磁盘的在线重做日志文件(组),如果未写完,那么DBWn会等待LGWR,也会产生一些相应的等待事件(例如:log file prarllel write,后原创 2013-07-24 19:08:20 · 7410 阅读 · 0 评论 -
【Oracle】-【插入读取顺序】-插入读取之间的顺序关系
Oracle插入记录的顺序是否是读取的顺序?通过一个简单的实验验证:SQL> create table t( x int,a char(2000) default 'x',b char(2000) default 'x',c char(2000) default 'x');Table created.SQL> insert into t (x) valu原创 2013-08-02 12:33:56 · 8178 阅读 · 2 评论 -
【Oracle】-【权限-ORA-04043】- ORA-04043: object "SYS"."V_$DATABASE" does not exist
用非dba账号(但赋予了DBA角色)登录一个新的10g数据库想看下版本号,SQL> desc v$instance;ERROR:ORA-04043: object "SYS"."V_$INSTANCE" does not exist奇怪,之前有个9i的库,同样的账号就可以查看呢???分析:这里显示的是"SYS"."V_$INSTANCE"对象不存在,我们知道,当原创 2013-07-26 11:46:13 · 5551 阅读 · 0 评论 -
【Oracle】-【ROWNUM与索引】-索引对ROWNUM检索的影响
看到ASK TOM的一篇文章,挺有感触的。http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:32812348052主要问的是ROWNUM的问题。后面的一个讨论提问谈到:select ename, salfrom empwhere rownumorder by sal desc;和sel原创 2013-08-02 12:03:17 · 4697 阅读 · 0 评论 -
【Oracle】-【ORA-01031】-创建基于数据字典表的视图无权限的问题
执行SQL> create or replace view redo_size as 2 select name, value from v$statname n, v$sesstat t, v$session s 3 where s.audsid = sys_context('USERENV','SESSIONID') 4 and t.sid = s.sid原创 2013-08-05 12:22:50 · 2662 阅读 · 0 评论 -
【Oracle】-【创建索引】-创建索引的操作原理与一些体会
1、将index key的data读到cache。如果之前这部分数据未读到DB Cache,那么此时可能有db file scatter read write的等待事件。2、对index key的data进行排序。排序的操作,如果sort_area_size或pga_aggregate_target不大的情况下,可能就会做disk sort,我们知道,磁盘排序的效率要小于Cache不少,因此速原创 2013-08-09 14:18:39 · 2997 阅读 · 0 评论 -
【Oracle】-【心境】【AWR】- 等待事件的基准时间
今天有个AWR的问题,分析后找@dbsnake答疑,我的分析是表象的,没有抓住问题实质,@dbsnake老大给出了准确的解释,差距啊。。。不过这样才有动力继续努力,这次不会,还能总不会啊?备注:AWR中等待事件,例如db file scattered read或log file sync,一般来讲小于20ms都认为是可以接受的,当然也要取决于底层的硬件设备以及应用,但至少有个参考值。原创 2013-08-22 18:22:08 · 2124 阅读 · 0 评论 -
【Oracle】-【TWO_TASK】-TWO_TASK环境变量的作用
杨大师(http://space.itpub.net/4227/viewspace-663069)介绍过TWO_TASK环境变量的作用,指出“在Unix和Linux环境下,可以设置TWO_TASK环境变量,当用户连接数据库且没有指定服务名时,会自动利用TWO_TASK的设置作为环境变量连接数据库。”,并用两个本地数据库为例说明了TWO_TASK的使用。但TOM大师(http://askto原创 2013-08-11 15:22:47 · 4452 阅读 · 2 评论 -
【Oracle】-【AWR/Stackpack】-AWR(Stackpack)执行权限
Oracle 9i执行Stackpack(10g是AWR),当前是一个普通账户,没有DBA权限。SQL> @awrrpt.sqlCurrent Instance~~~~~~~~~~~~~~~~ v$instance i *ERROR at line 6:ORA-00942: table or view does not exist原创 2013-08-13 10:35:12 · 3191 阅读 · 0 评论 -
【每日一摩斯】-LGWR Is Generating Trace file with "Warning: Log Write Time 540ms, Size 5444kb" In 10.2.0.4
LGWR Is Generating Trace file with "Warning: Log Write Time 540ms, Size 5444kb" In 10.2.0.4 Database (文档 ID 601316.1)LGWR的trace日志中记录:Warning: log write time 540ms, size 5444KB*** 2008-05-14 10:1原创 2013-08-26 09:23:04 · 2603 阅读 · 0 评论 -
【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列1
什么是Shared Pool? Oracle的实例主要包括共享内存(主要是SGA,还有PGA)和Background Processes,其中SGA中又包括了Shared Pool、Buffer Cache、Redo Log Buffer以及其它一些内存区。 Oracle在SGA的一个特定区域中保留SQL语句、Package是、对象信息以及其它一些内容,这就是Sha原创 2013-08-28 10:17:32 · 1779 阅读 · 0 评论 -
【每日一摩斯】-RAC and Sequences (853652.1)
序列有四种组合:a. CACHE + NOORDERb. CACHE + ORDERc. NOCACHE + NOORDERd. NOCACHE + ORDER即使在单例配置下,当有大量的sequence需要产生的时候,性能压力和存储sequence值的行锁定代价相关。NOCACHE与CACHE的性能 当使用cache时,dicti原创 2013-08-27 13:58:25 · 1845 阅读 · 0 评论 -
【每日一摩斯】-Index Skip Scan Feature (212391.1)
INDEX Skip Scan,也就是索引快速扫描,一般是指谓词中不带复合索引第一列,但扫描索引块要快于扫描表的数据块,此时CBO会选择INDEX SS的方式。官方讲的,这个概念也好理解,如果将复合索引看做是一个分区表,其中分区主键(这里指的是复合索引的首列)定义了存储于此的分区数据。在每个键(首列)下的每行数据都将按照此键排序。因此在SS,首列可以被跳过,非首列可以作为逻辑子索引访问。因此一原创 2013-08-29 10:10:28 · 1654 阅读 · 0 评论 -
【每日一摩斯】-【序列】-续-RAC and Sequences (853652.1)
一个简单的sequence有什么可以说的呢?如果再这样认为就大错特错了。。。也许以下几点高人们都很清楚,但至少对于我来说,之前是陌生的,或者说是忽略的。1、CREATE SEQUENCE seq;,不带任何参数,那么默认建立的SQL语句是:-- Create sequence create sequence SEQminvalue 1maxvalue 9999999原创 2013-08-30 08:24:39 · 2344 阅读 · 0 评论 -
【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列2
下面来谈一谈系列1中讲到的Literal SQL和Shared SQL的比较。首先是Literal SQL:在有完整的统计信息并且SQL语句在predicate(限定条件)中使用具体值时,基于成本的优化器 (CBO)能工作的最好。比较下面的语句:SELECT distinct cust_ref FROM orders WHERE total_cost 和SE原创 2013-08-31 10:08:19 · 3606 阅读 · 4 评论 -
【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列1
这篇文章的目的是帮助寻找消耗CPU较高的Oracle进程。高CPU应用不一定就是问题,或者说系统资源正在被充分利用。然而,如果CPU使用持续高,但系统负载低、系统性能差,那么就应该调查下CPU高使用率的原因。特别地,如果一个或多个进程持续是以其它进程为代价,持续消耗CPU资源,那么就应该调查这个CPU进程。除了为解决一些问题来收集的信息,几乎没有办法停止这些进程消耗CPU资源。另一方面原创 2013-09-06 11:17:11 · 1698 阅读 · 0 评论 -
【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列3
减轻Shared Pool负载Parse一次并执行多次 在OLTP类型的应用中,最好的方法是只让一个语句被解析一次,然后保持这个cursor的打开状态,在需要的时候重复执行它。这样做的结果是每个语句只被Parse了一次(不管是soft parse还是hard parse)。显然,总会有些语句很少被执行,所以作为一个打开的cursor维护它们是一种浪费。原创 2013-09-01 12:54:04 · 1859 阅读 · 0 评论 -
【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列4
CURSOR_SHARING 参数 (8.1.6 以上) 这个参数需要小心使用。如果它被设为FORCE,那么Oracle会尽可能用系统产生的绑定变量来替换原来SQL中的literals部分。对于很多仅仅是literal不一样的相似的语句,这会让它们共享cursor。这个参数可以在系统级别或者session级别动态设置:ALTER SESSION SET cursor_shari原创 2013-09-02 09:21:34 · 2033 阅读 · 0 评论 -
【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列2
当一个进程使用大量CPU资源时,需要查找哪些线索呢?哪些进程在使用CPU?后台进程Oracle用户进程和Oracle无关的操作系统进程僵尸进程后台进程:PMON:当清理进程或在监听注册时,PMON进程占用CPU较高资源的主要原因可能是某个BUG。SMON:SMON进程负责空间整合与交易恢复,如果使用的是字典管理表空间,那么可能会产生巨大的消耗原创 2013-09-07 21:21:13 · 1823 阅读 · 0 评论 -
【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列3
LGWR & DBWR这两个进程通常是和IO相关的,但是当存在操作系统问题,这两个进程可能"spin(等待)"直到IO操作完成。这种等待是一种CPU操作。异步IO操作的缓慢或失败也能证明它们是高CPU消耗的。如果LGWR间歇地占用100%的CPU资源,那么异步输入输出AIO配置应该重新检查。作为一种临时性的方法,可以设置下面的参数防止LGWR出现等待的现象:_lgwr_async_io原创 2013-09-08 13:25:19 · 3946 阅读 · 0 评论 -
Oracle方向
从毕业到现在工作已经4年了,入职前去过私企,干过外企,当前到了国企,各有各的不同,对于不同的人,有不同的适合的选择。这几年的工作中也积累了不少知识,业务上的、技术上的,但始终觉得没有掌握一门核心,没有较强的核心竞争力,我不是一个有天赋的人,但也不是一个甘于现状屈服于现实的人,自从得知身边的一名同事@dbsnake的伟绩,以及上半年参加@secooler的1元讲座后,逐渐产生了对Orac原创 2013-09-08 23:48:36 · 3064 阅读 · 2 评论 -
【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列4
Jobs (CJQ0, Jn, SNPn)Job进程运行用户定义的以及系统定义的类似于batch的任务。检查Job进程占用大量CPU资源的方法,就像检查用户进程一样。可以根据以下视图检查Job进程运行的状态:DBA_JOBS_* , DBA_SCHEDULER_*, DBA_AUTOTASK_*。这些进程可能会消耗大量的CPU资源,因为他们无限循环地查询job队列。Note: 85原创 2013-09-09 20:22:18 · 1929 阅读 · 0 评论 -
【每日一摩斯】-Fundamentals of the Large Pool
以下内容介绍从Oracle 8引入的‘Large Pool’。什么是Large Pool(翻译过来叫“大池”)? 大池是SGA中一块类似于shared pool的区域,但是它的使用又有严格的限制,仅有几种类型和大小的内存能够在这个池中分配。 大池的内存不是来自于shared pool,而是直接来自于SGA,因此需要在实例启动时增加共享内存的容量。原创 2013-09-04 09:21:23 · 1629 阅读 · 0 评论 -
【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列5
Flushing(清空) SHARED POOL 在使用大量literal SQL的系统中,shared pool随时间推移会产生大量碎片进而导致并发能力的下降。Flushing shared pool能够使得很多小块碎片合并,所以经常能够在一段时间内恢复系统的性能。清空之后可能也会产生短暂的性能下降(补充:因为需要做第一次的硬解析),因为这个操作同时也会把没造成shared原创 2013-09-03 09:22:45 · 2219 阅读 · 0 评论 -
【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列6
如果问题是一个正运行的缓慢的查询SQL,那么就应该对该查询进行调优,避免它耗费过高的CPU资源。如果它做了许多的hash连接和全表扫描,那么就应该添加索引以提高效率。下面的文章可以帮助判断查询的问题:Note:215187.1 SQLT (SQLTXPLAIN) - Tool that helps to diagnose SQLNote:199083.1 Master Note: SQ原创 2013-09-11 09:08:12 · 1714 阅读 · 0 评论 -
【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列5
Oracle(用户)进程以下这些操作都是需要消耗大量CPU资源的:解析大型查询,存储过程编译或执行,空间管理和排序。下面这几篇文章可以帮助采集关于使用高CPU资源的进程的更多信息:Note:352648.1 How to Diagnose High CPU Usage Problems to the Module Level Note:452358.1 How to Collect原创 2013-09-10 22:25:07 · 1827 阅读 · 0 评论 -
【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列6
使用SQL 查看Shared Pool问题 这一章节展示了一些可以用来帮助找到shared pool中的潜在问题的SQL语句。这些语句的输出最好spool到一个文件中。注意:这些语句可能会使latch竞争加剧,我们在上面的"使用 V$ 视图 (V$SQL 和 V$SQLAREA)" above.查找literal SQLSELECT substr(sql_t原创 2013-09-05 09:25:50 · 2141 阅读 · 0 评论 -
数据库优化小计
周一夜间进行了一次XX业务相关的数据库表优化。原因:一共4张表,数据量不大,最小的40万记录,最大的300万,大小不超过300MB。但由于历史原因,表没有建立索引,对应的服务使用的SQL千姿百态,修改起来难度有点大,容易改错,涉及的全国客户较多,大部分都是全表扫描,在秒级的响应时间,但大多客户还能忍着。目标:对于此类无法通过建立索引提高响应速度的表,采用降低数据量,原创 2013-09-12 22:50:29 · 1728 阅读 · 0 评论 -
ORA-12519引出的问题
看到这篇帖子提到一个ORA-12519的问题处理:http://blog.youkuaiyun.com/diguoguo/article/details/6185536oerr的解释:12519, 00000, "TNS:no appropriate service handler found"// *Cause: The listener could not find any a原创 2013-09-14 12:22:02 · 2800 阅读 · 0 评论 -
从trc查找死锁的问题
今天alert日志报ORA-00060的死锁错误,查看trc文件:*** 2013-09-29 01:03:47.762*** SERVICE NAME:(SYS$USERS) 2013-09-29 01:03:47.744*** SESSION ID:(997.178) 2013-09-29 01:03:47.744DEADLOCK DETECTED ( ORA-00060 )原创 2013-09-29 17:29:37 · 4517 阅读 · 0 评论 -
11g的alert日志路径
一个测试库,11g,没有sys账户,无法用show parameter dump查看alert日志的路径,以前也碰到过,但后来就不了了之了。这次深挖下,也参考了下一些网上的帖子,于是找到了:$ORACLE_HOME/rdbms/sid/sid/trace同时11g还支持xml格式的alert日志,路径是:$ORACLE_HOME/rdbms/sid/sid/alert原创 2013-09-15 16:54:04 · 7513 阅读 · 2 评论 -
【求助】从大表中删除小表中存在的记录问题
A表:30万,主键IDB表:300万,主键ID从B表中删除ID=A表ID的记录。DELETE FROM B WHERE EXISTS (SELECT 1 FROM (SELECT ID FROM (SELECT T.ID, ROWNUM RN FROM A) WHERE RN > 0 AND RN 但执行计划显示COST较大,且瓶颈是B表的全表扫描。需求是这里有B1 .原创 2013-09-30 19:54:15 · 1703 阅读 · 0 评论 -
【求助】sqlplus出现core dump的提示
昨天碰到了一个很奇怪的事情,在11.2.0.3的$ORACLE_HOME/lib中使用sqlplus时提示Segmentation Fault (Core Dump),第一次碰到,看了MOS的一些文章,貌似都会有ORA的报错,但core文件在哪里呢?当前路径中没找到,还请高手指点!原创 2013-09-16 22:18:14 · 3379 阅读 · 0 评论 -
一篇关于调优的概念性文章
今天看了一篇关于调优的概念性文章(61998.1: Introduction to Tuning Oracle7 / Oracle8 / 8i / 9i )。文章的目的是为了可以快速知晓执行过程中哪里花费了较多的时间,而不是关注不同统计数据的含义。更加关注实际。1. 为什么需要调优tuning? 通常我们关注的是用户响应时间或批量作业的处理时间。也许是某天当中若干翻译 2013-10-02 20:13:45 · 1728 阅读 · 0 评论 -
db file sequential read等待事件
最近某个应用的AWR中总显示“db file sequential read“等待事件位于top 5之首,下面检索下MOS关于这个等待事件的说明。等待事件: "db file sequential read" Reference Note (文档 ID 34559.1) 这种等待事件是一种IO读请求相关的等待。与”db file scattered read“不同,因原创 2013-10-01 23:33:03 · 16673 阅读 · 0 评论 -
与IO相关的等待事件troubleshooting-系列1
近来XX应用充分暴露出开发人员最初只关心功能,未考虑性能的问题,夜维、OLTP应用均出现了不同程度的与数据库相关的性能问题。这个应用所在磁盘的IO较差,原因在于这块磁盘较旧,已进入更换的流程,但短期内还不能更换,对应用是个极大的隐患。而且也出现过某段时间IO非常差,导致应用处理速度非常缓慢。针对与IO相关的性能问题,MOS有篇文章(223117.1)介绍的就是与IO相关的trouble翻译 2013-10-03 19:02:22 · 1689 阅读 · 0 评论 -
与IO相关的等待事件troubleshooting-系列2
Troubleshooting步骤:Troubleshooting与IO相关的等待:数据库性能调优方面一项关键的方法就是响应时间分析。找出时间都花费在数据库的哪些环节。时间是性能调优中最重要的属性。Troubleshooting I/O-related waitsA critical activity in Database Performance Tu翻译 2013-10-04 20:04:40 · 1833 阅读 · 0 评论 -
Win7 64bit安装Oracle 10g Server的报错
今天一名新员工问在win7 64bit安装Oracle 10g Server时第一步就报错的问题。双机setup.exe,一个黑屏闪过,在界面中输入SYS等的用户名密码以及安装路径后下一步,直接报“未知”的错误。黑屏的内容显然很关键,于是从cmd中运行setup.exe,抓到报错内容:“在 oraparam.ini 中未找到先决条件检查,不执行系统先决条件检查。准备原创 2013-09-18 21:54:25 · 3766 阅读 · 0 评论 -
使用Oracle安装账户登录数据库
如果Linux或Unix平台,安装了Oracle,而且有root账号,则使用“su Oracle安装账户”的方式,sqlplus登录到数据库,这种方式是最可靠的。正如@dbsnake所说,”主要是Oracle软件过于复杂,很多功能、脚本都是只能以Oracle软件的安装用户来执行才可以。当然,Oracle软件的安装用户不一定是Oracle,可以是任意的名字(如ora11g等),但关键是要以这个用户来原创 2013-09-19 23:04:08 · 1928 阅读 · 0 评论