Search This Blog

Wednesday, April 27, 2011

Duplication Fails with Multiple RMAN-06023 Errors: Scenario

Duplication Fails with Multiple RMAN-06023 Errors: Scenario


In this scenario, you back up the database, then run the DUPLICATE command. You receive the following error stack:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 09/04/2001 13:55:11
RMAN-03015: error occurred in stored script Memory Script
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 8 found to restore
RMAN-06023: no backup or copy of datafile 7 found to restore
RMAN-06023: no backup or copy of datafile 6 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore

Duplication Fails with Multiple RMAN-06023 Errors: Diagnosis


The DUPLICATE command recovers to archived redo logs, but cannot recover into online redo logs. Thus, if the restored backup cannot be made consistent without applying the online redo logs, then duplication fails with RMAN-06023 errors because RMAN is looking for backups created before the most recent archived log.

Duplication Fails with Multiple RMAN-06023 Errors: Solution


After backing up the source database, archive and back up the current redo log:
RMAN> SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
RMAN> BACKUP ARCHIVELOG ALL;
 
ref: Oracle® Database Backup and Recovery Advanced User's Guide

Wednesday, April 20, 2011

Shell script schedule backup MySQL Database

There are many software that can help you schedule backup MySQL Database using user interface. But with MySQL Database are installed on Linux host, you write Shell script to schedule backup MySQL Database without any additional software. Below I will show the script:

#!/bin/bash

MyUSER="root"
MyPASS="rootpassword"
MyHOST="localhost"

# Linux bin paths, change this if it can't be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"

# Backup Dest directory, change this if you have someother location
DEST="/backup/database"

# Main directory where backup will be stored
MBD="$DEST/mysql"

# Get hostname
HOST="$(hostname)"

# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"

# DO NOT BACKUP these databases
IGGY="test"

[ ! -d $DEST ] && mkdir -p $DEST || :
[ ! -d $MBD ] && mkdir -p $MBD || :

# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST

# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
echo "==>List of Database:" $DBS

for db in $DBS
do
  skipdb=-1
  if [ "$IGGY" != "" ]; then
    for i in $IGGY
    do
      [ "$db" == "$i" ] && skipdb=1 || :
    done
  fi

  if [ "$skipdb" == "-1" ] ; then
    FILE="$MBD/$db-$HOST-$NOW.gz"
    echo "==>dump database" $db "to file" $FILE
    # do all inone job in pipe,
    # connect to mysql using mysqldump for select mysql database
    # and pipe it out to gz file in backup dir
    $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
  fi
done

Related Posts with Thumbnails