Oracle数据库的优化之数据库磁盘I/O
2009-05-12 13:13:56 来源:WEB开发网1. 检查V$WAITSTAT,确定DATA BLOCKS的竞争;
2. 检查V$SYSTEM_EVENT,确定BUFFER BUSY WAITS,如果数值高,表明存在竞争;
3. 在这种情况下,检查V$SESSION_WAIT查询每个缓冲区的忙等待、FILE、BLOCK及ID;
4. 使用如下查询得到实体和FREE LIST的名称:
SELECT SEGMENT_NAME,SEGMENT_TYPE FROM DBA_EXTENTS WHERE FILE_ID=file AND BLOCK BETWEEN block_id AND block_id+blocks ;
5. 使用如下查询找到FREE LIST:
SELECT SEGMENT_NAME,FREELISTS FROM DBA_SEGMENTS WHERE SEGMENT_NAME=segment AND SEGMENT_TYPE=type ;
增加Free List
要减少表的Free list的竞争, 可以使用freelists参数重新创建表,方法有:
1. 删除旧表,重新创建表;
2. 通过从旧表选择数据插入到新表,删除旧表,重命名,完成表的重新创建;
3. 使用Export 和Import,export旧表,删除旧表,import该表。
建立和优化数据库文件的方针:
为表和索引创建不同的表空间。
将表和索引的表空间放在不同的磁盘上。
将REDO日志和回滚段放在不同的磁盘上。
将Oracle可执行文件和数据库文件放在单独的磁盘上。
确定最常用的表、索引,以及他们的表空间,并放在单独的磁盘上。
不要在Oracle数据磁盘上安装其他第三方软件。
监控磁盘I/O的方法:
用以下查询语句可以得到各表空间读写次数,phyrds+phywrts 即是磁盘I/O量。应按前面讲的方针调整数据文件的分布方式。
select name,phyrds,phywrts from v$datafile,v$filestat where v$datafile.file# = v$filestat.file#
结果如下:
NAME PHYRDS PHYWRTS
-------------------------------------------------- ---------- ----------
/u/oracle/OraHome/oradata/pb/system01.dbf 2511 8
/u/oracle/OraHome/oradata/pb/tools01.dbf 5 2
/u/oracle/OraHome/oradata/pb/rbs01.dbf 18 20
/u/oracle/OraHome/oradata/pb/temp01.dbf 4 2
/u/oracle/OraHome/oradata/pb/users01.dbf 45 5
/u/oracle/OraHome/oradata/pb/indx01.dbf 4 2
/u/oracle/OraHome/oradata/pb/drsys01.dbf 4 2
7 rows selected.
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接