16 个解决方案
#1
ORACLE 10g的话看你是否使用ASMM(自动共享内存管理,11g就是AMM了),如果是的话,就设置参数:sga_target、pga_aggregate_target两个参数就O了,至于比例看系统,OLTP系统前者设计大一点,占用整个INSTANCE百分之六七十比较正常,OLAP的时候SGA没有必要要那么大了。
不过你要自己设置每一个细节参数的话,就将上述参数设置为0就会自动关闭ASMM(对应进程MMAN,10g和11g没有变化都是这个进程),然后一般设置一下参数:
1、数据缓冲区:
db_cache_size 数据缓冲区DEFAULT区域大小,也是默认的大小
db_keep_cache_size 数据缓冲区keep区域大小,几乎不会被替换掉的内存区
db_recycle_cache_siez 数据recycle区域大小,几乎用完就回收掉的内存区
2、共享池
shared_pool_size
内部保存SQL信息、数据字典、控制信息,其实这部分最好不用自己去控制,它自己管理就行。里面有个参数:shared_pool_reserved_size适当的时候也可以配置一下。
如果你要用rman相关的东西,要配置一下大池,如果没有JAVA PROD在ORACLE内部,JAVA池几乎无用,做Stream复制,就设置一下stream池。
PGA一般设置一个最大值就行,内部它一般自己去调节(PGA内部一般有一段内存和一些后台进程组成),分专用模式还是共享模式的区别(MTS系统中),内部有些细节参数会根据CPU去配置的(如DBWR最多可以20个,最少是1个,可根据CPU的个数设置,但是一个INSTANCE最多20个),另外可以设置内部的SORT_AREA_SIZE、hash_area_size等等用于用户进程查询时产生的内存开销(超过这个值就会到临时表空间去做了),
不过你要自己设置每一个细节参数的话,就将上述参数设置为0就会自动关闭ASMM(对应进程MMAN,10g和11g没有变化都是这个进程),然后一般设置一下参数:
1、数据缓冲区:
db_cache_size 数据缓冲区DEFAULT区域大小,也是默认的大小
db_keep_cache_size 数据缓冲区keep区域大小,几乎不会被替换掉的内存区
db_recycle_cache_siez 数据recycle区域大小,几乎用完就回收掉的内存区
2、共享池
shared_pool_size
内部保存SQL信息、数据字典、控制信息,其实这部分最好不用自己去控制,它自己管理就行。里面有个参数:shared_pool_reserved_size适当的时候也可以配置一下。
如果你要用rman相关的东西,要配置一下大池,如果没有JAVA PROD在ORACLE内部,JAVA池几乎无用,做Stream复制,就设置一下stream池。
PGA一般设置一个最大值就行,内部它一般自己去调节(PGA内部一般有一段内存和一些后台进程组成),分专用模式还是共享模式的区别(MTS系统中),内部有些细节参数会根据CPU去配置的(如DBWR最多可以20个,最少是1个,可根据CPU的个数设置,但是一个INSTANCE最多20个),另外可以设置内部的SORT_AREA_SIZE、hash_area_size等等用于用户进程查询时产生的内存开销(超过这个值就会到临时表空间去做了),
#2
Oracle安装好后会有个WEB控制台的,你打开那个进去就是可视化的中文操作页面了,添加内存,修改pfile等操作都可以那里面执行,至于控制台的访问方式,看下安装日志,里面最后会有记载。
#3
前几天有人问过这个, 12G*80%,Oracle也有10G的内存了,应该也够用了。 Oracle 内存的调整是根据DB buffer的命中率来看的,不是说服务器内存大就可以多分一点给Oracle。 这样可能反而降低了Oracle的性能。一般命令中在95%就可以了。
#4
你的系统是什么类型的?
数据仓库? 还是交易系统?
应根据你的系统的特点来分配。
数据仓库? 还是交易系统?
应根据你的系统的特点来分配。
#5
数据仓库,就是整个数据库系统很慢
#6
pga得大点,50%左右吧,剩下的用20-30%分配给SGA
#7
怎么指定分配pga和sga的大小呢?这个我不会 请高手赐教
#8
命令,界面都可以(sys权限登录)
#9
#10
单独修改pga的话可以不用关闭再重启数据库,直接
alter system set pga_aggregate_target=40000M scope=both;
可以修改;
如果还需要修改sga那么不重启库无法将sga_target修改到超过上次启动时设置的sga_max_size值,
如果这个值够大,则同样可以
alter system set sga_target=10000M scope=both;
否则就需要关闭修改参数文件再重启动以配置sga到合适的大小。
经验值是数据仓库除操作系统分配4G内存外,其他60%分配给pga,40%分配给sga;
OLTP系统则80%分配给sga,20%分配给pga。
alter system set pga_aggregate_target=40000M scope=both;
可以修改;
如果还需要修改sga那么不重启库无法将sga_target修改到超过上次启动时设置的sga_max_size值,
如果这个值够大,则同样可以
alter system set sga_target=10000M scope=both;
否则就需要关闭修改参数文件再重启动以配置sga到合适的大小。
经验值是数据仓库除操作系统分配4G内存外,其他60%分配给pga,40%分配给sga;
OLTP系统则80%分配给sga,20%分配给pga。
#11
-- 如果系统只有数据库,没有其他应用程序的话,可以指定:pga 10g, sga 50g
-- 剩余 4G 留给系统其他应用服务就够啦....
idle> conn / as sysdba;
已连接。
sys@SZTYORA> show parameter pga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
pga_aggregate_target big integer 10G
sys@SZTYORA> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 50G
sga_target big integer 50G
#12
sys@SZTYORA> alter system set pga_aggregate_target=256M scope=both;
系统已更改。
已用时间: 00: 00: 00.07
sys@SZTYORA> alter system set sga_max_size=1G scope=spfile;
系统已更改。
已用时间: 00: 00: 00.07
sys@SZTYORA> alter system set sga_target=1G scope=spfile;
系统已更改。
已用时间: 00: 00: 00.07
#13
pga和sga,内存搞那么大干啥,浪费资源。
#14
-- 内存买来了,就是用来充分利用的,不利用才叫浪费资源.............
#15
-- 尤其是公司的业务高峰期,一方面内存没有充分利用,另一方面数据库里的内存严重不足,
-- 这恰好应证了这一句话:朱门酒肉臭路有冻死骨
#16
-- 这种情况是 DBA 的严重失职,我是老板的话,我会直接 pass 这个 DBA 的!
#1
ORACLE 10g的话看你是否使用ASMM(自动共享内存管理,11g就是AMM了),如果是的话,就设置参数:sga_target、pga_aggregate_target两个参数就O了,至于比例看系统,OLTP系统前者设计大一点,占用整个INSTANCE百分之六七十比较正常,OLAP的时候SGA没有必要要那么大了。
不过你要自己设置每一个细节参数的话,就将上述参数设置为0就会自动关闭ASMM(对应进程MMAN,10g和11g没有变化都是这个进程),然后一般设置一下参数:
1、数据缓冲区:
db_cache_size 数据缓冲区DEFAULT区域大小,也是默认的大小
db_keep_cache_size 数据缓冲区keep区域大小,几乎不会被替换掉的内存区
db_recycle_cache_siez 数据recycle区域大小,几乎用完就回收掉的内存区
2、共享池
shared_pool_size
内部保存SQL信息、数据字典、控制信息,其实这部分最好不用自己去控制,它自己管理就行。里面有个参数:shared_pool_reserved_size适当的时候也可以配置一下。
如果你要用rman相关的东西,要配置一下大池,如果没有JAVA PROD在ORACLE内部,JAVA池几乎无用,做Stream复制,就设置一下stream池。
PGA一般设置一个最大值就行,内部它一般自己去调节(PGA内部一般有一段内存和一些后台进程组成),分专用模式还是共享模式的区别(MTS系统中),内部有些细节参数会根据CPU去配置的(如DBWR最多可以20个,最少是1个,可根据CPU的个数设置,但是一个INSTANCE最多20个),另外可以设置内部的SORT_AREA_SIZE、hash_area_size等等用于用户进程查询时产生的内存开销(超过这个值就会到临时表空间去做了),
不过你要自己设置每一个细节参数的话,就将上述参数设置为0就会自动关闭ASMM(对应进程MMAN,10g和11g没有变化都是这个进程),然后一般设置一下参数:
1、数据缓冲区:
db_cache_size 数据缓冲区DEFAULT区域大小,也是默认的大小
db_keep_cache_size 数据缓冲区keep区域大小,几乎不会被替换掉的内存区
db_recycle_cache_siez 数据recycle区域大小,几乎用完就回收掉的内存区
2、共享池
shared_pool_size
内部保存SQL信息、数据字典、控制信息,其实这部分最好不用自己去控制,它自己管理就行。里面有个参数:shared_pool_reserved_size适当的时候也可以配置一下。
如果你要用rman相关的东西,要配置一下大池,如果没有JAVA PROD在ORACLE内部,JAVA池几乎无用,做Stream复制,就设置一下stream池。
PGA一般设置一个最大值就行,内部它一般自己去调节(PGA内部一般有一段内存和一些后台进程组成),分专用模式还是共享模式的区别(MTS系统中),内部有些细节参数会根据CPU去配置的(如DBWR最多可以20个,最少是1个,可根据CPU的个数设置,但是一个INSTANCE最多20个),另外可以设置内部的SORT_AREA_SIZE、hash_area_size等等用于用户进程查询时产生的内存开销(超过这个值就会到临时表空间去做了),
#2
Oracle安装好后会有个WEB控制台的,你打开那个进去就是可视化的中文操作页面了,添加内存,修改pfile等操作都可以那里面执行,至于控制台的访问方式,看下安装日志,里面最后会有记载。
#3
前几天有人问过这个, 12G*80%,Oracle也有10G的内存了,应该也够用了。 Oracle 内存的调整是根据DB buffer的命中率来看的,不是说服务器内存大就可以多分一点给Oracle。 这样可能反而降低了Oracle的性能。一般命令中在95%就可以了。
#4
你的系统是什么类型的?
数据仓库? 还是交易系统?
应根据你的系统的特点来分配。
数据仓库? 还是交易系统?
应根据你的系统的特点来分配。
#5
数据仓库,就是整个数据库系统很慢
#6
pga得大点,50%左右吧,剩下的用20-30%分配给SGA
#7
怎么指定分配pga和sga的大小呢?这个我不会 请高手赐教
#8
命令,界面都可以(sys权限登录)
#9
#10
单独修改pga的话可以不用关闭再重启数据库,直接
alter system set pga_aggregate_target=40000M scope=both;
可以修改;
如果还需要修改sga那么不重启库无法将sga_target修改到超过上次启动时设置的sga_max_size值,
如果这个值够大,则同样可以
alter system set sga_target=10000M scope=both;
否则就需要关闭修改参数文件再重启动以配置sga到合适的大小。
经验值是数据仓库除操作系统分配4G内存外,其他60%分配给pga,40%分配给sga;
OLTP系统则80%分配给sga,20%分配给pga。
alter system set pga_aggregate_target=40000M scope=both;
可以修改;
如果还需要修改sga那么不重启库无法将sga_target修改到超过上次启动时设置的sga_max_size值,
如果这个值够大,则同样可以
alter system set sga_target=10000M scope=both;
否则就需要关闭修改参数文件再重启动以配置sga到合适的大小。
经验值是数据仓库除操作系统分配4G内存外,其他60%分配给pga,40%分配给sga;
OLTP系统则80%分配给sga,20%分配给pga。
#11
-- 如果系统只有数据库,没有其他应用程序的话,可以指定:pga 10g, sga 50g
-- 剩余 4G 留给系统其他应用服务就够啦....
idle> conn / as sysdba;
已连接。
sys@SZTYORA> show parameter pga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
pga_aggregate_target big integer 10G
sys@SZTYORA> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 50G
sga_target big integer 50G
#12
sys@SZTYORA> alter system set pga_aggregate_target=256M scope=both;
系统已更改。
已用时间: 00: 00: 00.07
sys@SZTYORA> alter system set sga_max_size=1G scope=spfile;
系统已更改。
已用时间: 00: 00: 00.07
sys@SZTYORA> alter system set sga_target=1G scope=spfile;
系统已更改。
已用时间: 00: 00: 00.07
#13
pga和sga,内存搞那么大干啥,浪费资源。
#14
-- 内存买来了,就是用来充分利用的,不利用才叫浪费资源.............
#15
-- 尤其是公司的业务高峰期,一方面内存没有充分利用,另一方面数据库里的内存严重不足,
-- 这恰好应证了这一句话:朱门酒肉臭路有冻死骨
#16
-- 这种情况是 DBA 的严重失职,我是老板的话,我会直接 pass 这个 DBA 的!