Feb 12, 2010

Archive Mount Point 100% percent filled up

If your archive mount is 100% filled up.

what are the action we need to take?

Step 1 : Move some of the archive sequence to another mount point

Ex : /opt/oracle/arch/demo ---> is my archive log destination
/u01/oracle/backup ----> is the temporary destination where I m moving my archivelog files

Note : Be careful while moving the archive log files to other mount because it might
got corrupted. So do not try to move the archive log file which is in "ACTIVE"
for safer try to leave 4 to 5 archive log files from

consider you have the current log sequence is 134.so the previous archive log file sequence is 133

$ ls -ltr /opt/oracle/arch/demo/1_13*
(It will display the current archive logfile. Dont try to move this file seq starts with 131,132,133 )
$ cd /opt/oracle/arch/demo;ls -ltr 1_1*
$ mv 1_12* /u01/oracle/backup/.

Note: After moving the archive files your Database Starts works Normally

Step 2 : Now catalog the Archivelog files moved to new location

RMAN> CATALOG STARTS WITH '/u01/oracle/backup';
RMAN> CROSSCHECK ARCHIVELOG ALL;

Step 3 : Now Kick the archivelog backup (if you have script just execute that script)

RMAN> run
{
backup archivelog all delete input;
}

Feb 11, 2010

How to grep a particular string and list all the files

$cd $ORACLE_HOME/dbs; grep user_dump_dest initxxxdev.ora
Output:
user_dump_dest=/u01/app/oracle/admin/initxxxdev/udump
$cd /u01/app/oracle/admin/initxxxdev/udump; grep 'CREATE CONTROLFILE' *\ awk -F: '{print $1}'xargs ls -ltr
Output:
-rwx-rwx--- Oracle Oinstall 4499 Nov 12:30 xxxdev_ora_4515.trc

Undo tablespace recovery

Follow the below steps, If the database is up and running

You can see this error in your alert log file:

ORA-00600: internal error code, arguments: [6006], [1], [], [], [], [], [], []
SMON: mark undo segment 29 as needs recovery

ORACLE Instance test2 (pid = 11) - Error 600 encountered while recovering
transaction (29, 42) on object 36.

Step 1 : Create a new undo tablespace

create undo tablespace undotbs2 datafile
‘/opt/oracle/oradata/prod003/undotbs2.dbf’ size 300m;

Step 2: Find the problematic undo segment using the below command

sql>select SEGMENT_NAME, STATUS from dba_rollback_segs;

Step 3: Alter the spfile to use the currently created undotbs2.

sql>alter system set undo_tablespace=undotbs2 scope=spfile;

Step 4 : create a pfile from the spfile

sql> create pfile from spfile;

Step 5 : Append the problematic rollback segements in the pfile.

_offline_rollback_segments=” segment_name from dba_rollback_segs"
_corrupt_rollback_segments=”segment_name from dba_rollback_segs”


Step 6 : shutdown the database using immediate or abort.

Step 7 : startup using pfile.

Step 8 : bring the tablespace offline and drop the corrupted undo tablespace .

sql> alter tablespace undotbs1 offline;
sql> drop tablespace undotbs1 including contents and datafile;


More Info Refer :

http://www.dba-oracle.com/oracle_tips_fix_corrupt_undo_segments.htm