快速修复步骤:1. 通过sqlplus / as sysdba连接到数据库(idle状态);2. 执行startup mount; 3. alter system set sga_target=2G scope=spfile; (根据服务器内存调整,如4G、8G);4. shutdown immediate; 5. startup; 远程处理:使用ssh登录服务器,编辑pfile/spfile或通过alert log查看内存需求,直接sqlplus连接调整参数,避免物理访问服务器。
来源1
ORA-00821: Specified value of sga_target is too small, needs to be at least ... 错误原因是因为sga_target设置的值小于系统计算的最小值。解决方法:将sga_target参数设置一个足够大的值。sql> startup mount; sql> alter system set sga_target=2G scope=spfile sid='*'; sql> alter system set sga_max_size=2G scope=spfile sid='*'; sql> shutdown immediate; sql> startup;
来源2
现象:使用spfile启动时报ORA-00821错误。解决:1)启动到mount状态:startup mount; 2)修改sga_target参数:alter system set sga_target=4G scope=both sid='*'; 3)重启数据库:shutdown immediate; startup;
来源3
远程修复:ssh root@服务器IP, su - oracle, sqlplus / as sysdba, startup nomount, create pfile from spfile; vi init.ora, 修改sga_target=4096M, mv init.ora spfile+1.ora, startup;
来源4
错误ORA-00821: Specified value of sga_target string is too small, needs to be at least string。最小值由alert.log给出,根据物理内存的40%设置sga_target。快速修复:sqlplus /nolog, conn /as sysdba, startup mount, show parameter sga_target, alter system set sga_target=6G scope=spfile, shutdown abort, startup。
来源5
在远程服务器上,通过drmi或sqlplus调整:先mount,然后set sga_target为内存的1/2,如总内存16G设8G,重启即可。注意检查/usr/sbin/lsmemory或free -g查看可用内存。
来源6
ORA-00821错误快速处理流程:1. srvctl stop database -d dbname; 2. sqlplus / as sysdba; 3. startup mount restrict; 4. alter system reset sga_target scope=spfile sid='*'; 5. alter system set sga_target=0 scope=spfile sid='*'; 6. shutdown immediate; 7. srvctl start database -d dbname;
来源7
FAQ:
Q: sga_target设多少合适?
A: 一般设为物理内存的40-50%,如16G内存设6-8G。
Q: 远程怎么查看alert log?
A: tail -f $ORACLE_BASE/diag/rdbms/dbname/alert.log。
Q: 如果spfile损坏?
A: startup nomount, create spfile from pfile;。
Q: 11g和12c区别?
A: 12c多租户需指定cdb$root或pdb。