RMAN Backup - Production

Ü  Level 0 Full Backup: weekly (Sunday)

Ü  Level 1 Incremental Backup: daily (Mon–Sat)

Ü  Archive Log Backup: Every after 2 Hours

Ü  Controlfile + SPFILE separate backup (weekly)

Ü  TAG

Ü  3 parallel channels

Ü  Validation included

1️ RMAN Supporting Configurations:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

2️ Weekly Level 0 Full Backup (Sunday):

RUN {

  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c3 DEVICE TYPE DISK;

  -- Level 0 Full Database Backup

  BACKUP

    INCREMENTAL LEVEL 0

    DATABASE

    FORMAT '/u01/backup/%d_L0_%T_%U'

    TAG 'LEVEL0_FULL';

  -- Archivelog Backup + delete input

  BACKUP

    ARCHIVELOG ALL

    FORMAT '/u01/backup/%d_ARC_%T_%U'

    DELETE INPUT;

  -- Controlfile + SPFILE Backup

  BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/%d_C_%T_%U' TAG 'CONTROLFILE';

  BACKUP SPFILE FORMAT '/u01/backup/%d_S_%T_%U' TAG 'SPFILE';

  -- Validate backup immediately

  RESTORE VALIDATE DATABASE;

  RELEASE CHANNEL c1;

  RELEASE CHANNEL c2;

  RELEASE CHANNEL c3;

}

3️ Daily Level 1 Incremental Backup (Mon–Sat):

RUN {

  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c3 DEVICE TYPE DISK;

  -- Level 1 Incremental Backup (Differential)

  BACKUP

    INCREMENTAL LEVEL 1

    DATABASE

    FORMAT '/u01/backup/%d_L1_%T_%U'

    TAG 'LEVEL1_INC';

  -- Optional: Controlfile/SPFILE weekly only

  -- Validate incremental backup

  RESTORE VALIDATE DATABASE;

  RELEASE CHANNEL c1;

  RELEASE CHANNEL c2;

  RELEASE CHANNEL c3;

}

4️ Archive Log Backup Every 2 Hours

RUN {

  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

  BACKUP

    ARCHIVELOG ALL

    FORMAT '/u01/backup/%d_ARC_%T_%U'

    DELETE INPUT;

  RELEASE CHANNEL c1;

}

r  Daily Level 1 Cumulative Backup (Mon–Sat) + Archivelog

RUN {

  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c3 DEVICE TYPE DISK;

  -- Level 1 Cumulative Backup

  BACKUP

    INCREMENTAL LEVEL 1

    CUMULATIVE

    DATABASE

    FORMAT '/u01/backup/%d_L1C_%T_%U'

    TAG 'LEVEL1_CUM';

  -- Archivelog Backup + delete input

  BACKUP

    ARCHIVELOG ALL

    FORMAT '/u01/backup/%d_ARC_%T_%U'

    DELETE INPUT;

  -- Optional: Controlfile/SPFILE weekly only

  -- Validate incremental backup

  RESTORE VALIDATE DATABASE;

  RELEASE CHANNEL c1;

  RELEASE CHANNEL c2;

  RELEASE CHANNEL c3;

}

🟢 Backup Script:

🟢 Step 1: Weekly Level 0 Full Backup Script (Sunday)

📂 /u01/backup/rman_level0.sh

#!/bin/bash

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_home

export ORACLE_SID=MAXCDB

export PATH=$ORACLE_HOME/bin:$PATH

export NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"

BACKUP_DIR=/u01/backup

LOG_DIR=/u01/backup/log

rman target / log=$LOG_DIR/level0_$(date +%Y%m%d_%H%M).log <<EOF

RUN {

  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c3 DEVICE TYPE DISK;

  BACKUP INCREMENTAL LEVEL 0 DATABASE

    FORMAT '$BACKUP_DIR/%d_L0_%T_%U'

    TAG 'LEVEL0_FULL';

  BACKUP ARCHIVELOG ALL

    FORMAT '$BACKUP_DIR/%d_ARC_%T_%U'

    DELETE INPUT;

  BACKUP CURRENT CONTROLFILE FORMAT '$BACKUP_DIR/%d_C_%T_%U' TAG 'CONTROLFILE';

  BACKUP SPFILE FORMAT '$BACKUP_DIR/%d_S_%T_%U' TAG 'SPFILE';

  RESTORE VALIDATE DATABASE;

  RELEASE CHANNEL c1;

  RELEASE CHANNEL c2;

  RELEASE CHANNEL c3;

}

EOF

🟢 Step 2: Daily Level 1 Incremental Backup Script (Mon–Sat)

📂 /u01/app/backup/rman_level1.sh

#!/bin/bash

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_home

export ORACLE_SID=MAXCDB

export PATH=$ORACLE_HOME/bin:$PATH

export NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"

BACKUP_DIR=/u01/backup

LOG_DIR=/u01/backup/log

rman target / log=$LOG_DIR/rman_$(date +%Y%m%d_%H%M).log <<EOF

RUN {

  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

  ALLOCATE CHANNEL c3 DEVICE TYPE DISK;

  BACKUP INCREMENTAL LEVEL 1 DATABASE

    FORMAT '$BACKUP_DIR/%d_L1_%T_%U'

    TAG 'LEVEL1_INC';

  RESTORE VALIDATE DATABASE;

  RELEASE CHANNEL c1;

  RELEASE CHANNEL c2;

  RELEASE CHANNEL c3;

}

EOF

🟢 Step 3: Archive Log Backup Script (Every 2 Hours)

📂 /u01/backup/rman_arch.sh

#!/bin/bash

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_home

export ORACLE_SID=MAXCDB

export PATH=$ORACLE_HOME/bin:$PATH

export NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"

BACKUP_DIR=/u01/backup

LOG_DIR=/u01/backup/log

rman target / log=$LOG_DIR/rman_$(date +%Y%m%d_%H%M).log <<EOF

RUN {

  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

  BACKUP ARCHIVELOG ALL

    FORMAT '$BACKUP_DIR/%d_ARC_%T_%U'

    DELETE INPUT;

  RELEASE CHANNEL c1;

}

EOF

🟢 Step 4: Script executable

chmod +x /u01/app/backup/rman_level0.sh

chmod +x /u01/app/backup/rman_level1.sh

chmod +x /u01/app/backup/rman_arch.sh

🟢 Step 5: Add to Crontab

# Weekly Level 0 Full Backup – Every Sunday at 02:00 AM

0 2 * * 0 /u01/app/backup/rman_level0.sh > /dev/null 2>&1

# Daily Level 1 Incremental Backup – Monday to Saturday at 02:00 AM

0 2 * * 1-6 /u01/app/backup/rman_level1.sh > /dev/null 2>&1

# Archive Log Backup – Every 2 hours

0 */2 * * * /u01/app/backup/rman_arch.sh > /dev/null 2>&1


Previous Post Next Post

نموذج الاتصال