oracle怎么启memory,修改memory内存参数,导致数据库启不来

这几天新装完一个rac 11g的数据库,安装完成后修改memory内存参数。

重新启动时,遇到如下错误:

来自Oracle的官方解析是:

Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.

简单来说就是 MEMORY_MAX_TARGET 的设置不能超过 /dev/shm 的大小:

/dev/shm   安装后默认为主机内存的一半 ,我的主机是64G的内存

[root@rac1 ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

tmpfs                 32G  7.5G  14.5G  23%  /dev/shm

而我改内存时,将memory_max_target改为了36G,大于主机内存的一半32G。就报了上面的错误,并且库连nomount状态都起不了。

既没有备份,也没有归档。

现在有两种方法解决此问题:

法一: 增加tmpfs /dev/shm的大小。

mount -o remount,size=37G tmpfs /dev/shm

[root@rac1 ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

tmpfs                 37G    8G  29G   21%/dev/shm

这只是临时修改,如要永久生效,可更改 /etc/fstab 文件

[root@rac1 ~]# vi /etc/fstabtmpfs                   /dev/shm                tmpfs   defaults,size=37G     0 0

启动数据库,依然报错:不过报的错和以前不一样了

Tue Nov 03 21:01:41 2015

Errors in file /u01/app/oracle/diag/rdbms/racdb/racdb1/trace/racdb1_ora_16093.trc  (incident=72337):

ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","unknown object","KGLH0^940b3db9","kglHeapInitialize:temp")

Incident details in: /u01/app/oracle/diag/rdbms/racdb/racdb1/incident/incdir_72337/racdb1_ora_16093_i72337.trc

查看alert日志:Starting ORACLE instance (normal)

WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 40667971584 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 33212657664 and used is 562896896 bytes. Ensure that the mount point is /dev/shm for this directory.

memory_target needs larger /dev/shm

提示/dev/shm至少需要40G,

所以再增大/dev/shm

mount -o remount,size=40G tmpfs /dev/shm

再次启动oracle,报能启动startup,但是只能启动到nomount状态。好,此时可以修改参数

alter system set memory_max_target=32G scope=spfile;

重新启动,数据库打开open,总算好了。

如果不在/etc/fstab中添加,重新启动操作系统,/dev/shm即可恢复成系统默认的主机内存的一半32G。

解决方法二:创建pfile文件,打开数据库,再重建spfile文件。

我本打算在本地创建pfile参数文件

create pfile='/home/oracle/initRACDB.ora' from spfile;

数据库报错:

create pfile='home/oracle/initRACDB.ora' from spfile;

ora-01565 error in identifying file '?/dbs/spfile@.ora'

ora-27037 unable to obtain file status

Linux-x86_64 error: 2: no such file or dirtory

创建不了怎么办,又没有参数文件的备份,只好重建pfile文件了。

[oracle@rac1]$ vi initRACDB.ora

添加以下语句:db_name=’racdb'

racdb1.instance_number=1

racdb2.instance_number=2

racdb1.memory_max_target=32G

racdb2.memory_max_target=32G

racdb2.thread=2

racdb1.thread=1

control_files='+DATA/RACDB/CONTROLFILE/Current.256.894470277'保存并退出

启动数据库:startup pfile='/home/oracle/initRACDB.ora'

到这步以后

方法1.

打开数据库后,重建spfile

create spfile from pfile=‘/home/oracle/initRACDB.ora’

重新启动数据库即可

方法2. 修改参数

alter system set memory_max_target=32G scope=spfile;

修改参数报下面错:

ORA-32000: write to SPFILE requested but SPFILE is not modifiable

法1):

1. 首先想到的是数据库实例是否是用spfile启动的,如果不是,当然无法向spfile写入sys@rac1>showparameterspfile

查看结果是用spfile启动的,但是是用本地文件系统的spfile。

2. 在解决问题中显示的是使用文件系统中的spfile启动的,如果数据库创建在ASM磁盘组上的话,spfile应该存在于ASM磁盘组上

所以通过grid用户登录,判断在ASM磁盘组上的spfile是存在的

3. 果断将文件系统上的spfile删除,关闭重新启动实例,即可。

[oracle@rac1 dbs]$rm -rf spfileRACDB.ora

4.现在再更改参数,显示完成,没有再报错。

法2):

srvctl启动 目前一节点是ASM共享磁盘上的SPFILE 另一节点是本机上的SPFILE文件指向ASM共享磁盘上的SPFILE

如果是srvctl启动的话默认是走cluster ware的spfile路径~

不是走oracle_home的~

用srvctl从新启动一下~让他们都走ASM里的spfile应该就可以了~实际情况却是上面说的不同路径~

只是最终指向是同一文件,暂时没有手动指向

[oracle@rac1 dbs]$ vi initRACDB1.ora

SPFILE='+DATA/RACDB/spfileRACDB.ora'

恩,大体就是这样,折腾了几个小时,把库给起来了,所以做备份很重要。

正式库使用方法一 增大/dev/shm启来的,测试库使用方法二重建参数起来的。因为过了两天才整理的,文本没保留好,写的有点乱,大家见谅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值