Thursday, January 3, 2013

oracle tablespace usage SQL script

This SQL could be usefull if you would lika a list of your tablespaces and be able to see how full they are:


SELECT tablespace_name,
       ROUND (used_bytes / (1024 * 1024)) used_mb,
       ROUND (max_bytes / (1024 * 1024)) max_mb,
       ROUND ( (used_bytes) / max_bytes * 100) percent_full
  FROM (SELECT ddf.tablespace_name,
               NVL (dfs.used_bytes, 0) used_bytes,
               ddf.max_bytes
          FROM (  SELECT tablespace_name, SUM (bytes) used_bytes
                    FROM dba_segments
                GROUP BY tablespace_name) dfs,
               (  SELECT tablespace_name,
                         SUM (GREATEST (bytes, maxbytes)) max_bytes
                    FROM dba_data_files
                GROUP BY tablespace_name
                union
                  SELECT tablespace_name,
                         SUM (GREATEST (bytes, maxbytes)) max_bytes
                    FROM dba_temp_files
                GROUP BY tablespace_name) ddf
         WHERE ddf.tablespace_name = dfs.tablespace_name(+));





TABLESPACE_NAME                   USED_MB     MAX_MB PERCENT_FULL
------------------------------ ---------- ---------- ------------
SYSAUX                               1478      32768            5
UNDOTBS1                               70       4096            2
USERS                                  44       4096            1
SYSTEM                                669      32768            2
UNDOTBS2                               18       4096            0
TEMP                                    0       4096            0


The script also includes the temporary tablespaces like TEMP and calculates the MAX_MB from the maxsize of the datafiles and not tha actual size.


Friday, December 21, 2012

Could not start database ORA-01092: Oracle instance terminated. Disconnection forced

Oracle11g CRS with an Oracle10g database.

When testing our new RAC installation we disconnected our NetApp storage brutally from the cluster by disconnecting the network cables.
Connected it back again and restarted the both nodes of the cluster. The crs came upp fine but the database failed to start.
The log shiws the following errors:

ORA-00604: error occured at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/oradata/myDb/dbfile/undotbs01.dbf'



$ . oraenv
myDb1

$ sqlplus / as sysdba

SQL> startup mount

SQL> select name, status, file# from gv$datafile;

NAME                                          STATUS                FILE#
----------------------------------   ------------------  -----
/oradata/myDb/dbfile/undotbs01.dbf   OFFLINE             2
/oradata/myDb/dbfile/undotbs02.dbf   ONLINE               3
/oradata/myDb/dbfile/system01.dbf     ONLINE                1

The undo-tablespace has suddenly gone offline!

I tried the following:

SQL> alter database recover automatic datafile 2;

SQL> alter database datafile 2 online;

SQL> alter database open;

database opened


This could also be done from RMAN:


$ rman target / nocatalog

RMAN> startup mount

RMAN> recover datafile 2;

RMAN> sql 'alter database datafile 2 online';

RMAN> alter database open;

database opened

All well again!

Monday, December 10, 2012

PRKR-1005 : adding of cluster database testdb configuration failed, PROC-5: User does not have permission to perform a cluster registry operation on this key

PRKR-1005 : adding of cluster database myDb configuration failed, PROC-5: User does not have permission to perform a cluster registry operation on this key

I was struggling trying to get a failed databas installation, Oracle 10.2.0.5 2 nodes RAC, working. The database instances could be started manually with:

Logged in as oracle

$ sqlplus / as sysdba

SQL> startup


But the registration with the crs, in this case an Oracle 11.2.0.3, did not work and I tryed everything to unregister the instances and the database from the cluster:

$ srvctl remove instance -d myDb -i myDb1

$ srvctl remove database -d myDb


I restarted the cluster and crs_stat showed no database registered with crs! But...

$ srvctl add database -d myDb -o /oracle/10.2.0.5

Just wouldn't work! The databas was already registered!


Run the following as root

This is strange but can bve fixed. First check that you have a backup of the crs config:

$ ocrconfig -showbackup

Then stop all cluster services:

$ crsctl stop cluster -all

Export the settings to a temporary file:

$ ocrconfig -export /tmp/config

Edit the file /tmp/config and remove the lines containing myDb:

DATABASE.LOG.myDb
DATABASE.LOG.myDb1.INSTANCE
DATABASE.LOG.myDb2.INSTANCE

Import the setting back again:

$ ocrconfig -import /tmp/config

Start the cluster services:

$ crsctl start cluster -all

Now you can try to register again as oracle

$ srvctl add database -d myDb /oracle/10.2.0.5



Friday, January 20, 2012

ORA-14086: a partitioned index may not be rebuilt as a whole

SQL> ALTER INDEX REBUILD ONLINE NOLOGGING compress 2 storage (initial 8k next 8k);
            *
ERROR at line 1:
ORA-14086: a partitioned index may not be rebuilt as a whole

 
To compress (use key compression on) a partitioned index you first have to create the index with the compress keyword. Drop it and recreate!
 
If you try to alter the index:

SQL> ALTER INDEX  compress;

ORA-02243: ogiltigt argument för ALTER INDEX eller ALTER MATERIALIZED VIEW


After recreation (drop and create) you can compress each partition on the index if you like:


SQL> alter index rebuild
    partition compress 2;

Friday, September 30, 2011

Oracle RAC installation guide

Googling around I found this fantastic Oracle 10G RAC installation bible/cookbook of 263(!) pages. Enjoy!
http://www.zaptron.com/chn/cookbook-v2%5B1%5D.0-10grac%20r2%20-%20asm%20-%20aix5l%20-%20san%20storage.pdf

Thursday, September 29, 2011

CRS-0213: Could not register resource LISTENER

Tried the following:

$ srvctl add listener -n myRadNode1 -o /oracle/11.1.0.6/


CRS-0213: Could not register resource 'ora.myRacNode1.LISTENER_MYRACNODE1.lsnr'.
 
Had a look in /opt/oracle/crs/log/qdb3h1/crsd/crsd.log
 
2011-09-29 18:35:48.266: [  CRSRES][1078892864] Missing required resources
 
What could be wrong?

$ crs_stat -t


Name Type Target State Host
-----------------------------------------------------------
ora.myRacDb.db application ONLINE ONLINE myRacNode1
ora....b1.inst application ONLINE ONLINE myRacNode1
ora....b2.inst application ONLINE ONLINE myRacNode2
NO VIP, NO GSD, NO ONS!

$ oifcfg getif

Showed nothing!


$ oifcfg setif -global eth0/X.X.X.0:public
$ oifcfg setif -global eth2/192.168.212.0:cluster_interconnect

I had to run /opt/oracle/crs/bin/vipca as root and after that:
 
$ crs_stat -t

Name Type Target State Host
------------------------------------------------------------
ora.myRacNode1.gsd application ONLINE ONLINE myRacNode1
ora.myRacNode1.ons application ONLINE ONLINE myRacNode1
ora.myRacNode1.vip application ONLINE ONLINE myRacNode1
ora.myRacNode2.gsd application ONLINE ONLINE myRacNode2
ora.myRacNode2.ons application ONLINE ONLINE myRacNode2
ora.myRacNode2.vip application ONLINE ONLINE myRacNode2
ora.myRacDb.db application ONLINE ONLINE myRacNode1
ora....b1.inst application ONLINE ONLINE myRacNode1
ora....b2.inst application ONLINE ONLINE myRacNode2


 
I was then able to add the listeners to the crs with srvctl add listener
 

ORA-27504: IPC error creating OSD context



I was installing Oracle 11gR1 two node RAC on vmware Linux red hat enterprise 64 bits
When trying to start the newly created instance, myRacDb2, on node 2 I received the following errors:

PRKP-1001 : Error starting instance myRacDb2 on node myRacNode2
SQL*Plus: Release 11.1.0.6.0 - Production on Thu Sep 29 15:12:19 2011 Copyright (c) 1982, 2007, Oracle. All rights reserved.
Enter user-name:
Connected to an idle instance.
SQL> ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependent operation:gethostbyname failed with status: 0
ORA-27301: OS failure message: Error 0
ORA-27302: failure occurred at: skgxpiphost2
ORA-27303: additional information: nodename myRacNode2.myDomain.com
SQL> Disconnected

I then added myRacNode1.myDomain.com and myRacNode2.myDomain.com to the /etc/hosts file with the same ip's as myRacNode1 and myRacNode2

Then I issued the:
srvctl start instance -i myRacDb2 -d myRacDb

 and voila! it worked!

 Some people tend to get this error when uninstalling Oracle 10g from their cluster. Oracle then replaces the file libskgxp11.so in ORACLE_HOME/bin folder for some reason. Please check this link for more info: https://forums.oracle.com/forums/thread.jspa?threadID=650846