- 浏览: 758145 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
di1984HIT:
哈哈,都不错。
Linux 环境下SQLPLUS 回退键无法使用处理方法 -
di1984HIT:
还可以查到sql
oracle中查询被锁的表并释放session -
di1984HIT:
呵呵,真的不错。
Oracle数据库经常会遇到CPU利用率很高的情况 -
李君寻:
...
解读java连接db2的四种类型 -
清风123:
dx>=this.length
js删除Array数组中的某个元素
一、定义
1、PCTFREE、PCTUSED使你能控制一个segment里所有数据块里free space的使用。
PCTFREE:一个数据块保留的用于块里已有记录的可能更新的自由空间占block size的最小比例。
PCTUSED:在新记录被插入block里之前这个block可以用于存储行数据和其他信息的空间所占的最小比率。
2、这两个参数的使用
如果创建表的时候指定pctfree=20%,oracle会在这个表的data segment的每个block都保留20%的空间用于已有记录的更新。Block的已使用空间上升到整个block size的80%时,这个block将移出free list;在提交了delete、update之后,oracle server处理这条语句并检查对应block的已使用空间是否低于PCTUSED,如果是,则这个block放进free list。
3、PCTFREE、PCTUSED的设定
• PCTFREE
– Default 10
– Zero if no UPDATE activity
– PCTFREE = 100 × upd / (average row length)
• PCTUSED
– Default 40
– Set if rows deleted
– PCTUSED = 100 – PCTFREE – 100 × rows × (average row length) / blocksize
其中,upd : the average amount added by updates, in bytes。This is determined by subtracting the average row length of intercurrent average row length;
average row length:在运行了analyize命令之后,这个值可以从dba_tables中的avg_row_len列中获得。
rows : the number of rows to be deleted before free list maintenance occurs。
4、Delete、update可以增加block的自由空间,但是释放出来的空间有可能是不连续的,oracle在下列情况下会对碎片进行整理:一个block有足够的自由空间容纳row piece,但是由于每个碎片都较小以至这个row piece不能存放在一个连续的section中。
二、Migration和Chaining
1、如果一行的数据太大以至一个单独的block容纳不下,会产生两种现象:
A、Chaining:行数据太大以至一个空block容纳不下,oracle会将这一行的数据存放在一个或多个block 组成的block chain中,insert、update都可能导致这个问题,在某些情况下row chaining是不能避免的。
B、Migration:一次update操作可能导致行数据增大,以至它所在的block容纳不下,oracle server会去寻找一个有足够自由空间容纳整行数据的block,如果这样的block存在,oracle server把整行移到新的block,在原位置保存一个指向新存放位置的镜像行,镜像行的rowid和原来的rowid一致。
Chaining、Migration的弊端:insert、update的性能降低,索引查询增加了IO次数。
2、检测migration和chaining:
Analyize table table_name compute statistics;[Page]
Select num_rows,chain_cnt from dba_tables where table_name=’...’;
查询镜像行:
Analyize table table_name list chained rows;
ORA-01495: 未找到指定的链接行表(注:如果 Chained_rows 表不存在,会有以上错误。可以通过@?\rdbms\admin\utlchain.sql 脚本创建该表。)
Select owner_name,table_name,head_rowid from chained_rows where table_name=’...’;
产生Migration的原因可能是由于PCTFREE设置的太低以至没有保留足够的空间用于更新。
可以通过增加PCTFREE的值避免行镜像产生。
3、消除镜像行的步骤:
运行analyize table ... list chained rows;
复制镜像行到另一个表tmp;
从源表中删除这些行;
从tmp中将这些行插回到源表中。
脚本:
/* Get the name of the table with migrated rows */
accept table_name prompt ’Enter the name of the table with migrated rows: ’
/* Clean up from last execution */
set echo off
drop table migrated_rows;
drop table chained_rows;
/* Create the CHAINED_ROWS table */
@?/rdbms/admin/utlchain
set echo on
spool fix_mig
/* List the chained & migrated rows */
analyze table &table_name list chained rows;
/* Copy the chained/migrated rows to another table */
create table migrated_rows as
select orig.* from &table_name orig, chained_rows cr
where orig.rowid = cr.head_rowid
and cr.table_name = upper(’&table_name’);
/* Delete the chained/migrated rows from the original table */
delete from &table_name
where rowid in ( select head_rowid from chained_rows );
/* Copy the chained/migrated rows back into the original table */
insert into &table_name select * from migrated_rows;
spool off
使用这个脚本时,必须将涉及到的外键约束去掉。
发表评论
-
ORA-01950: no privileges on tablespace "example_tbs"
2012-04-20 14:38 1365原因:用户没有此表空间分配EXTENT的权限 可以两个 ... -
Oracle 数据字典视图(V$,GV$,X$)
2010-06-10 11:11 2250常用的几个数据字典: ... -
oracle中查询被锁的表并释放session
2010-06-10 10:10 2717在开发项目中经常发现有人锁住表不放 我们可以通alter s ... -
在oracle中通过connect by prior来实现递归查询
2010-05-06 13:52 1576connect by 是结构化查询 ... -
oracle中跟用户及权限有关的系统表
2010-04-20 15:54 14451.查看所有用户: select * from dba_u ... -
oracle 物化视图
2010-04-20 09:24 2302优势 可以提 ... -
oracle 查看跟踪文件
2010-03-24 09:35 1225sql_trace 和10046 事件 首先 SQL> ... -
v$lock视图
2010-03-19 15:49 2015v$lock视图SID:Identifier for sess ... -
如何设置Oracle Events以跟踪数据库
2010-03-18 10:33 1771Events事件是Oracle的重要诊断工具及问题解决办法,很 ... -
oracle“SQL Trace”简介
2010-03-17 17:03 1947一、概述 “SQL TRACE”是Oracle提供的用于进行 ... -
Oracle数据库提高命中率及相关优化
2010-03-15 17:06 2029本文是关于Oracle数据库调试与优化方面的文章,主要介绍Or ... -
多种方法查看Oracle SQL执行计划
2010-03-15 16:38 2250一.在线查看执行计划表如果PLAN_TABLE表不存在,执行$ ... -
Oracle数据库经常会遇到CPU利用率很高的情况
2010-03-15 16:32 16836Oracle数据库经常会遇到CPU利用率很高的情况,这种时候大 ... -
oracle hint提示优化SQL
2010-03-09 16:47 1630在优化调整数据库的SQL时候,经常会用到HINT提示.目前OR ... -
oracle问题 SP2-0613: 无法验证 PLAN_TABLE 格式或实体
2010-03-05 11:40 1852此错误表示还没有创建 plan_table 表 先创建 ... -
Oracle truncate table 与 delete tabel的区别
2010-03-04 13:56 2004一、 1.delete产生rollback,如果删除大数据 ... -
Oracle 索引的分类
2010-03-02 17:54 1732逻辑上: Single column 单列索引Concaten ... -
oracle 锁等待的诊断及排除
2010-03-02 16:38 2726在ORACLE中,为了保证数据的一致性,在对数据库中的数据进行 ... -
Red Hat Enterprise Linux 5 上安装RAC环境
2010-01-29 16:36 1185oracle 10 在 Red Hat Enterprise ... -
oracle9i 启用Partition功能
2009-11-25 17:44 14801、确定安装oracle9i企业版本 select * fr ...
相关推荐
五、性能调整策略 1. **CBO与RBO**:选择合适的查询优化器模式。CBO(Cost-Based Optimizer)基于成本,RBO(Rule-Based Optimizer)基于规则,CBO通常更智能,但需要准确的统计信息。 2. **统计信息维护**:定期...
遵循一些基本规则,比如避免大表全表扫描,有效利用索引,优化子查询,调整PCTFREE和PCTUSED参数,选择合适的优化器,并考虑并行查询。 - 索引的使用至关重要,但要注意索引在某些情况可能不起作用,如数据类型隐形...
+ 调整PCTFREE和PCTUSED等存储参数优化插入、更新或者删除等操作。 + 考虑数据库的优化器。 + 考虑数据表的全表扫描和在多个CPU的情况下考虑并行查询。 四、SQL语句优化的具体方法 * 索引的使用:尽量使用索引...
优化规则包括避免大表和全表扫描,充分利用索引以加速查询,审查子查询并考虑转换为连接查询,调整存储参数如PCTFREE和PCTUSED,以及根据情况选择合适的优化器和并行查询策略。具体方法中,索引的使用至关重要,应尽...
PCTFREE和PCTUSED等存储参数的调整可以优化插入、更新和删除操作。此外,了解数据库优化器的工作原理,考虑全表扫描与并行查询在多CPU环境下的应用,也是优化的重要部分。 在具体方法上,索引的使用策略应尽可能...
- **SQL语句的优化规则**:避免大表全表扫描、有效利用索引、检查和优化子查询、调整PCTFREE和PCTUSED参数、考虑优化器的选择以及并行查询的应用。 - **SQL语句优化的具体方法**:索引使用是关键,如尽可能使用索引...
Oracle Database 11gR2性能调整与优化是数据库管理员和开发人员必须掌握的关键技能,以确保系统的高效运行和最佳响应时间。Oracle 11gR2版本引入了许多新的特性和改进,旨在提升数据库的性能和可管理性。以下是这个...
遵循一些基本规则可以显著提升查询效率,例如避免大表和全表扫描,充分利用优化索引,优化子查询,调整PCTFREE和PCTUSED存储参数,以及考虑数据库优化器和并行查询。具体方法包括明智地使用索引,避免可能导致索引...
尽量根据实际需要调整数据表的PCTFREE和PCTUSED参数;大数据表删除用truncate table代替delete。 - **PCTFREE**:控制为将来的行的更新操作保留多少的数据块空间。若行的增加操作较少,可将PCTFREE设为较低的值(5...
例如,避免大表的全表扫描,尽可能利用索引来提高查询速度,检查和优化子查询,调整PCTFREE和PCTUSED以优化DML操作,并考虑使用数据库优化器和并行查询。索引的有效使用是关键,但需注意避免数据类型隐形转换、列上...
遵循一些基本规则,如避免大表和全表扫描,合理利用优化索引,检查并重构子查询,调整PCTFREE和PCTUSED以优化DML操作,选择合适的优化器,以及在适当的情况下使用并行查询。具体优化方法包括: 1. 索引使用:尽量...
Oracle 9i是一款由甲骨文公司开发的关系型数据库管理系统,其在性能优化和系统调整方面具有丰富的功能和策略。本文将深入探讨Oracle 9i的优化设计与系统调整的关键知识点,帮助你提升数据库的运行效率和稳定性。 一...
遵循一些基本规则,如避免大表全表扫描,有效利用索引,检查并优化子查询,调整PCTFREE和PCTUSED参数,以及选择合适的优化器和并行查询策略。在实际应用中,索引的使用尤为重要,应尽可能使用索引以提高查询速度,但...
调整PCTFREE和PCTUSED以优化DML操作,选择合适的数据库优化器,并考虑在多CPU环境下使用并行查询。 - **索引的使用**:索引是提高查询速度的关键,但需注意索引在特定情况下的失效,如数据类型转换、数学运算、不...
4. **物理存储结构**:理解数据块、索引块、表空间和段等概念,合理设置表的存储参数,如PCTFREE、PCTUSED等,能有效减少I/O,提高读写速度。 5. **数据库调优工具**:Oracle提供了强大的诊断工具,如SQL*Profiler...
例如,通过调整初始化参数如PCTUSED和PCTFREE来控制空间的预留和重用,避免频繁的扩展和收缩操作。对于高HWM问题,可以通过定期执行`ALTER TABLE ... SHRINK SPACE`来压缩段,降低HWM,重新整理空间。对于Freelist...