Oracle10g性能调整与优化

主要内容:收集性能数据、优化SQL语句和应用程序、调整共享池(Shared Pool)的性能、调整缓冲区高速缓存(Buffer Cache)的性能、调整重做有关的性能、共享(多线程)服务器(MTS)、调整磁盘I/O的性能、调整闩(latch)和锁定(lock)、调整操作系统。

 

第一章            收集性能数据

1.        报警(Alert)日志文件

报警(Alert)日志文件在c:/oracle/admin/erp/bdump目录下:文件名为alert_erp.log

注意报警(Alert)日志文件中的错误信息:

ORA-01652:在临时表空间中没有足够的空闲空间来进行排序操作。

ORA-01653:在表空间中没有足够的空闲空间来存放表。

ORA-01650:在回退段所在的表空间中没有足够的空闲空间来使回退段增长。

ORA-01631:表所占用的空间超过允许的最大值。

Checkpoint Not Complete

Snapshot too old

 

后台进程跟踪文件:也在c:/oracle/admin/erp/bdump目录下。文件名类似于erp_lgwr_2548.trcerp_arc0_2620.trcerp_dbw0_3012.trc

 

用户跟踪文件:

udump目录下:erp_ora_788.trc文件。其中788为该会话所对应的Server Process的编号,可以通过V$process查得。

 

设置用户跟踪

实例级跟踪:init.ora参数SQL_TRACE=TRUE。这种方法会产生大量的系统开销。

用户级跟踪:

SQl>alter session set sql_trace=true;

SQl>alter session set sql_trace=false;

 

DBA跟踪:

SQL>exec sys.dbms_system.set_sql_trace_in_session(10,87,true);

SQL>exec sys.dbms_system.set_sql_trace_in_session(10,87,false);

10为会话编号,87为会话序列号。

 

限制用户跟踪文件的大小:init.ora参数 MAX_DUMP_FILE_SIZE

 

2.        性能优化视图

v$sysstat:数据库启动以来的统计数据。

v$system_event:系统中所有会话发生过的等待事件。

v$sesstat:所有当前会话的统计数据。

v$session: 所有当前的会话。

V$session_event:已经发生过的等待事件。

V$session_wait:正在发生的等待事件。

V$sgastatSGA内存的统计数据。

              V$waitstat:对自由列表的争用。

 

3.        收集性能数据的两个程序:utlbstat/utlestatSTATSPACK

utlbstat/utlestat的使用

设置timed_statistics参数为TRUE(9i已默认设为TRUE)

 

SQL> @c:/oracle/ora92/rdbms/admin/utlbstat.sql

测量周期。比如1小时、1天等。

SQL> @c:/oracle/ora92/rdbms/admin/utlestat.sql

生成report.txt 文件(C:/oracle/ora92/bin目录下)

report.txt 文件的解释。

主要的信息来自于v$sysstat, v$latch, and v$rollstat

 

STATSPACK工具的使用

创建一个单独的表空间存放性能数据。大小300M左右。

 

注意:STATSPACK收集的是默认数据库的数据。

SQL> @C:/oracle/ora92/rdbms/admin/spcreate.sql

 

PERFSTAT用户登录。

SQL>execute STATSPACK.SNAP;

至少要有两个快照。

 

PERFSTAT用户登录,生成报告文件:

SQL> @c:/oracle/ora92/rdbms/admin/spreport.sql

 

4.        图形性能工具

主要有两个图形性能工具:Performance ManagerPerformance Overview

 

第二章            优化SQL语句和应用程序

1.        测量SQL语句的性能

Tkprof(Trace Kernel Profile)工具的使用

功能:测量SQL语句的性能。

 

c:/> tkprof  c:/oracle/admin/ERP/udump/erp_ora_1436.trc c:/bao.txt sys=no  explain=scott/tiger@erp

sys=no的含义:不包含递归SQL语句(即访问数据字典的隐含语句)

 

SQL语句的处理要经过三个阶段:ParseExecuteFetch

需要优化的SQL语句:

占用过多的CPU时间。

ParseExecuteFetch阶段的时间太长。

从磁盘读太多的数据块,而从内存中读很少的数据块。

访问许多数据块,但只返回几条数据。

 

Top SQL 的使用

Top SQL用来代替Tkprof

Top SQL可以找出哪些SQL语句的性能差,需要优化。

Top SQL 中的数据来源于V$SQL

 

Top Sessions的使用

Top Sessions可以找出哪些会话占用较多的资源。

 

2.        SQL语句的解释计划(EXPLAIN PLAN)

通过解释计划,可以找出SQL语句性能低的原因。

 

SQL ScratchPad来生成SQL语句的解释计划:

 

用命令来生成SQL语句的解释计划:

先检查sys用户下是否有plan_table(9i中已经有了这个表),如果没有,执行c:/oracle/ora92/rdbms/admin/utlxplan.sql脚本。

 

SQL>explain plan for SELECT e.empno, e.ename, d.deptno, d.loc

FROM scott.emp e, scott.dept d WHERE e.deptno = d.deptno;

注意要commit

 

查询执行计划:

SQL>select lpad('  ',4*(level-2)) || operation || '  ' || options || '  ' || object_name "EXECUTION_PLAN" from plan_table start with id =0 connect by prior id = parent_id;

 

3.        STATSPACK报告中的SQL语句性能

SQL ordered by Gets(Gets排序的SQL语句)

SQL ordered by Reads(Reads排序的SQL语句)

SQL ordered by Executions(Executions排序的SQL语句)

SQL ordered by Parse Calls(Parse Calls排序的SQL语句

 

4.        Oracle优化方式

优化方式:基于rulecost.

 

基于rule时的优化等级:根据语法和表结构优化

1        Single row by rowid 

2        Single row by cluster join 

3        Single row by hash cluster key with unique or primary key 

4        Single row by unique or primary key 

5        Cluster join 

6        Hash cluster key 

7        Indexed cluster key 

8        Composite key 

9        Single-column indexes 

10      Bounded range search on indexed columns 

11      Unbounded range search on indexed columns 

12      Sort-merge join

13      MAX or MIN of indexed column

14      ORDER BY on indexed columns

15      Full table scan

SELECT empno   FROM emp  WHERE ename = 'CHUNG'    AND sal > 2000;语句为例说明访问路径 。分析应在哪个字段上创建索引?

缺点:小表的全表扫描比索引效率高,索引字段值的差异性小。

 

基于cost时的优化根据表和索引的统计信息优化,优先采用。

根据表和索引的统计信息包括:

每个表或索引的大小。

每个表或索引所包括的数据行数。

每个表或索引所使用的数据块数量。

每个表行的字节数。

索引字段值的差异性(基数)

 

5.        统计信息的创建

SQL> ANALYZE TABLE employee COMPUTE STATISTICS;

SQL> ANALYZE INDEX employee_last_name_idx COMPUTE STATISTICS;

 

查询统计信息,可用图形界面或DBA_TABLES

 

SQL> ANALYZE TABLE employee DELETE STATISTICS;

 

如果表或索引的数据量很大时,可以使用样本来创建统计信息:

SQL> ANALYZE TABLE employee ESTIMATE STATISTICS;

默认的样本大小为1064行。

 

SQL> ANALYZE TABLE employee ESTIMATE STATISTICS

SAMPLE 500 ROWS;

SQL> ANALYZE TABLE employee ESTIMATE STATISTICS

SAMPLE 35 PERCENT;

 

创建字段的统计信息:

SQL> ANALYZE TABLE employee ESTIMATE STATISTICS

FOR COLUMNS employee_id  SIZE 200;

SIZE的默认值是75。可以是1254

 

字段上的数据假设是正态分布。

直方图:SQL> ANALYZE TABLE finaid COMPUTE STATISTICS FOR COLUMN award SIZE 100;

 

用图形界面创建统计信息。

 

优化提示:SQL> SELECT /*+ FIRST_ROWS  */  * FROM hr.employees;

其它优化提示有:RULEFULL SALES(访问SALES) INDEX SALES_ID_PKPARALLEL

 

6.        设置优化模式

init.ora参数OPTIMIZER_MODE

CHOOSERULEFIRST_ROWS(提高响应时间)ALL_ROWS(提高吞吐量)

 

7.        索引

B-树索引: 适合建在重复值少的字段。

索引的统计信息,索引B-树的高度(建议<4)

 

SQL> ANALYZE INDEX employee_last_name_idx VALIDATE STRUCTURE;

SQL> SELECT (DEL_LF_ROWS_LEN/ LF_ROWS_LEN) * 100 “Wasted Space” FROM index_stats WHERE NAME= “EMPLOYEE_LAST_NAME_IDX” ;

建议:索引的空闲空间(<20)

 

重组索引:

SQL> alter index scott.pk_dept rebuild online;

SQL> alter index scott.pk_dept coalesce;

 

压缩B树索引:适合于索引字段重复值多的情况

SQL>ALTER INDEX employee_last_name_idx  REBUILD COMPRESS;

 

位图(bitmap)索引:适合建在于重复值多的字段。

位图索引不适合于建在频繁进行insertupdatedelete的表上。这些操作的性能代价太高。位图索引适合于数据仓库和DSS

优化位图索引的init.ora参数:SORT_AREA_SIZEPGA_AGGREGATE_TARGET

淘汰的init.ora参数:CREATE_BITMAP_AREA_SIZEBITMAP_MERGE_AREA_SIZE

 

函数索引

必须要把init.ora参数QUERY_REWRITE_ENABLE设成TRUE,才能创建函数索引。

 

SQL>SELECT last_name,first_name FROM employees

WHERE  UPPER(first_name)=’SMITH’;

 

SQL> CREATE INDEX hr.employee_first_name_upper_idx

ON hr.employees(UPPER(first_name));

   

SQL> SELECT * FROM sales where (price * units) > 10000;

SQL> CREATE INDEX sales_total_sale_idx

ON sales (price * units) TABLESPACE INDX;

 

反键索引:适用于序列字段。

反键索引只适用于=!=查询。使用Between>< 查询不会使用反键索引优化。

 

8.        优化应用程序

 

索引组织表(IOT)

分区表

:索引簇和散列簇。

 

9.        使用 SQL Analyze

例子:SELECT department_name, department_id

      FROM hr.departments WHERE  department_id NOT IN (SELECT department_id FROM hr.employees)

 

使用Index Tuning Wizard

 

10.   并行查询

并行查询可以优化:表扫描、join语句、sortnot ingroup byselect distinctunion and union all aggregationPL/SQL functions order by create table as select create index rebuild index insert ... selectenable constraintcuberollup

用在多CPU和磁盘阵列。

表和索引的并行度。

ALTER TABLE emp PARALLEL 4;

ALTER INDEX iemp PARALLEL;

SELECT /*+ PARALLEL(emp,4) */ COUNT(*) FROM emp ;

 

调整开发系统和生产系统。

应用程序、SQL、内存、I/O、锁定、OS

 

第三章            调整共享池(Shared Pool)的性能

1.        监视共享池的性能

共享池由library cachedictionary cache组成。采用LRU(Least Recently Used)算法管理。library cache用于缓存执行的SQL语句和PL/SQL程序。dictionary cache用于缓存数据字典。

共享池有关的数据字典:V$SQLV$SQLAREAV$SQLTEXTV$SQL_PLAN(V$session)

 

测量library cache的命中率:V$librarycache

SQL>select namespace,gethitratio,pinhitratio,reloads,invalidations

from v$librarycache where namespace in (‘SQL AREA’,’TABLE/PROCEDURE’,’BODY’,’TRIGGER’);

 

SQL AREA部分的gethitratio pinhitratio > 90%

 

GETS(语法分析)

PINS(执行)

RELOADS(SQL语句需要重新语法分析)

INVALIDATIONS(SQL语句所引用的表结构发生变化,或视图重新编译)

 

select SUM(reloads)/SUM(pins) “Reload Ratio” from V$librarycache;

 

重新装载率Reload Ratio < 1%

 

使用STATSPACK来监视library cache

使用REPORT.TXT来监视library cache

使用Performance Manager(内存、数据库例程、SQL)来监视library cache

 

SGA内存的经验公式。

SGA= 55% 物理内存

Shared Pool = 45% SGA

Buffer cache = 45% SGA

Redo Log Cache = 10% SGA

 

测量dictionary cache的命中率:V$rowcache

select 1- (SUM(getmisses)/SUM(gets)) “Data Dictionary Hit Ratio” from V$rowcache;

Data Dictionary Hit Ratio”的值要 > 85%

使用STATSPACK来监视dictionary cache

使用REPORT.TXT来监视dictionary cache

 

2.        提高共享池性能的方法

加大共享池的大小:init.ora参数shared_pool_size(动态参数)。注意参数sga_max_size

 

为大型PL/SQL程序设置保留内存:防止其它SQL语句从内存中移走。

init.ora参数SHARED_POOL_RESERVED_SIZE(建议值:10% shared_pool_size)

 

销定(Pin)程序:DBMS_SHARED_POOL.KEEP(deposit)

鼓励代码重用:在SQL语句中使用变量。

       例如:SELECT * FROM EMP WHERE ename = ‘Smith’;

             SELECT * FROM EMP WHERE ename= ‘John’;

       改写为:

        v_ename = ‘Smith’;

Select * from emp where ename =v_ename;

 

v_ename = ‘John’;

Select * from emp where ename =v_ename;

 

调整共享池有关的init.ora参数

OPEN_CURSORS:建议值500

CURSOR_SPACE_FOR_TIME:建议值TRUE

SESSION_CACHED_CURSORS:建议值TRUE

CURSOR_SHARING:默认值为EXACT。建议设成SIMILARFORCE

 

第四章            调整缓冲区高速缓存(Buffer Cache)的性能

1.        Buffer Cache的工作原理

Buffer Cache由数据块组成。

LRU列表:MRU  ………………. LRU(全表扫描FTS放在LRU端。)

缓冲区块的状态:FreePinnedCleanDirty

Dirty ListWrite List(写列表)

 

数据库写进程DBW0将缓冲区高速缓存中的数据写到数据文件中。

 

2.        测量Buffer Cache的性能

测量Buffer Cache的命中率:

SQL> select 1-((physical.value – direct.value – lobs.value)/logical.value) “Buffer Cache Hit Ratio” from V$SYSSTAT physical, V$SYSSTAT direct,V$SYSSTAT lobs, V$SYSSTAT logical where physical.name = ‘physical reads’

And direct.name = ‘physical reads direct’ and

lobs.name = ‘physical reads direct (lob)’

And logical.name = ‘session logical reads’;

Buffer Cache Hit Ratio”的值要 > 90%

 

使用STATSPACK来监视Buffer Cache

使用REPORT.TXT来监视Buffer cache

  

非命中率指标:Free Buffer Inspected(V$sysstat)

Free Buffer WaitsBuffer Busy Waits(V$system_event)

使用Performance Manager(数据库例程)来监视Buffer Cache

 

3.        提高缓冲区高速缓存性能的方法

加大Buffer Cache的大小:init.ora参数DB_CACHE_SIZE(动态参数)

 

使用Buffer Cache Advisory功能决定Buffer Cache的大小:

首先将init.ora参数DB_CACHE_ADVICE设成ON,然后查询V$DB_CACHE_ADVICE

 

使用多个缓冲区池:

Keep Pool: DB_KEEP_CACHE_SIZE

Recycle Pool:DB_RECYCLE_CACHE_SIZE

Default Pool: DB_CACHE_SIZE

 

在内存中缓存表: 表的CACHE选项,对优化小表的全表扫描。

   

正确创建索引。

 

4.        调整Large PoolJAVA POOL

Large Pool用于共享服务器、RMAN、并行查询、DBWR的从属进程。

Large Pool的大小通过init.ora参数Large_pool_size设置。默认为8M

V$sgastat中监视free memory的值:

SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘large pool’;

    

JAVA_POOL池的默认大小为32M。对于大型Java应用程序,JAVA_POOL池的大小应大于50M

init.ora参数java_pool_size

V$sgastat中监视free memory的值。

SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘java pool’;

 

第五章            调整重做有关的性能

Oracle重做有关的组件包括:Redo Log BufferOnline Redo LogLGWRArchive LogCheckpointArch0

 

1.        监视Redo Log Buffer的性能

Redo Log Buffer不采用LRU(Least Recently Used)算法管理。

当下列事件发生时,Redo Log Buffer的内容存盘:

Commit时、每3秒、空间使用1/3、达到1M、检查点。

 

如果写入Redo Log Buffer的速度超过LGWR存盘的速度,就会因等待而降低性能。

 

监视Redo Log Buffer的重试率(<1%)

Select retries.value/entries.value “Redo Log Buffer Retry Ratio”

From V$sysstat retries, V$sysstat entries

Where retries.name =  ‘redo buffer allocation retries’

And entries.name =  ‘redo entries’;

Redo Log Buffer Retry Ratio”的值要 < 1%

 

Select name,value from V$sysstat where name=’redo log space requests’;

如果该值大,需要增加Redo Log Buffer

 

2.        提高Redo Log Buffer的性能

增加Redo Log Buffer的大小:init.ora参数log_buffer

 

减小重做日志的生成量。(如果设置表的NOLOGGING属性,下列操作不记录在Online Redo Log中:用SQL* Loader的直接路径加载。

NOLOGGING属性还可用于下列SQL语句:CREATE TABLE AS SELECTCREATE INDEXALTER INDEX REBUILDCREATE TABELSPACE)

 

3.        调整检查点进程的性能

两个事件:checkpoint completedlog file switch(checkpoint incomplete)

 

Select * from V$sysstat

background checkpoints startedbackground checkpoints completed

   

使用Alert日志来记录检查点进程 init.ora参数log¬_checkpoint_to_alert

 

使用Performance Manager来测量检查点进程的性能:I/O中的平均灰数据队列长度(如果为0,说明检查点太频繁)

建议调整online redo log的大小,使检查点进程每20-30分钟执行一次。

 

4.        调整联机重做日志文件

使用V$system_event来监视联机重做日志文件的性能:

log file parallel writelog file switch completed

调整联机重做日志文件的方法:与数据文件、控制文件、归档日志文件分开,放在原始设备上。

 

5.        调整归档性能

检查归档进程的性能:通过V$system_event中的log file switch(archiving needed)事件。

检查每个归档进程的状态:V$archive_processes

创建多个归档进程:init.ora参数LOG_ARCHIVE_MAX_PROCESSES(默认为2)

 

第六章            调整磁盘I/O的性能

 

哪些操作会导致磁盘I/O

Buffer cache中的内容写到数据文件。

写回退段。

将数据文件的内容读到Buffer cache中。

Redo log Buffer中的内容写到online redo log中。

online Redo log中的内容归档到 archive log中。

 

1.        调整表空间和数据文件

测量数据文件I/O:使用V$filestat

使用STATSPACK来测量数据文件I/O

使用REPORT.TXT来测量数据文件I/O

使用Performance Manager(I/O)来测量数据文件I/O

 

建议:

不要在SYSTEM表空间存放用户数据。

I/O操作均分到几个数据文件上。(监视数据文件的I/O操作数。)

使用本地管理的表空间。

将数据库文件与其它程序的文件分开。

使用分区表和分区索引。

将大表放在单独的表空间。

创建单独的回退表空间。

创建一个或多个临时表空间。

不要将联机重做日志文件和归档联机重做日志文件放在同一个设备上。

至少将一个控制文件放在一个单独的设备上。

 

检查V$sysstat中的’table scans(long tables)’。

使用init.ora参数DB_FILE_MULTIBLOCK_READ_COUNT(默认为16)来优化表扫描。

 

2.        调整DBW0性能

监视DBWR0性能。

使用V$system_event监视下列事件:buffer busy waitsfree buffer waits

db file parallel writewrite complete waits

 

使用init.ora参数DBWR_IO_SLAVES(优化磁盘I/O)

DB_WRITER_PROCESSES(默认为1,优化Buffer Cache的内部管理)

如果DBWR_IO_SLAVES设为非0值,DB_WRITER_PROCESSES的值无效。

 

3.        调整段I/O

避免动态空间分配。 

 

表的有关存储特性

空闲百分比(PCTFREE):每个对象数据块中为今后更新该对象而保留的空间的百分比。可以输入099之间的值。默认值为10%

已用百分比(PCTUSED)Oracle数据库为该对象的每个数据块保留的已用空间的最小百分比。当一个块的已用空间低于“已用百分比”的值时,则该块将成为插入行的目标。可以输入199之间的值。默认值为40%

最小数量:创建段时已分配的总区数。默认值为1。可以输入1或大于1的值。

SQL> alter table emp allocate extent ;

 

事务处理数量

初始值:在分配给该对象的每个数据块内分配给事务处理条目的初始数量。可以输入12(对于簇和索引)到255之间的值。

最大值:可同时更新分配给对象的数据块的并行事务处理的最大数量。可以输入1255之间的值。

 

自由表

列表:表、簇或索引的每个自由表组的自由表数量。可以输入1或大于1的值。默认值为1

组:表、簇或索引的自由表组的数量。可以输入1或大于1的值。默认值为1

缓冲池。

 

行转移(更新行时超过块的可用空间)和行链接(行的大小超过块的大小)的概念。

使用V$sysstat来监视行转移和行链接:table fetch continued row

 

SQL>analyze table emp compute statistics;

使用DBA_TABLES来查询统计信息。

 

SQL> alter table emp deallocate unused;

SQL> alter table scott.emp move tablespace users;

表的高水位标志High Water Mark(HWM)

1M      10M      100M

 

4.        调整排序IO

哪些SQL语句需要排序操作:order bygroup byselect distinctunion

intersectminusanalyzecreate index、联接。

   V$sysstat。内存排序和磁盘排序(临时表空间中)

监视排序性能(内存排序比例>95%)

   使用init.ora参数SORT_AREA_SIZE(512K)SORT_AREA_RETAINED_SIZE

pga_aggregate_targetWORKAREA_SIZE_POLOCY

 

使用Performance Manager(数据库例程)来监视排序。

   如何避免排序:SQL语法、正确索引、创建索引、ANALYZE

v$sort_segmentv$sort_usage

使用Tablespace Map

使用 Reorg Wizard

 

5.        优化回退段

一个回退段的区间可以分配给多个事务,回退段的一个数据块只能分配给一个事务。

 

测量回退段事务表的争用

select * from V$system_event where event like ‘%undo%’;

回退段事务表的等待时间应接近于0

 

select * from V$waitstat;

V$rollstat 

回退段事务表访问的成功率应>95%

 

回退段区间争用

V$waitstatV$sysstat

回退段事务环绕(Wrap):一个事务占用的回退段从一个区间扩展到另一个区间。

 

回退段的动态区间分配

V$system_event

使用V$rollstat来监视回退段的使用情况。

使用Performance Manager(后台进程)来测量回退段。

 

提高回退段的性能

Oracle9i中的撤消表空间。

建议:每四个事务使用一个回退段,最多不超过20个回退段。

      会退段的区间大小512k,最小区间数20

明确分配回退段给事务。

SQL> set transaction use rollback segment rbs01;

最小化回退段活动:EXPORTIMPORTSQL* Loader时加commit=y参数。

     

Oracle9i中的撤消表空间。

 

第七章            共享(多线程)服务器(MTS

1.        共享服务器

SP1    SP2      SP3                SP10

 

Dispatcher1     2   …….

 

UP1    UP2       UP3 ……………….. UP100

dispatchersmax_dispatchers(5)shared_server(1)

max_shared_server(20)Sessions(170)circuits(170)mts开始的参数已被淘汰。

共享服务器的联接不能关闭和启动数据库。

客户端的联接方式。(SERVER=DEDICATED)

SQL>alter system set MTS_SERVERS=5;

     

测量共享服务器的性能

V$shared_serverV$queue   是否需要生成更多的Shared Server进程。

V$dispatcher   是否需要增加更多的 Dispatcher进程。

 

Net8的高级配置

多路复用:此功能允许通过单个传输协议连接以集中方式多路传送多个客户网络会话。

连接共享(连结池)(释放物理连接,保持逻辑连接)

入网连接超时(以 记)

超时(以 秒记),用于入网网络连接。如果指定超时的数值为0,则使用缺省值(10 )

 

第八章            调整闩(latch)和锁定(lock)

1.        调整闩(latch)

闩可以作为内存性能的另一个指标。

1.:等待闩和立即闩(V$lacth。共239)

数据库中是否存在闩争用V$system_event("latch free")

几个重要的闩:shared poollibrary cachecache buffers lru chain

cache buffers chainsredo allocationredo copy

select * from V$latch where misses!=0;

 

2.自由列表:V$system_event("buffer busy waits")

V$waitstat

测量哪些段存在自由列表争用:dba_segmentsV$session_wait

alter table scott.emp storage (freelists 5);

自动段空间管理的表空间。

 

2.        调整锁定

DML(TM)DDL(TX)

事务。

其它。

自动。

1.update t1     2. drop table t1

2.update t1     2. select t1

3.update t1     2. update t1

 

锁定模式:

RX:对表UPDATEINSERTDELETE时获得。

RS:对表SELECT FOR UPDATE时获得。

S: LOCK TABLE EMP IN SHARE MODE; 可以是多个用户获得。

SRX: LOCK TABLE EMP IN SHARE ROW EXCLUSIVE MODE; 只能是一个用户获得。

外键约束时的锁定。死锁。

Lock Monitor监视锁定。

 

第九章            调整操作系统

1.        调整操作系统

观察内存和CPU利用率(<90%)

2.        使用Resource Manager

资源使用者组。一个用户可以是多个资源使用者组的成员,但一次只有一个组是活动的。

确定用户的CPU利用率。(v$sesstatv$sysstat)

资源计划:由资源计划指令组成。一次只能有一个资源计划是活动的(V$rsrc_plan)

alter system set resource_manager_plan=system_plan;

select username,RESOURCE_CONSUMER_GROUP from V$session;

子计划。

资源计划调度。

 

使用Expert进行优化

第一步:创建一个优化会话(tuning session)

第二步:确定优化范围(scope)

第三步:收集数据。

第四步:复查(review)已收集到的数据。

第五步:生成建议案。建议报告。

第六步:创建实现建议所需的SQL脚本。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值