随笔分类 - Oracle 性能优化
摘要:关系数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理。表的三种关联方式:nested loop:从A表抽一条记录,遍历B表查找匹配记录,然后从a表抽下一条,遍历B表........就是一个二重循环hash join:将A表按连接键...
阅读全文
摘要:索引扫描(Index scan) 我们先通过index查找到数据对应的rowid值(对于非唯一索引可能返回多个rowid值),然后根据rowid直接从表中得到具体的数据,这种查找方式称为索引扫描或索引查找(index lookup)。一个rowid唯一的表示一行数据,该行对应的数据块是通过一次i/...
阅读全文
摘要:1.Oracle访问表的方式 全表扫描、通过ROWID访问表、索引扫描2.全表扫描(Full Table Scans, FTS) 为实现全表扫描,Oracle顺序地访问表中每条记录,并检查每一条记录是否满足WHERE语句的限制条件。ORACLE采用一次读入多个数据块(database block...
阅读全文
摘要:一、视图包含当前系统oracle运行的所有进程信息。常用于将session与进程(oracle进程,操作系统进程)之间建立联系。 ColumnDatatypeDescriptionADDRRAW(4 | 8)进程对象地址PIDNUMBERoracle进程IDSPIDVARCHAR2(12)操作系统进程IDUSERNAMEVARCHAR2(15)Operating system process username. Any two-task user coming across the network has "-T" appended to the username.SERI
阅读全文
摘要:一、视图V$SESSION_LONGOPS显示运行超过6秒的操作的状态。包括备份,恢复,统计信息收集,查询等等 ColumnDatatypeDescriptionSIDNUMBERSession 标识符SERIAL#NUMBERSession 序列号OPNAMEVARCHAR2(64)操作简要说明TARGETVARCHAR2(64)操作运行所在的对象TARGET_DESCVARCHAR2(32)目标对象描述SOFARNUMBER至今为止完成的工作量TOTALWORKNUMBER总工作量UNITSVARCHAR2(32)工作量单位START_TIMEDATE操作开始时间LAST_UPDATE..
阅读全文
摘要:一、视图V$SESSION_WAIT显示了session的当前等待事 ColumnDatatypeDescriptionSIDNUMBERSession identifierSEQ#NUMBERSequence number that uniquely identifies this wait. Incremented for each wait.EVENTVARCHAR2(64)session当前等待的事件,或者最后一次等待事件P1TEXTVARCHAR2(64)Description of the first additional parameterP1NUMBERFirst add...
阅读全文
摘要:每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等 ColumnDatatypeDescriptionSADDRRAW(4 | 8)Session addressSIDNUMBERSession identif...
阅读全文
摘要:v$locked_object视图列出当前系统中哪些对象正被锁定 ColumnDatatypeDescriptionXIDUSNNUMBER回滚段号XIDSLOTNUMBER槽号XIDSQNNUMBER序列号OBJECT_IDNUMBER被锁对象IDSESSION_IDNUMBER持有锁的会话IDORACLE_USERNAMEVARCHAR2(30)持有锁的Oracle用户名OS_USER_NAMEVARCHAR2(30)持有锁的系统用户名PROCESSVARCHAR2(12)操作系统进程号LOCKED_MODENUMBER锁模式示例: 1 --对表 t1 加锁 2 3 SQL> sel
阅读全文
摘要:v$lock显示数据库当前持有锁情况 ColumnDatatypeDescriptionSIDNUMBER会话IDTYPEVARCHAR2(2)表示锁的类型。值包括TM,TX,等ID1NUMBER对于TM锁:ID1表示被锁定表的object_id 可以和dba_objects视图关联取得具体表信息;对于TX锁:ID1以十进制数值表示该事务所占用的回滚段号和事务槽slot number号ID2NUMBER对于TM锁:ID2 值为0;对于TX锁:ID2 以十进制数值表示事务槽被重用的次数LMODENUMBER持有锁模式:0- none1- null (NULL)2- row-S (SS)...
阅读全文
摘要:用户进程跟踪1 分为 基于会话级别跟踪和 实例级别跟踪;2 会话级别跟踪又包括 当前会话跟踪和 非当前会话跟踪3 跟踪文件位置由user_dump_dest设定,大小由max_dump_file_size 决定4 生成的跟踪文件名为_ora_.trc 其中SID为实例名称,SPID为系统进程号5 通过v$session中的SQL_TRACE,SQL_TRACE_WAITS,SQL_TRACE_BINDS展示了一个会话的跟踪状态注: 在专用服务器模式中:仅仅需要标识该会话并为该会话启用跟踪(专用模式为一对一模式,即一个用户进程对应一个服务器进程) 在共享模式中:对任何一个会话的跟踪会分布到每个.
阅读全文
摘要:一.SGA的组成: 1 自动 SGA 管理后,Oracle 可以自动为我们调整以下内存池的大小: 2 shared pool 3 buffer cache 4 large pool 5 java pool 6 streams pool 7 需要手动调整的参数 8 log buffer 9 db_nk_cache_size10 db_keep_cache_size11 db_recycle_cache_size1.1 shared pool调整1.1.1查询SGA的大小1 SQL> show paramete...
阅读全文
摘要:安装Oracle的时候,可以参考Oracle 的安装文档,来设置相关内核参数的值,但是有些参数的值还是需要根据我们自己的情况来进行调整。注:不同系统的参数不同,本篇针对linux。一。Linux 系统下的核心参数 1 # vi /etc/sysctl.conf 2 3 kernel.shmmax = 2147483648 4 kernel.shmall = 2097152 5 kernel.shmmni = 4096 6 kernel.sem = 250 32000 100 128 7 fs.file-max = 65536 8 net.ipv4.ip_local_port_range ...
阅读全文
摘要:生成SQL的执行计划是Oracle在对SQL做硬解析时的一个非常重要的步骤,它制定出一个方案告诉Oracle在执行这条SQL时以什么样的方式访问数据:索引还是全表扫描,是Hash Join还是Nested loops Join等。先看一个例子:-bash-3.00$ sqlplus hr/hr123 #以hr用户登录数据库SQL> set autotrace traceonly; --开启autotrace功能SQL> select 2 t1.first_name,last_name 3 from employees t1, jobs t2 4 where t1.j...
阅读全文
摘要:AUTOTRACE是一个SQL*Plus工具,用于跟踪SQL的执行计划,收集执行时所耗用资源的统计信息。系统账户本身具有AUTOTRACE,其他账户需要通过手动赋予一. 用系统账户登录(DBA) 1 SQL> set autotrace traceonly 2 SQL> select * from hr.jobs; 3 4 19 rows selected. 5 6 7 Execution Plan 8 ---------------------------------------------------------- 9 Plan hash value: 94405691110
阅读全文
摘要:对于 10gR2 而言,基本上可以分成几类:Range(范围)分区Hash(哈希)分区List(列表)分区以及组合分区:Range-Hash,Range-List。一、When 使用 Range 分区 Range 分区呢是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存...
阅读全文
摘要:1. 查看消耗内存最多的sql(v$sqlarea)1 select b.username ,2 a.buffer_gets , --所有子游标运行这条语句导致的读内存次数3 a.executions, --所有子游标的执行这条语句次数4 a.buffer_gets/decode(a.executions,0,1,a.executions),--这条语句执行一次读取内存次数5 a.sql_text SQL6 from v$sqlarea a,dba_users b7 where a.parsing_user_id = b.user_i...
阅读全文
摘要:Extents An extent is a logical unit of database storage space allocation consisting of a number ofcontiguous data blocks. One or more extents make up a segment. When the existing space in asegment is completely used, the Oracle server allocates a new extent for the segmentAdvantages of Large Extent.
阅读全文
摘要:数据块 In an Oracle database, the block is the smallest unit of data file I/O and the smallest unit ofspace that can be allocated. An Oracle block consists of one or morecontiguous operatingsystem blocks.标准块大小在创建数据库时使用DB_BLOCK_SIZE参数设置;除非重新创建该数据库,否则无法更改用于SYSTEM和TEMPORARY表空间DB_CACHE_SIZE指定标准块大小的DEFAU...
阅读全文
摘要:使用PARALLEL_INDEX可以在索引上开并发,先来看看文档中的描述:The PARALLEL_INDEX hint instructs the optimizer to use the specified number of concurrent servers to parallelize index range scans for partitioned indexes. 这里说的是PARALLEL_INDEX可以用在分区索引上开并发,其实还有一种就情况是,当查询走index fast full scan时,也可以开并发1、分区索引: 1 SQL> select index_n
阅读全文
摘要:什么是并行 并行是Oracle为了提高大数据量的运算效率而提供多进程协作技术,它可以让多个CPU同时处理一个计算任务,充分使用系统资源,提高计算效率。什么操作支持并行 大部分的DML(insert/update/delete/merge)、DDL、Query都支持并行操作。什么情况下需要启用并行 并不是所有的SQL都应该使用并行。要使用并行需满足以下两个条件,否则结果可能适得其反: 1) 机器有充分的空闲资源(CPU、内存等) 2) 参与运算的数据量大。在当前系统初定于参与运算数据量大于10GB或者SQL运行时间超过30分钟可考虑使用并行。如何启用并行 可以用hint、alter ...
阅读全文
浙公网安备 33010602011771号