daily_expdp_v6.ksh 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/bin/ksh
  2. # ============================================================================================================
  3. # Richard Wilson - 28.04.2017
  4. # Backup the database using Data Pump.
  5. # ------------------------------------------------------------------------------------------------------------
  6. # History:
  7. # RW 02.06.2014 Minor modifications.
  8. # RW 24.06.2014 Parallelised - RW - Removed 28.04.2017.
  9. # EXPDP to ASM only.
  10. # RW 26.06.2014 Added ASM dump file deletion.
  11. # RW 04.09.2014 Use dynamic date, changed ORACLE_HOME.
  12. # Corrected errors in ASM purge.
  13. # RW 28.04.2017 Modified for tst-02
  14. # RW 28.04.2017 Added Database Sizing function.
  15. #
  16. # ============================================================================================================
  17. # OWNER DIRECTORY_NAME DIRECTORY_PATH
  18. # ---------- -------------- ---------------------------------------------------------------------------------
  19. # SYS DUMPSET_LOGS /home/oracle/Scripts/DP/logs
  20. # SYS EXP_DIR +DATA/<${ORACLE_SID}>/DUMPSET
  21. # ------------------------------------------------------------------------------------------------------------
  22. function is_sid_valid
  23. {
  24. if [ `ps -ef | grep -v grep | grep "ora_pmon_${ORACLE_SID}$" | wc -l 2> /dev/null` -eq 0 ]
  25. then
  26. return 1
  27. else
  28. return 0
  29. fi
  30. }
  31. function get_db_size
  32. {
  33. res=`sqlplus -s expman/expdp@${ORACLE_SID} <<-EOF
  34. SET ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON TAB OFF
  35. column bytes format 99999999999999999
  36. select sum(bytes) bytes from dba_extents;
  37. exit
  38. EOF`
  39. echo ${res}
  40. }
  41. # ------------------------------------------------------------------------------------------------------------
  42. export ORACLE_SID=`echo ${1} | tr "[a-z]" "[A-Z]"`
  43. export SIZE_FLAG="" # Set to NULL value.
  44. export ORACLE_HOME="/u01/app/oracle/product/11.2.0/db_1"
  45. export SCRIPTS_DIR="/home/oracle/Scripts/DP"
  46. if [ "$#" -eq 1 ]
  47. then
  48. if is_sid_valid
  49. then
  50. if [ `get_db_size` -gt 10000000000 ]
  51. then
  52. SIZE_FLAG="exclude=SCHEMA:\"in \(\'MDMADM\',\'CCBADM\'\)\""
  53. fi
  54. # Check for log file, and if exists, rename.
  55. [ -f ${SCRIPTS_DIR}/logs/${ORACLE_SID}_`date '+%a'`_daily_expdp.log ] && mv -f ${SCRIPTS_DIR}/logs/${ORACLE_SID}_`date '+%a'`_daily_expdp.log ${SCRIPTS_DIR}/logs/old_${ORACLE_SID}_`date '+%a'`_daily_expdp.log || :
  56. # Export the database.
  57. ${ORACLE_HOME}/bin/expdp expman/expdp@${ORACLE_SID} dumpfile=EXP_DIR:${ORACLE_SID}_`date '+%a'`_daily_expdp_%U.dmp full=y ${SIZE_FLAG} logfile=DUMPSET_LOGS:${ORACLE_SID}_`date '+%a'`_daily_expdp.log reuse_dumpfiles=y #parallel#
  58. # Purge old EXPDP files from ASM - .......use for later..........
  59. # if [ $? -eq 0 ]
  60. # then
  61. # export ORACLE_SID="+ASM"
  62. # export ORACLE_HOME="/u01/app/oracle/product/11.2.0/grid"
  63. #last_day=`date +%a --date='4 days ago'`
  64. #${ORACLE_HOME}/bin/asmcmd rm -f +DATA/${ORACLE_SID}/dumpset/${ORACLE_SID}_${last_day}_daily_expdp_*.dmp
  65. # fi
  66. else
  67. echo -e "ERROR: Parameter 1: Database '${ORACLE_SID}' does not exist."
  68. fi
  69. else
  70. echo -e "ERROR: Usage daily_expdp_v?.ksh <ORACLE_SID>."
  71. fi
  72. # =============================================================================================================