I'm trying to establish an Oracle database connection. It throws the following exception:

ORA-04031: unable to allocate 4048 bytes of shared memory 
  ("shared pool","unknown object","sga heap(1,0)","kglsim heap")

I have tried connecting the database through JDBC as well as SQL Developer, however it throws the exception in both case.

How can I fix this?

  • 1
    First Google hit on your error message gives a lot of info.
    – Rene
    Commented Jun 24, 2013 at 9:02

1 Answer 1


Oracle 10g or earlier? Probably you already restarted the database. Then you can check SQL Area: SELECT sql_text, parsing_schema_name, executions FROM v$sqlarea ORDER BY executions desc; If there are tens of thousands SQLs with 1 execution - you are having shared pool fragmentation. To avoid future exceptions either rewrite SQLs (usually not using binding variables causes SQL area bloat) or upgrade to 11g. It better handles shared pool fragmentation.