调整虚拟机中的oracle数据库的sga,遇到ORA-00845: MEMORY_TARGET not supported on this system 。
数据库初始sga是768M ,计划调整到1G 。
SQL> show sga
Total System Global Area 801701888 bytes
Fixed Size 2257520 bytes
Variable Size 427822480 bytes
Database Buffers 369098752 bytes
Redo Buffers 2523136 bytes
安全起见,先备份spfile。
SQL> create pfile from spfile;
File created.
调整 memory_target参数:
SQL> alter system set memory_target=1024M scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
错误原因:
内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错。
检查文件系统:
[oracle@oracledb dbs]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 28G 23G 5.7G 80% /
devtmpfs 899M 0 899M 0% /dev
tmpfs 913M 84K 913M 1% /dev/shm
tmpfs 913M 9.0M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 297M 144M 154M 49% /boot
tmpfs 183M 0 183M 0% /run/user/1002
tmpfs 183M 20K 183M 1% /run/user/42
tmpfs 913M 84K 913M 1% /dev/shm
调整/dev/shm 到2G
用root用户:
[root@oracledb ~]# mount -o remount,size=2048M /dev/shm
[root@oracledb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 28G 23G 5.7G 80% /
devtmpfs 899M 0 899M 0% /dev
tmpfs 2.0G 233M 1.8G 12% /dev/shm
tmpfs 913M 9.1M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 297M 144M 154M 49% /boot
tmpfs 183M 0 183M 0% /run/user/1002
tmpfs 183M 20K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
在/etc/fstab增加一行,保证操作系统重启后依然生效。
tmpfs /dev/shm tmpfs defaults,size=2048M 0 0
再次启动数据库
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 671089544 bytes
Database Buffers 390070272 bytes
Redo Buffers 5517312 bytes
Database mounted.
Database opened.
如果系统没有设置memory_max_target 参数,直接设置sga_target参数。
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> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 27G
sga_target big integer 27G
--先备份一下pfile启动文件
SQL> create pfile from spfile;
文件已创建。
SQL> alter system set sga_max_size=36G scope=spfile;
系统已更改。
SQL> alter system set sga_target =36G scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 3.8482E+10 bytes
Fixed Size 2289360 bytes
Variable Size 3355443504 bytes
Database Buffers 3.4762E+10 bytes
Redo Buffers 362004480 bytes
数据库装载完毕。
数据库已经打开。
--备份最新的启动文件
SQL> create pfile from spfile;
文件已创建。