数据采集过程中经常会遇到入库慢,解决这个问题则首先需要脚本设计人员对插件的用法,其次要知道如何检查数据库的性能,很多情况下都是数据库本身优化不到位造成的
数据库优化
1:检查数据库sga,pga的使用情况
(1)系统全局域:
SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/3到1/2。
a.共享池:
查看共享SQL区的使用率:
Sql代码 收藏代码
select(sum(pins-reloads))/sum(pins) "Library cache" from v$librarycache;--动态性能表
这个使用率应该在90%以上,否则需要增加共享池的大小。
查看数据字典缓冲区的使用率:
Sql代码 收藏代码
select (sum(gets-getmisses-usage-fixed))/sum(gets) "Data dictionary cache" from v$rowcache;--动态性能表
这个使用率也应该在90%以上,否则需要增加共享池的大小。
修改共享池的大小:
Sql代码 收藏代码
ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
b.缓冲区高速缓存:
查看数据库数据缓冲区的使用情况:
Sql代码 收藏代码
SELECT name,value FROM v$sysstat order by name WHERE name IN(''DB BLOCK GETS'',''CONSISTENT GETS'',''PHYSICAL READS'');
计算出来数据缓冲区的使用命中率=1-(physical reads/(db block gets+consistent gets)),这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。
c.日志缓冲区
查看日志缓冲区的使用情况:
Sql代码 收藏代码
SELECT name, value FROM v$sysstat WHERE name IN (''redo entries'',''redo log space requests'');
查询出的结果可以计算出日志缓冲区的申请失败率:
申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。
d.大型池:
可以减轻共享池的负担,可以为备份、恢复等操作来使用,不使用LRU算法来管理。其大小由数据库的‘共享模式/db模式’如果是共享模式的话,要分配的大一些。
指定Large Pool的大小:
Sql代码 收藏代码
ALTER SYSTEM SET LARGE_POOL_SIZE=64M
2:检查数据库表空间的使用情况
--1、查看表空间的名称及大小
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;
--2、查看表空间物理文件的名称及大小
SELECT tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
FROM dba_data_files
ORDER BY tablespace_name;
3:检查oracle日志
Oracle数据库的日志文件在$ORACLE_BASE/diag/rdbms下面,例如:/opt/oracle/oradb/diag/rdbms/ORACLE_SID/ORACLE_SID/trace
4:检查索引创建,使用情况。有时候字段在重建联合索引情况下会出现查询不走索引,需要使用牵制索引查询
select /*+ INDEX(T_MEDFLOW_INTENT,SYS_C00ADDCODE) */ count(t.addcode)
from T_MEDFLOW_INTENT t
where 1 = 1
5:检查是否存在锁表情况
查看锁表进程SQL语句1:
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
查看锁表进程SQL语句2:
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
杀掉锁表进程:
如有記錄則表示有lock,記錄下SID和serial# ,將記錄的ID替換下面的738,1429,即可解除LOCK
alter system kill session '738,1429';
6:检查归档日志的情况
SELECT created, log_mode, log_mode FROM v$database;
7:检查logfile情况
select * from v$logfile;
8:检查SQL语句的使用情况
select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc
分享到:
相关推荐
Oracle 数据库 性能测试 定义出程序中 执行时间较长的sql语句
Oracle数据库性能测试软件swingbench,是Oracle公司工程师用Java开发的性能测试软件,类似于对数据库进行压力测试,测试响应时间,吞吐量等指标
oracle_数据库性能健康检查脚本,描述常用脚本
适合Linux 64位系统 ,mysql及oracle性能的小工具。 的
主要用于测试oracle数据库的读写性能,尤其是在有磁盘阵列的情况下
Oracle性能测试指标用于查询数据库性能及使用情况
数据库经典压测工具sysbench双版本 sysbench0.5支持oracle sysbench1.1 支持达梦 附详细安装文档,亲测可用
oracle数据库的优化 数据库的优化 2 概述 2 监控数据库的性能: 2 优化数据库磁盘I/O 2 建立和优化数据库文件的方针: 6 监控磁盘I/O的方法: 7 优化回滚段 7 检测回滚段争用: 7 通过以下公式计算等待比率: 8 若...
这是经过多次生产环境实战性能测试工作中得到的脚本设置,用于在测试过程中查询执行性能测试过程中,占用大量查询时间sql的分析
1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration ...
在实际的工作中我们经常会碰到一些Oracle数据库性能较低的问题,当然,引起 Oracle数据库性能较低的原因是多方面的,我们能够通过一些正确的设计和诊断来尽量的避免一些Oracle数据库性能不好,Row Migration (行迁移...
数据库性能测试2种方式,其中一种方式工具
文档包括:测试数据库的建立 ,常见索引介绍 , 有效的利用索引 , 谈索引使用的误区 ,其他索引经验总结 等
ORACLE数据库自身提供有复制功能,只需要进行配置即可实现。 ORACLE提供有三种复制技术: 高级复制(Advanced Replication) 流复制(Streams Replication) 备库(Dataguard) 备库的方式,就是数据库对...
包括SQL和Oracle的性能测试指标 ,希望对于做测试的朋友能有所帮助!
11.5.2将物理Standby数据库转换为快照Standby数据库 11.5.3将快照Standby数据库转换为物理Standby数据库 11.6主备数据库切换 11.6.1 Switchover切换 11.6.2 Failover切换 11.7本章小结 第12章 RAC备份 12.1...
由于直接连接到源数据库和目标数据库,该程序保证了转换过程的高性能。它不使用ODBC或任何其他中间件组件。不需要安装Oracle组件。安装包包括产品到脚本的命令行版本,自动化和计划转换过程。 ---- 此软件为官方 ...