修改 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 大小的更多相关文章

  1. 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件

    查看Oracle数据库表空间大小(空闲.已使用),是否要增加表空间的数据文件 1.查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1 ...

  2. 统计Oracle数据库文件的大小

    1. 统计数据文件.暂时文件.日志文件大小 select sum(bytes)/1024/1024/1024 as GB from dba_data_files; select sum(bytes)/ ...

  3. 查看Oracle数据库表空间大小,是否需要增加表空间的数据文件

    在数据库管理中,磁盘空间不足是DBA都会遇到的问题,问题比较常见. --1查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1024 ...

  4. Oracle 数据库比较日期大小

    在今天或者今天之前作比较:select * from JN_BUS_KJLWSBJBXX where dqsj < to_date('2007-09-07 00:00:00','yyyy-mm- ...

  5. 转://Linux大内存页Oracle数据库优化

    PC Server发展到今天,在性能方面有着长足的进步.64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server:在Intel和AMD两大处理器巨头的努力下,x86 C ...

  6. 修改Oracle数据库SGA和PGA大小

    SGA的大小:一般物理内存20%用作操作系统保留,其他80%用于数据库.SGA普通数据库可以分配40%-60%之间,PGA可以分配20%-40%之间.1.以dba身份登录并查看SGA信息:SQL> ...

  7. 查看oracle数据库的大小和空间使用情况

    查看oracle数据库的大小和空间使用情况 (2012-06-19 14:44:30) 转载▼ 标签: 杂谈 分类: oracle 1.查看表空间的使用状况 SELECT upper(f.tables ...

  8. oracle 数据库时间类型为字符串 时间范围大小查询

    select * from invoicedetail t2 where t2.Memo is null and to_char(to_date(t2.PrintDate,'yyyy-MM-dd hh ...

  9. 修改oracle数据库内存报错

    今天修改oracle数据库内存时, alter system set memory_max_target=10240M scope=spfile;语句正确修改:但重启时却报错 : SQL> al ...

随机推荐

  1. rpm安装软件时提示warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105b9de

    在RedHat下有时候用rpm安装软件是会出现下面则中错误 1.安装时提示:warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105 ...

  2. JMeter Gui – TestElement约定(转自约会言行的博客,链接:http://blog.csdn.net/yue530tomtom/article/details/77649872?locationNum=4&fps=1)

    在编写任何JMeter组件时,必须注意某些特定的约定——如果JMeter环境中正确地运行JMeter组件,那么它将会运行.本部分描述了组件的GUI部分必须满足的约定. JMeter中的GUI代码严格地 ...

  3. ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    http://www.cnblogs.com/denny402/p/5852983.html ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试   刚开始学习tf时,我们从 ...

  4. 桌面应用开发用到的Framework

    桌面应用开发用到的Framework https://github.com/zhangqs008/Framework_Winform

  5. css 实现渐变

    background:-ms-radial-gradient(circle,rgba(0, 0, 0, 0.2),rgba(0,0,0,0)); /* IE 10*/ background: -web ...

  6. react 样式的写法之一 ---》styled-components的基本使用

    [react]---styled-components的基本使用---[WangQi]   一.官网地址 https://www.styled-components.com/ 二.styled-com ...

  7. Intersection of Two Linked Lists(两个链表的第一个公共节点)

    来源:https://leetcode.com/problems/intersection-of-two-linked-lists Write a program to find the node a ...

  8. Eclipse查看jdk源码(Ctrl+左键)

    Window ->Preferences ->Java ->Installed JREs ->选中jdk ->Edit ->选中rt.jar ->source ...

  9. 【洛谷p1981】表达式求值

    题前废话: 咱也不知道咱写了个什么神奇的代码导致_rqy都看不明白它是怎么re掉的, 代码的大致思路是这样的:对于这样一个中缀表达式,先转化成它的后缀表达式的形式,然后利用P1449 后缀表达式 这道 ...

  10. 2019牛客暑期多校训练营(第四场) - K - number - dp

    https://ac.nowcoder.com/acm/contest/884/K 一开始整了好几个假算法,还好测了一下自己的样例过了. 考虑到300的倍数都是3的倍数+至少两个零(或者单独的0). ...