昨天晚上在一个项目上迁移oracle 11G数据库,在这之前已经迁移过一次了,但是没有成功,迁移后导致统一身份认证系统不能正常使用。于是在昨天晚上再次进行迁移,这次采用冷备份的方法直接拷贝oracle文件(为了避免再次出现迁移后统一身份认证系统不能使用),操作系统为redhat 6.2 X86_64,数据库版本为oracle 11G R2。
按照原有系统相关配置,配置好oracle所需的环境变量,并将oracle软件、数据文件等全部复制到新环境的相同目录即可(这里就不具体介绍了,有兴趣的朋友可留言交流)。所有准备就绪后,启动数据库进行测试,结果报如下错误:
ORA-00845: MEMORY_TARGET not supported on this system
经查是由于/dev/shm(共享内存)空间太小,而数据库所需的内存超过/dev/shm目录大小所致,tmpfs 的值默认情况是为系统内存的一半,那么我们就需要给tmpfs增加空间。
[root@orc09-lx ~]# df –h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-LogVol01 485G 125G 336G 28% / tmpfs 32G 14G 18G 44% /dev/shm /dev/sda2 485M 38M 423M 9% /boot /dev/sda1 200M 256K 200M 1% /boot/efi |
修改/etc/fstab文件如下所示:
/dev/mapper/VolGroup-LogVol01 / ext4 defaults 1 1 UUID=ecd0ec5a-2b15-446c-84c3-c459507f7217 /boot ext4 defaults 1 2 UUID=EB00-F1F6 /boot/efi vfat umask=0077,shortname=winnt 0 0 /dev/mapper/VolGroup-LogVol00 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults,size=46G 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/shm使修改生效:
# mount -o remount /dev/shm |
再次查看空间大小
[root@orc09-lx ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-LogVol01 485G 125G 336G 28% / tmpfs 46G 14G 33G 31% /dev/shm /dev/sda2 485M 38M 423M 9% /boot /dev/sda1 200M 256K 200M 1% /boot/efi |
修改成功后,再次重启数据库,已经没有报错,数据库正常启动。数据库正常启动了是不是就完成了呢?no,不是的,重启服务器后,你会发现tmpfs又变成默认大小了,刚才修改的并没有生效,那么我们如何将它设置为永久生效呢?这里除了修改/etc/fstab文件我们还要修改一个非常重要的文件/etc/rc.d/rc.sysinit。
1、注释以下内容:
# mount -f /dev/shm >/dev/null 2>&1 |
2、在/etc/rc.d/rc.sysinit文件中找到并修改如下内容:
# Mount all other filesystems (except for NFS and /proc, which is already # mounted). Contrary to standard usage, # filesystems are NOT unmounted in single user mode. # The ‘no’ applies to all listed filesystem types. See mount(8). if [ "$READONLY" != "yes" ] ; then action $”Mounting local filesystems: ” mount -a -ttmpfs,nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev else action $”Mounting local filesystems: ” mount -a -n -ttmpfs,nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev fi |
修改完成后,重新启动操作系统,发现已经成功。