weekly_expdp_v30.ksh 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. # RW 07.06.2017 Modified for Weekly backups.
  16. # RW 04.07.2017 Changed DB size structure.
  17. # RW 04.07.2017 Added DEBUG method.
  18. # RW 05.07.2017 Added asmcmd file deletion.
  19. #
  20. # ============================================================================================================
  21. # OWNER DIRECTORY_NAME DIRECTORY_PATH
  22. # ---------- -------------- ---------------------------------------------------------------------------------
  23. # SYS DUMPSET_LOGS /home/oracle/Scripts/DP/logs
  24. # SYS EXP_DIR +DATA/<${ORACLE_SID}>/DUMPSET
  25. # ------------------------------------------------------------------------------------------------------------
  26. function is_sid_valid
  27. {
  28. if [ `ps -ef | grep -v grep | grep "ora_pmon_${ORACLE_SID}$" | wc -l 2> /dev/null` -eq 0 ]
  29. then
  30. return 1
  31. else
  32. return 0
  33. fi
  34. }
  35. # ------------------------------------------------------------------------------------------------------------
  36. export DEBUG="N" # "Y"||"N"
  37. export ORACLE_SID=`echo ${1} | tr "[a-z]" "[A-Z]"`
  38. export DB_SID=${ORACLE_SID}
  39. export ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"
  40. export SCRIPTS_DIR="/home/oracle/Scripts/DP"
  41. export PARFILE="${SCRIPTS_DIR}/expdp_${ORACLE_SID}.par"
  42. export ASM_CMD_FILE="${SCRIPTS_DIR}/${DB_SID}_asmcmd.txt"
  43. [ "${DEBUG}" == "Y" ] && cmd="echo" || cmd="eval"
  44. if [ "$#" -eq 1 ]
  45. then
  46. if is_sid_valid
  47. then
  48. res=`${ORACLE_HOME}/bin/sqlplus -s expman/expdp@${ORACLE_SID} <<-EOF
  49. SET ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON TAB OFF
  50. column bytes format 99999
  51. select trim(round(sum(bytes)/1024/1024/1024)) from dba_extents;
  52. exit;
  53. EOF`
  54. echo "userid=expman/expdp@${ORACLE_SID}" > ${PARFILE}
  55. echo "dumpfile=EXP_DIR:${ORACLE_SID}_week_`date '+%V'`_expdp.dmp" >> ${PARFILE}
  56. echo "full=y" >> ${PARFILE}
  57. echo "logfile=DUMPSET_LOGS:${ORACLE_SID}_week_`date '+%V'`_expdp.log" >> ${PARFILE}
  58. echo "reuse_dumpfiles=y" >> ${PARFILE}
  59. if [[ ${res} -gt 10 ]] # GB
  60. then
  61. echo "# ${ORACLE_SID} DB Size is ${res}GB excluding CCB & MDM." >> ${PARFILE}
  62. echo "exclude=SCHEMA:\"in ('MDMADM','CCBADM')\"" >> ${PARFILE}
  63. fi
  64. ${cmd} ${ORACLE_HOME}/bin/expdp parfile=${PARFILE}
  65. # Purge from ASM..............
  66. if [ $? -eq 0 ]
  67. then
  68. [ -f ${SCRIPTS_DIR}/logs/${ORACLE_SID}_week_`date +%V --date='2 weeks ago'`_expdp.log ] && rm -f ${SCRIPTS_DIR}/logs/${ORACLE_SID}_week_`date +%V --date='2 weeks ago'`_expdp.log || :
  69. export ORACLE_SID="+ASM"
  70. export ORACLE_HOME="/u01/app/oracle/product/11.2.0/grid"
  71. echo "rm +DATA/${DB_SID}/dumpset/${DB_SID}_week_`date +%V --date='4 weeks ago'`_expdp.dmp" > ${ASM_CMD_FILE}
  72. ${ORACLE_HOME}/bin/asmcmd < ${ASM_CMD_FILE}
  73. fi
  74. else
  75. echo -e "ERROR: Parameter 1: Database '${ORACLE_SID}' does not exist."
  76. fi
  77. else
  78. echo -e "ERROR: Usage weekly_expdp_v?.ksh <ORACLE_SID>."
  79. fi
  80. # =============================================================================================================