oracle监听启动正常
用sqlplus '/ as sysdba' 进入 startup 时报错:
ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","select /*+ rule */ bucket_cn...","Typecheck heap","kgghteInit")
解决方法(不彻底):
root登录 find / -name init*.ora (即找到ORACLE_SID对应的ora文件 我的为 initTSH1.ora)
修改文件参数:TSH1._shared_pool_size 把该参数值增大
使修改后的参数生效:
进入oracle用户 su - oracle 登录 sqlplus '/ as sysdba'
startup force pfile=/data/u01/app/oracle/......initTSH1.ora;
oracle正常启动(已pfile属性文件启动)
上面并未彻底解决问题,重新shutdown后再startup还是一样的错误。。。。。。。。。。
下面彻底解决:
在initTSH1.ora 同一目录下有文件:spfileTSH1.ora 修改该文献的TSH1._shared_pool_size参数,变大
startup 启动正常
但登陆数据库后,发现新问题:ORA-01552: 非系统表空间 'USERS' 不能使用系统回退段的处理
故障分析:
UNDO表空间数据文件受损,导致执行更新操作失败。
故障修复:
sqlplus / as sysdba
SQL> create undo tablespace "UNDOTBS02" datafile '/data/u01/app/oracle/oradata\TSH1\UNDOTBS02.DBF' size 128m reuse autoextend on next 10m maxsize 2048m;
表空间已创建。
alter system set undo_tablespace=UNDOTBS02 scope=spfile;
注:执行此处时出错:write to SPFILE requested but no SPFILE specified at startup (oracle不是以spfile属性文件启动的)
经检查发现spfile文件已损坏,重新生成该文件。
create spfile='/data/u01/app/oracle/product/10.2.0/db_1/dbs/spfileTSH1.ora' from pfile='/data/u01/app/oracle/product/10.2.0/db_1/dbs/initTSH1.ora';
创建成功。
重新执行sql:
alter system set undo_tablespace=UNDOTBS02 scope=spfile;
系统已更改。
alter system set undo_management=auto scope=spfile;
系统已更改。
shutdown immediate;
startup;
DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
表空间已删除。
shutdown immediate;
startup;
数据库正常。
下面附解决问题过程中参考的文章:
http://blog.csdn.net/wyzxg/article/details/4073973
http://tech.ccidnet.com/art/1107/20080401/1406821_1.html
http://blog.csdn.net/wanglixue2012/article/details/7252801