ORACLE数据库 memory_target SGA 大小
修改 memory_target
用oracle用户登录,
sqlplus "/as sysdba"
SQL> show parameters target;
show parameters spfile;
alter system set memory_max_target=4G scope=spfile;
alter system set memory_max_target=4G scope=both;
tmpfs /dev/shm tmpfs defaults,size=24G 0 0
-查看当前使用的哪个参数文件启动的
SQL> select distinct isspecified from v$spparameter;
ISSPEC
------
FALSE
看第一个值是FALSE还是TRUE,如果是FALSE,则是pfile,否则则是spfile.
第一行为TRUE可知,是从spfile启动的,
有两行,其中第二行为FALSE,表示有两个参数文件,一个是spfile,一个是pfile
最终:修改参数的方法:
先用 mount -o remount,size=16G tmpfs
(无论实际内存大小如何,上述命令都能成功,只是不知道内存太小,oracle是否真能启动)
或类似 mount -t tmpfs -o remount,size=32G tmpfs /tmp(命令成功,但没测试oracle启动正常与否)
修改 tmpfs 大小,使oracle能够启动成功;
然后:
用oracle用户lmoracle登录,执行:
sqlplus "/as sysdba"
create pfile='/pb/lmoracle/a.txt' from memory;
如果oracle已经被正常启动的情况下,可以得到一个保存所有参数的文件:/pb/lmoracle/a.txt
修改a.txt中的
memory_target=2G
为
memory_target=24G
在sqlplus中执行shutdown;
退出sqlplus,重新执行下面的命令进入sqlplus:
sqlplus "/as sysdba"
然后用修改后的参数文件启动数据库实例:
startup pfile='/pb/lmoracle/a.txt';
看一下参数:
show parameters target;
无误后,
create spfile from memory;
这样就把改好的参数文件保存到缺省的spfile中了。
重启数据库(或重启机器)
----------------------------------------------------------------------------------------------
ORA-00845: MEMORY_TARGET not supported on this system报错解决
Oracle 11g数据库修改pfile参数后启动数据库报错ora-00845
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,
它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,
而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错
解决方案
1.初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存(/dev/shm),为了解决这个问题,可以增大/dev/shm
如:
# mount -t tmpfs shmfs -o size=7g /dev/shm
2.为了确保操作系统重启之后能生效,需要修改/etc/fstab文件
shmfs /dev/shm tmpfs size=7g 0
3.如果/dev/shm没有挂载也会报上面的错,所认需要确保已经挂载
oracle@aaaprod-db ~]$ df -h
tmpfs 16G 8.9G 7.2G 56% /dev/shm
下面为一次操作的记录
[root@aaaprod-db ~]# cat /etc/fstab | grep tmpfs
tmpfs /dev/shm tmpfs defaults,size=8g 0 0
[root@aaaprod-db ~]# mount -o remount,size=16G /dev/shm
[root@aaaprod-db ~]# cat /etc/fstab | grep tmpfs
tmpfs /dev/shm tmpfs defaults,size=8g 0 0
[root@aaaprod-db ~]# vi /etc/fstab
/dev/rootvg/LogVol02 / ext3 defaults 1 1
/dev/rootvg/LogVol01 /tmp ext3 defaults 1 2
/dev/rootvg/lvol0 /ebao ext3 defaults 1 2
/dev/rootvg/lvol1 /backup ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=16g 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/rootvg/LogVol00 swap swap defaults 0 0
"/etc/fstab" 10L, 769C written
[root@aaaprod-db ~]# df -h|grep shm
tmpfs 16G 0 16G 0% /dev/shm
SQL> startup
ORACLE instance started.
Total System Global Area 9420095488 bytes
Fixed Size 2236248 bytes
Variable Size 2315255976 bytes
Database Buffers 7046430720 bytes
Redo Buffers 56172544 bytes
Database mounted.
Database opened.
SQL> exit
---------------------------------------------------------------------------
Oracle调整SGA大小
memory_max_target < shm 切记,否则Oracle实例将启动失败,
报 ORA-00845: MEMORY_TARGET not supported on this system 错,点击查看shm设置
------------------------------
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 512M
sga_target big integer 512M
SQL>
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 0
memory_target big integer 0
shared_memory_address integer 0
SQL>
sql>alter system set memory_max_target = 15G scope=spfile;
sql>alter system set memory_target = 15G scope=spfile;
shutdown immediate
startup
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 15G
memory_target big integer 15G
shared_memory_address integer 0
---------------------------------------------------------------------------
如何修改oracle SGA大小
在正常情况下,查询非常慢。
1、检查SGA大小,以DBA身份连接到oracle数据库,输入show sga。
2、如果SGA过小,请修改其大小
修改SGA必须保持的原则:
1).sga_target不能大于sga_max_size,可以设置为相等。
2).SGA加上PGA等其他进程占用的内存总数必须小于操作系统的物理内存。
做如下操作前,必须备份dbs目录下的所有文件。
方法一:直接SQL命令行修改:
(如果spfile文件不存在,需先创建create spfile from pfile;)
SQL>alter system set sga_max_size=1024m scope=spfile;
然后需要重启数据库
SQL>shutdown immediate
SQL>startup
SQL>show sga;即可看到SGA的大小已经被修改
重启之后,再修改sga_target
SQL>alter system set sga_target=1024m scope=both;
------------------------------------------------------------------------
设置SGA的原则以及修改它的大小
一,设置SGA的原则:
有时候会碰到在配置SGA中出现了问题,由于分配的内存过多,数据库启不起来了。
内存结构=SGA(系统全局区)+PGA(程序全局区)
SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写
我们重点就是设置SGA,理论上SGA可占OS系统物理内存的1/2——1/3
原则:SGA+PGA+OS使用内存 <总物理RAM
SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB
1、SGA系统全局区.(包括以下五个区)
A、数据缓冲区:(db_block_buffers)存储由磁盘数据文件读入的数据。
大小: db_block_buffers*db_block_size
Oracle9i设置数据缓冲区为:Db_cache_size
原则:SGA中主要设置对象,一般为可用内存40%。
B、共享池:(shared_pool_size):数据字典,sql缓冲,pl/sql语法分析.加大可提速度。
原则:SGA中主要设置对象,一般为可用内存10%
C、日志缓冲区:(log_buffer)存储数据库的修改信息.
原则:128K ---- 1M 之间,不应该太大
D 、JAVA池(Java_pool_size)主要用于JAVA语言的开发.
原则:若不使用java,原则上不能小于20M,给30M通常就够了
E、 大池(Large_pool_size) 如果不设置MTS,主要用于数据库备份恢复管理器RMAN。
原则:若不使用MTS,5---- 10M 之间,不应该太大
SGA=. db_block_buffers*db_block_size+ shared_pool_size+ log_buffer+Java_pool+size+large_pool_size
原则: 达到可用内存的55-58%就可以了.
2、PGA程序全局区
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,
与几个进程共享的SGA正相反PGA是只被一个进程使用的区域,PGA在创建进程时分配在终止进程时回收.
A、Sort_area_size 用于排序所占内存
B、Hash_area_size 用于散列联接,位图索引
这两个参数在非MTS下都是属于PGA ,不属于SGA,是为每个session单独分配的,在我们的服务器上除了OS + SGA,一定要考虑这两部分
原则:OS 使用内存+SGA+并发执行进程数*(sort_area_size+hash_ara_size+2M) < 0.7*总内存
实例配置
一:物理内存多大
二:操作系统估计需要使用多少内存
三:数据库是使用文件系统还是裸设备
四:有多少并发连接
五:应用是OLTP 类型还是OLAP 类型
基本掌握的原则是, db_block_buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多了
例如:
内存2G 单个CPU db_block_size 是8192 bytes
SGA=0.55*2048M=1126.4M左右
建议 shared_pool_size = 200M , db_block_buffer *db_block_size = 800M
具体: shared_pool_size=209715200 #200M
db_block_buffer=103192 #800M
log_buffer = 131072 # 128k (128K*CPU个数)
large_pool_size= 31457280 #30M
java_pool_size = 20971520 # 20 M
sort_area_size = 524288 # 512k (65k--2M)
sort_area_retained_size = 524288 # MTS 时 sort_area_retained_size = sort_area_size
二,修改SGA的大小:
1.sga_target不能大于sga_max_size,可以设置为相等。 2.SGA加上PGA等其他进程占用的内存总数必须小于操作系统的物理内存。
做如下操作前,必须备份dbs目录下的所有文件。
方法一:直接SQL命令行修改:
SQL>alter system set sga_target=1024m scope=spfile;
SQL>alter system set sga_max_size=1024m scope=spfile;
(如果spfile文件不存在,需先创建createspfile from pfile;)
alter system set sga_target=12g scope=spfile;
alter system set sga_max_size=12g scope=spfile;
然后
SQL>shutdown immediate
SQL>startup
SQL>show sga; 即可看到SGA的大小已经被修改
方法二:通过EM修改:
以SYS登陆到EM:管理->(数据库配置)所有初始化参数—>SPFile->
在此界面可以直接定义sga_target与sga_max_size
然后重启数据库即可!
----------------------------------------------------------------------
cmd下部分操作:,oracle10.2.0g
SQL>conn sys/rezin as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
Oracle 例程已经关闭。
SQL> startup
oracle 例程已经启动。
TotalSystem Global Area 1073741824 bytes
FixedSize 1253124 bytes
VariableSize 696254716 bytes
Database Buffers 369098752 bytes
RedoBuffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show sga;
TotalSystem Global Area 1073741824 bytes ---原来大小
FixedSize 1253124 bytes
VariableSize 696254716 bytes
Database Buffers 369098752 bytes
RedoBuffers 7135232 bytes
SQL> alter system set sga_target=300m scope=spfile;
系统已更改。
SQL>alter system set sga_max_size=280m scope=spfile;
系统已更改。
SQL>shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
TotalSystem Global Area 314572800 bytes ---修改后的大小
FixedSize 1248720 bytes
VariableSize 96469552 bytes
Database Buffers 209715200 bytes
RedoBuffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
-----------------------------------------------------------------
oracle 11g安装后,无法登陆的问题(MEMORY_TARGET not supported on this system)
问题的解决:修改dev/shm的大小,具体和memory的对应关系大小可以参考oracle官方快速安装教程中写的设置
[oracle@r720-2 ~]$ sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jul 1 20:03:07 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter user-name: sys as sysdba
Enter password:
Connected to an idle instance.
SQL> startup;
ORA-00845: MEMORY_TARGET not supported on this system
MEMORY_TARGET不知道在哪设置,根据网上资料,设置了系统参数,但依然无效
[root@r720-2 ~]# mount -o remount /dev/shm
[root@r720-2 ~]# df -h /dev/shm/
Filesystem Size Used Avail Use% Mounted on
shmfs 20G 0 20G 0% /dev/shm
想重启数据库也报错~~~
SQL> shutdown immediate;
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
SQL> startup mount
ORA-00845: MEMORY_TARGET not supported on this system
(1)登陆orcl数据库
SQLPLUS SYS/SYS@orcl AS SYSDBA
(2)设置内存大小
ALTER SYSTEM SET MEMROY_MAX_TARGET=500M SCOPE=SPFILE;(SCOPE=SPFILE表示写如SPFILE文件,在数据库重启后生效)
(3) 设置自动分配的内存大小
ALTER SYSTEM SET MEMORY_TARGET = 500M SCOPE=SPFILE;(表示自动调节PGA和SGA的总大小为500M)
ALTER SYSTEM SET SGA_TARGET =0 SCOPE=SPFILE;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET =0 SCOPE=SPFILE;
(4)关闭数据库
SHUTDOWN IMMEDIATE
(5)重启数据库EXP1使配置生效
startup
按下面的方法搞定,假设你的实例名为orcl
在linux下执行:
1、cd $ORACLE_HOME/dbs
2、sqlplus / as sysdba
3、create pfile from spfile;
然后修改pfile里面的内容,将memery_target修改为sga_target 和 pga_aggregate_target,一个256M,一个200M。
并去掉开始所有的orcl.的选项。
5、startup pfile='initorcl.ora'
6、create spfile from pfile='initorcl.ora'
7、startup force
MEMORY_TARGET 是 oracle database 11g 继 10g 加入 sga_target 之后新加的一个内存自动管理参数,
参数嘛,当然是在 pfile 或 spfile 中设置啦。
*.memory_target=54087647232
应该是55G,于是我调整了
vi /etc/fstab--调整共享内存大小
mount /dev/shm--执行可用
df -h /dev/shm--验证值为60G,
然后在oracle用户下startup就把服务器启动了。
备注:随笔中内容来源于网上资料整理,仅供参考。
ORACLE数据库 memory_target SGA 大小的更多相关文章
- 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
查看Oracle数据库表空间大小(空闲.已使用),是否要增加表空间的数据文件 1.查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1 ...
- 统计Oracle数据库文件的大小
1. 统计数据文件.暂时文件.日志文件大小 select sum(bytes)/1024/1024/1024 as GB from dba_data_files; select sum(bytes)/ ...
- 查看Oracle数据库表空间大小,是否需要增加表空间的数据文件
在数据库管理中,磁盘空间不足是DBA都会遇到的问题,问题比较常见. --1查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1024 ...
- Oracle 数据库比较日期大小
在今天或者今天之前作比较:select * from JN_BUS_KJLWSBJBXX where dqsj < to_date('2007-09-07 00:00:00','yyyy-mm- ...
- 转://Linux大内存页Oracle数据库优化
PC Server发展到今天,在性能方面有着长足的进步.64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server:在Intel和AMD两大处理器巨头的努力下,x86 C ...
- 修改Oracle数据库SGA和PGA大小
SGA的大小:一般物理内存20%用作操作系统保留,其他80%用于数据库.SGA普通数据库可以分配40%-60%之间,PGA可以分配20%-40%之间.1.以dba身份登录并查看SGA信息:SQL> ...
- 查看oracle数据库的大小和空间使用情况
查看oracle数据库的大小和空间使用情况 (2012-06-19 14:44:30) 转载▼ 标签: 杂谈 分类: oracle 1.查看表空间的使用状况 SELECT upper(f.tables ...
- oracle 数据库时间类型为字符串 时间范围大小查询
select * from invoicedetail t2 where t2.Memo is null and to_char(to_date(t2.PrintDate,'yyyy-MM-dd hh ...
- 修改oracle数据库内存报错
今天修改oracle数据库内存时, alter system set memory_max_target=10240M scope=spfile;语句正确修改:但重启时却报错 : SQL> al ...
随机推荐
- Noi2018 归途
zz:https://blog.csdn.net/dreaming__ldx/article/details/81106748 以海拔为第一关键字对边进行从大到小的排序,然后修建kruskal重构树, ...
- 绕过安全狗Apache4.0版本
参数拦截:script.空格and空格.空格or空格.union select.user() 绕过: and.order by绕过: 内联注释 union select绕过: union%23%0a ...
- IDEA常用快揵键
IDEA常用快揵键 工作中常用IDEA快捷键 参见博客:https://www.cnblogs.com/zhangpengshou/p/5366413.html Double shift --- ...
- 第四周实验报告&实验总结
试验报告2 写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的.要求该类 ...
- 非GUI 模式运行 jmeter 压力测试
非 GUI 模式,即命令行模式,运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 使用命令:jmeter -n -t <testplan filename> -l <lis ...
- C#中Func与Action的理解
Action 与 Func是.NET类库中增加的内置委托,以便更加简洁方便的使用委托.最初使用委托时,均需要先定义委托类型,然后定义一个符合委托类型签名的函数,在调用前,需声明并创建委托对象,将指定函 ...
- docker pull使用 代理
[root@fdfs- ~]# cat /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Con ...
- Excel VBA批量处理寸照名字(类模块加FSO版)
需求:因为处理学生学籍照片,从照相馆拿回来的寸照是按班级整理好,文件名是相机编号的文件.那么处理的话,是这么一个思路,通过Excel表格打印出各班A4照片列表,让学生自行填上照片对应姓名.表格收回来后 ...
- python 二维数组转一维数组
三种方法 比如 a = [[1, 2], [3, 4], [5, 6]] 列表推导式 [i for j in a for i in j] 库函数 from itertools import chain ...
- P2517 [HAOI2010]订货(dp)
P2517 [HAOI2010]订货 设$f[i][j]$表示第$i$个月,库存为$j$的最小代价 枚举上个月的库存$k$,那么$f[i][j]=f[i-1][k]+(j+U[i]-k)*D[i]+j ...