我已经在我的oracle linux 6.5机器上成功安装了oracle 12c,并且我能够使用以下命令连接到数据库:
$ Sqlplus / as sysdba
Connected to idle instance
SQL> startup;
SQL> Connected
但现在问题是当我尝试使用'startup'命令启动我的数据库时,它给了我这个错误信息
ORA-04031:无法分配760字节的共享内存(“共享池”,“未知对象”,“sga堆(1,0)”,“ksdhng:els blkrs cache”)
我已经在互联网上查找了这个错误,我得到的解决方案是改变共享池大小,但我无法这样做,因为我无法连接到数据库。任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
您必须在启动数据库之前更新Oracle内存参数。你有超过分配的内存。
答案 1 :(得分:0)
@ daniyal.bashir,你能从pfile或spfile和你的机器ram和“vmstat 1 1”输出你的内存相关参数吗?你提到的错误主要与内存有关,最快的选择是从pfile中删除所有内存参数并设置“memory_target = X number of bytes”
谢谢, KK
答案 2 :(得分:0)
话题不大,但也许有人觉得有用。
如果您玩过alter system set processes, sessions, transactions (etc.)
,但现在由于值太高而得到ORA-04031: unable to allocate ...
,最快的解决方法是转到spfilexe.ora
(或类似名称)并手动更正值
但是spfilexe.ora
文件是二进制文件,因此您不能简单地将一个数字更改为另一个数字!
使用此技巧:
为:*.sessions=30000
进行以下更改:*.sessions=00300
文件大小和校验和将保持不变,而以后您将能够startup
数据库并通过SQL查询更正值。
如果某件事很愚蠢但有效,那不是愚蠢吧? ;-)