How to Schedule or Automate Backup through Crontab
Schedule or Automate Backup is a needed thing almost in all environment. We can do automate or scheduling tasks through two ways, one is DBMS_SCHEDULER packager which will be discusses in another topic and another is OS scheduler. If you think about OS scheduler then on unix box use crontab and on windows box use scheduling jobs.
In this topic I have shown how we can take automate backup through crontab tool.
To avoid error Verify that ORACLE_HOME is set properly error like as below
Message file RMAN.msb not found
Verify that ORACLE_HOME is set properly
set proper ORACLE_HOME and ORACLE_SID in your backup file.
So I created my backup_job.sh as below.
bash-3.00$ vi backup_job.sh
#!/bin/bash
export ORACLE_HOME=/oracle/app/oracle/product/10.2.0/db_1
export ORACLE_SID=dbase
/oracle/app/oracle/product/10.2.0/db_1/bin/rman target sys/a@moon:1522/dbase cmdfile=/oradata1/
backup/backup_job2.sh
If you don't set $ORACLE_HOME and don't give full path of rman then possibly in the output file you get rman:not found error.
/oradata1/backup/backup_job.sh: rman: not found
In the script I provided full path of rman.
The actual backup script are in backup_job2.sh and from backup_job.sh it will be called through rman.
bash-3.00$ vi backup_job2.sh
backup database format '/oradata1/backup/%U';
If you don't make these script executable or don't change permission to 777 then you likely get error in the output file as,
sh: /oradata1/backup/backup_job.sh: cannot execute
So change the permission as
bash-3.00$ chmod 777 backup_job.sh
bash-3.00$ chmod 777 backup_job2.sh
To write contents within crontab in vi editor issue,
bash-3.00$export EDITOR=vi
bash-3.00$ crontab -e
35 06 * * * /oradata1/backup/backup_job1.sh > /oradata1/backup/backupdata.log
By default cron jobs sends a email to the user account executing the cronjob. If this is not needed put the following command At the end of the cron job line .
48 06 * * * /oradata1/backup/backup_job.sh > /oradata1/backup/backupdata.log 2>&1
Now I will discuss some aspects of cronjob.
Crontab Restrictions
-You can execute crontab if your name appears in the file /usr/lib/cron/cron.allow.
-If that file does not exist, you can use crontab if your name does not appear in the file /usr/lib/cron/cron.deny.
-If only cron.deny exists and is empty, all users can use crontab.
-If neither file exists, only the root user can use crontab.
-The allow/deny files consist of one user name per line.
Crontab Commands
Before invoking crontab use export EDITOR=vi ;to specify a editor to open crontab file.
Now open crontab as below
-crontab -e :Edit your crontab file, or create one if it doesn't already exist.
-crontab -l :Display your crontab file.
-crontab -r :Remove your crontab file.
-crontab -v :Display the last time you edited your crontab file. (This option is only available on a few systems.)
Crontab syntax option
MINUTE HOUR DAY_OF_MONTH MONTH DAY_OF_WEEK USER COMMAND
for any field multiple value could assign, where they are separated by comma.
MINUTE accept value from 00 to 59
HOUR accept value from 00 to 23
DAY_OF_MONTH accept value from 01 to 31
MONTH accept value from 01 to 12
DAY_OF_WEEK accept value from 0 to 6 [0 for sunday, 1 for monday, ...]
--USER means that who will execute the command (optional/not common)
COMMAND the command for execution
In this topic I have shown how we can take automate backup through crontab tool.
To avoid error Verify that ORACLE_HOME is set properly error like as below
Message file RMAN.msb not found
Verify that ORACLE_HOME is set properly
set proper ORACLE_HOME and ORACLE_SID in your backup file.
So I created my backup_job.sh as below.
bash-3.00$ vi backup_job.sh
#!/bin/bash
export ORACLE_HOME=/oracle/app/oracle/product/10.2.0/db_1
export ORACLE_SID=dbase
/oracle/app/oracle/product/10.2.0/db_1/bin/rman target sys/a@moon:1522/dbase cmdfile=/oradata1/
backup/backup_job2.sh
If you don't set $ORACLE_HOME and don't give full path of rman then possibly in the output file you get rman:not found error.
/oradata1/backup/backup_job.sh: rman: not found
In the script I provided full path of rman.
The actual backup script are in backup_job2.sh and from backup_job.sh it will be called through rman.
bash-3.00$ vi backup_job2.sh
backup database format '/oradata1/backup/%U';
If you don't make these script executable or don't change permission to 777 then you likely get error in the output file as,
sh: /oradata1/backup/backup_job.sh: cannot execute
So change the permission as
bash-3.00$ chmod 777 backup_job.sh
bash-3.00$ chmod 777 backup_job2.sh
To write contents within crontab in vi editor issue,
bash-3.00$export EDITOR=vi
bash-3.00$ crontab -e
35 06 * * * /oradata1/backup/backup_job1.sh > /oradata1/backup/backupdata.log
By default cron jobs sends a email to the user account executing the cronjob. If this is not needed put the following command At the end of the cron job line .
48 06 * * * /oradata1/backup/backup_job.sh > /oradata1/backup/backupdata.log 2>&1
Now I will discuss some aspects of cronjob.
Crontab Restrictions
-You can execute crontab if your name appears in the file /usr/lib/cron/cron.allow.
-If that file does not exist, you can use crontab if your name does not appear in the file /usr/lib/cron/cron.deny.
-If only cron.deny exists and is empty, all users can use crontab.
-If neither file exists, only the root user can use crontab.
-The allow/deny files consist of one user name per line.
Crontab Commands
Before invoking crontab use export EDITOR=vi ;to specify a editor to open crontab file.
Now open crontab as below
-crontab -e :Edit your crontab file, or create one if it doesn't already exist.
-crontab -l :Display your crontab file.
-crontab -r :Remove your crontab file.
-crontab -v :Display the last time you edited your crontab file. (This option is only available on a few systems.)
Crontab syntax option
MINUTE HOUR DAY_OF_MONTH MONTH DAY_OF_WEEK USER COMMAND
for any field multiple value could assign, where they are separated by comma.
MINUTE accept value from 00 to 59
HOUR accept value from 00 to 23
DAY_OF_MONTH accept value from 01 to 31
MONTH accept value from 01 to 12
DAY_OF_WEEK accept value from 0 to 6 [0 for sunday, 1 for monday, ...]
--USER means that who will execute the command (optional/not common)
COMMAND the command for execution
Comments
Post a Comment