十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Oracle数据库服务器是整个系统的核心 它的性能高低直接影响整个系统的性能 为了调整Oracle数据库服务器的性能 主要从以下几个方面考虑
创新互联专注于开州企业网站建设,响应式网站设计,商城网站建设。开州网站建设公司,为开州等地区提供建站服务。全流程按需定制制作,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
◆ 调整操作系统以适合Oracle数据库服务器运行 Oracle数据库服务器很大程度上依赖于运行服务器的操作系统 如果操作系统不能提供最好性能 那么无论如何调整 Oracle数据库服务器也无法发挥其应有的性能
为Oracle数据库服务器规划系统资源
据已有计算机可用资源 规划分配给Oracle服务器资源原则是 尽可能使Oracle服务器使用资源最大化 特别在Client/Server中尽量让服务器上所有资源都来运行Oracle服务
调整计算机系统中的内存配置
多数操作系统都用虚存来模拟计算机上更大的内存 它实际上是硬盘上的一定的磁盘空间 当实际的内存空间不能满足应用软件的要求时 操作系统就将用这部分的磁盘空间对内存中的信息进行页面替换 这将引起大量的磁盘I/O操作 使整个服务器的性能下降 为了避免过多地使用虚存 应加大计算机的内存
为Oracle数据库服务器设置操作系统进程优先级
不要在操作系统中调整Oracle进程的优先级 因为在Oracle数据库系统中 所有的后台和前台数据库服务器进程执行的是同等重要的工作 需要同等的优先级 所以在安装时 让所有的数据库服务器进程都使用缺省的优先级运行
◆ 调整内存分配
Oracle数据库服务器保留 个基本的内存高速缓存 分别对应 种不同类型的数据 库高速缓存 字典高速缓存和缓冲区高速缓存 库高速缓存和字典高速缓存一起构成共享池 共享池再加上缓冲区高速缓存便构成了系统全程区(SGA) SGA是对数据库数据进行快速访问的一个系统全程区 若SGA本身需要频繁地进行释放 分配 则不能达到快速访问数据的目的 因此应把SGA放在主存中 不要放在虚拟内存中 内存的调整主要是指调整组成SGA的内存结构的大小来提高系统性能 由于Oracle数据库服务器的内存结构需求与应用密切相关 所以内存结构的调整应在磁盘I/O调整之前进行
库缓冲区的调整
库缓冲区中包含私用和共享SQL和PL/SQL区 通过比较库缓冲区的命中率决定它的大小 要调整库缓冲区 必须首先了解该库缓冲区的活动情况 库缓冲区的活动统计信息保留在动态性能表v$librarycache数据字典中 可通过查询该表来了解其活动情况 以决定如何调整 Select sum(pins) sum(reloads) from v$librarycache; Pins列给出SQL语句 PL/SQL块及被访问对象定义的总次数 Reloads列给出SQL 和PL/SQL块的隐式分析或对象定义重装载时在库程序缓冲区中发生的错误 如果sum(pins)/sum(reloads) ≈ 则库缓冲区的命中率合适 若sum(pins)/sum(reloads) 则需调整初始化参数 shared_pool_size来重新调整分配给共享池的内存量
数据字典缓冲区的调整
数据字典缓冲区包含了有关数据库的结构 用户 实体信息 数据字典的命中率 对系统性能影响极大 数据字典缓冲区的使用情况记录在动态性能表v$librarycache中 可通过查询该表来了解其活动情况 以决定如何调整 Select sum(gets) sum(getmisses) from v$rowcache; Gets列是对相应项请求次数的统计 Getmisses 列是引起缓冲区出错的数据的请求次数 对于频繁访问的数据字典缓冲区 sum(getmisses)/sum(gets) %~ % 若大于此百分数 则应考虑增加数据字典缓冲区的容量 即需调整初始化参数shared_pool_size来重新调整分配给共享池的内存量
缓冲区高速缓存的调整
用户进程所存取的所有数据都是经过缓冲区高速缓存来存取 所以该部分的命中率 对性能至关重要 缓冲区高速缓存的使用情况记录在动态性能表v$sysstat中 可通过查询该表来了解其活动情况 以决定如何调整
Select name value from v$sysstat
where name in ( dbblock gets consistent gets physical reads );
dbblock gets和consistent gets的值是请求数据缓冲区中读的总次数 physical reads的值是请求数据时引起从盘中读文件的次数 从缓冲区高速缓存中读的可能性的高低称为缓冲区的命中率 计算公式
Hit Ratio= (physical reds/(dbblock gets+consistent gets))如果Hit Ratio %~ % 则应增大db_block_buffers的参数值 db_block_buffers可以调整分配给缓冲区高速缓存的内存量 即db_block_buffers可设置分配缓冲区高速缓存的数据块的个数 缓冲区高速缓存的总字节数=db_block_buffers的值*db_block_size的值 db_block_size 的值表示数据块大小的字节数 可查询 v$parameter 表 select name value from v$parameter where name= db_block_size ; 在修改了上述数据库的初始化参数以后 必须先关闭数据库 在重新启动数据库后才能使新的设置起作用
◆ 调整磁盘 I/O
磁盘的I/O速度对整个系统性能有重要影响 解决好磁盘I/O问题 可显著提高性能 影响磁盘I/O的性能的主要原因有磁盘竞争 I/O次数过多和数据块空间的分配管理
为Oracle数据库服务器创建新文件时 不论是表空间所用的数据文件还是数据事务登录所用的日志文件 都应仔细考虑数据库服务器上的可用磁盘资源 如果服务器上有多个磁盘 则可将文件分散存储到各个可用磁盘上 减少对数据库的数据文件及事务日志文件的竞争 从而有效地改善服务器的性能 对于不同的应用系统都有各自的数据集 应当创见不同的表空间分别存储各自应用系统的数据 并且尽可能的把表空间对应的数据文件存放在不同的磁盘上 这种从物理上把每个应用系统的表空间分散存放的方法 可以排除两个应用系统竞争磁盘的可能性 数据文件 事务日志文件分别存放在不同的磁盘上 这样事务处理执行的磁盘访问不妨碍对相应的事物日志登记的磁盘访问 如果有多个磁盘可用 将两个事物日志成员放在不同的磁盘驱动器上 就可以消除日志文件可能产生的磁盘竞争 应把一个应用的表数据和索引数据分散存放不同表空间上 并且尽量把不同类型的表空间存放在不同磁盘上 这样就消除了表数据和索引数据的磁盘竞争
◆ 调整数据库服务器的回滚段
回滚段是一个存储区域 数据库使用该存储区域存放曾经由一个事务更新或删除的行的原始数据值 如果用户要回滚一个事务所做的改变 那么数据库就从回滚段中读回改变前的数据并使该事务影响的行改变为它们的原状态 回滚段控制着数据库处理事务的能力 因而在数据库成功中起著关键性的作用 不管数据库的其它部分设计得多好 如果它设计得不合理 将会严重影响系统的性能 建立和调整回滚段的原则如下
分离回滚段
分离回滚段是指单独为回滚段创建一个以上的表空间 使回滚段与数据字典 用户数据 索引等分离开来 由于回滚段的写入与数据和索引的写入是并行进行的 因此将它分离出来可以减少I/O争用 如果回滚段与数据不分离 倘若要某个表空间脱机或撤消 那么在该表空间中的各个回滚段没有全部脱机之前 不能将这个表空间脱机或撤消 而一旦该表空间不可用 则该表空间中的所有回滚段也不能使用 这将浪费所有分配的磁盘空间 所以 独立回滚段可使数据库管理变得容易 回滚段的经常性收缩 使得表空间的自由块更容易形成碎片 分离回滚段可以减少数据库表空间的碎片产生
创建不同大小的回滚段群
lishixinzhi/Article/program/Oracle/201311/18922
大型数据库系统中往往要用到查询统计 但是对于数据量大的系统 用户在进行复杂的查询统计时往往感到速度很慢 不能满足应用要求 这就要求我们在设计数据库系统时进行合理设置 提高查询统计的速度 本文结合笔者的项目开发经验 阐述具体的设置方法
以oracle 数据库系统为例 我们在开发大型oracle数据库系统时结合项目的特点 本着安全 高效的原则对数据库进行了一些物理设计 从而大大提高了数据库的查询统计速度 总结为如下几点
)扩大数据表空间到 M 用于存放本系统的数据;
)段盘区的初始大小为 K 增长大小为 K 增长幅度为 ;
)用户临时空间增大 M;
)系统临时表空间和回滚段表空间增大 M 并且新建 个回滚段;
)需要经常联结查询 而且数据量又大的库存表 名录表 收发料表放在一簇内;
)提供定时备份 备份文件放在另外的机器上
设置数据表空间的SQL语句如下
CREATE TABLESPACE WXGL_DATA DATAFILE WXGL_DATA ORA SIZE M ONLINE;
增加系统临时表空间和回滚段表空间的SQL语句如下
ALTER TABLESPACE TEMPORARY_DATA ADD DATAFILE TMP ORCL ORA SIZE M; ALTER TABLESPACE ROLLBACK_DATA ADD DATAFILE RBS ORCL ORA SIZE M;
将数据空间设置在指定的数据文件的SQL语句如下
CREATE USER ZBGL IDENTIFIED BY ZBGL; GRANT DBA TO ZBGL; ALTER USER ZBGL DEFAULT TABLESPACE WXGL_DATA TEMPORARY TABLESPACE TEMPORARY_DATA; 设置五个回滚段的SQL语句如下 SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS WHERE INITIAL_EXTENT AND UPPPER(OWNER) = PUBLIC ; SELECT UPPER(STATUS) FROM DBA_ROLLBACK_SEGS WHERE UPPER(SEGMENT_NAME) = ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; DROP ROLLBACK SEGMENT RB ; DROP ROLLBACK SEGMENT RB ;
DROP ROLLBACK SEGMENT RB ; DROP ROLLBACK SEGMENT RB ; DROP ROLLBACK SEGMENT RB ; CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; MIT;
将数据量大的库存表等放在一簇内的SQL语句如下
lishixinzhi/Article/program/Oracle/201311/18984
1、可以缩小到5张表,因为很多都是从一张表里取出来的数据;
2、不能子查询因为是要显示数据子查询只是查询条件;
3不能建立索引,因为这样会影响表的增删改,它里面都是导入进去的一次增加上千条都有可能;
4、定期结转是什么意思,表示没看懂。时间发的太长的话就算了;
5、定期结转的意思就是,将你要建立视图的几种表数据“转移”到一张新表里面去,不用视图查询。数据库全文检索是RDBMS自带的扩展功能,可以实现高速查询。全文检索建议搜索下关键字,什么lucene之类的就出来了。
如何加快建立索引的速度
总结一下
使用并行参数 个CPU 可以用parallel 最多占用 个CPU 正常情况下没问题(前提是其他应用没有占超过 个CPU的资源)
nologging 绝对应该使用 会使速度大幅上升 (减少大量redo log)
PGA 普通的auto pga最大才 M 显然没有达到最好性能 应该使用manual pga
alter session set workarea_size_policy=manual;
alter session set hash_area_size= ; hash_area_size 默认情况下会自动根据sort_area_size* 来调 导致sort_area_size不能超过 G 手动设了就没问题了
alter session set sort_area_size= ; 在系统可用内存足够的情况下 最大可以到 G
设置高一点的db_file_multiblock_read_count 也有利于提高I/O性能 保证足够大的db_cache_size可以避免free_buffer_wait的出现
lishixinzhi/Article/program/Oracle/201311/18824