Tuesday, January 6, 2009

Strange Oracle Problems: Oracle database won't start

One of the desktops in my office is being used as a Server. It has Quad-core AMD Phenom X4, and 4 hard drives in Linux Software RAID 5 Configuration (Ok, it is a strange beast, because I was the one who chose the components and bought the system). We installed Centos 4.7 (64-bit), Oracle 10g, and SAP Netweaver. It is very much a hassle to set up, the 64-bit Oracle. But recently a strange error pops up when starting the Oracle database. It says, the shared_pool_reserved_size is out-of-bound (too large). The current setting is about 100 MB. At first, I wonders is this related to problems occured before, because the mixups between 64-bit and 32-bit parts of the Oracle RDBMS. I thought, the valid range of shared_pool_reserved_size is determined by the architecture (that is-64 or 32 bit).
Then, after some readings and pondering, I found out that not the shared_pool_reserved_size that was incorrect, it was the shared_pool. And it has nothing to do with the 64-bit architecture. Current setting of shared_pool is at 157MB, and shared_pool_reserved_size is only allowed from min_reserved_size to 0.5*shared_pool. The correct shared_pool setting is 1570MB (1.5 GB), and some mishaps make one of the numbers truncated..
Learnt some new Oracle commands while fixing this issue.. these could be run even when the database is idle (not mounted, not started).
/home/oraac1>sqlplus /nolog
>CONNECT / AS SYSDBA;
>CREATE PFILE FROM SPFILE;
This command creates a text-based parameter file from the existing binary parameter file. Which file? The default one. This would differ between systems, but I bet the default one is the one thats being used to start the Oracle RDBMS in normal conditions. In my windows Oracle XE, this is C:\oraclexe\app\oracle\product\10.2.0\server\dbs\SPFILEXE.ORA. In the Linux Oracle, this is /oracle/AC1/102_64/dbs/spfileAC1.ora, and the created text-based parameter file would be /oracle/AC1/102_64/dbs/initAC1.ora.
After the text-based PFILE was created, I just correct the shared_pool line (add another 0 in the end). Then..
>CREATE SPFILE FROM PFILE;
This command creates a binary startup parameter file from the existing text parameter file. Similar to the previous one, this also refers to default parameter files.
ok.. that done, I just need to start the whole SAP-Oracle system using startsap, and all is well.

No comments: