Oracle数据库重启操作遇到的问题及处理方法

【环境介绍】
系统环境:CentOS Linux release 7 + Oracle 11.2.0.4.0 + rac
 
【背景说明】
需求:对数据库内存进行扩容操作,扩容前注意操作系统参数:

SHMALL是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。
SHMMAX参数:Linux进程可以分配的单独共享内存段的最大值。一般设置为内存总大小的一半。这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些。

 

【报错1】

SQL> startup mount;
ORA-00845: MEMORY_TARGET not supported on this system

oerr ora 00845
00845, 00000, "MEMORY_TARGET not supported on this system"
// *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux.
// *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.

 

该报错为内存大小不能大于/dev/shm,需要增加/dev/shm大小

mount -t tmpfs shmfs -o size=40960M /dev/shm

 

【报错2】

SQL> alter database open;
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-30012: undo tablespace 'UNDOTBS1' does not exist or of wrong type

oerr ora 30012
30012, 00000, "undo tablespace '%s' does not exist or of wrong type"
// *Cause: the specified undo tablespace does not exist or of the
// wrong type.
// *Action: Correct the tablespace name and reissue the statement.

set linesize 200
col sid for a30
col value for a50
查看数据库的undo表空间信息:
select * from v$tablespace where name like '%UNDO%';
查看参数文件中的undo表空间信息:
SELECT a.SID, a.VALUE FROM v$spparameter a WHERE a.NAME LIKE '%undo_tablespace%' ;

经过咨询为之前同事删除过undo表空间1,改为了undo表空间3,在节点二上面修改节点的undo表空间为3,启动节点一,数据库正常,建议修改配置文件后需要加载到spfile中:
ALTER SYSTEM SET undo_tablespace='UNDOTBS3' SID='xxxx1' scope=both;

 

【报错3】

启动数据库报错,

ORA-01105: mount is incompatible with mounts by other instances
ORA-19808: recovery destination parameter mismatch

oerr ora 19808
19808, 00000, "recovery destination parameter mismatch"
// *Cause: The value of parameters DB_RECOVERY_FILE_DEST and
// DB_RECOVERY_FILE_DEST_SIZE must be same in all instances.
// instance. All databases must have same recovery destination
// parameters.
// *Action: Check DB_RECOVERY_FILE_DEST and DB_RECOVERY_FILE_DEST_SIZE
// values in all instances.
从报错看为db_recovery_file_dest_size参数在两个节点的值不一致

show parameter recover查看到两个节点的db_recovery_file_dest_size参数不一致,在节点二上面修改为跟节点一的参数一致,重启解决

ALTER SYSTEM SET db_recovery_file_dest_size=xxxG scope=both;

 

【总结】
1,在数据库变更参数时,要注意跟操作系统参数相关信息查看;
2,数据库重启操作先备份好配置文件;
3,了解好参数的属性,对应参数配置要写入到spfile文件中;
4,任何工程操作都要有记录,有助于定位查找问题分析。

posted @ 2020-11-09 17:06  zetan·chen  阅读(507)  评论(0编辑  收藏  举报