RMAN_DB_Cleardown_v4.ksh 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/bin/ksh
  2. # ====================================================================================================
  3. # Title: RMAN_DB_Cleardown.ksh
  4. # Author: Richard Wilson
  5. # Date: 28.12.2017
  6. # File Name: RMAN_DB_Cleardown_v1.ksh
  7. # Description: Uses RMAN to cleardown archived redo logs and other backups.
  8. # Usage: Usage: RMAN_DB_Cleardown.ksh
  9. #
  10. # Warning: THINK!
  11. #
  12. # History:
  13. # 28.12.2017 RW First version.
  14. #
  15. # ----------------------------------------------------------------------------------------------------
  16. function is_sid_valid
  17. {
  18. if [ `ps -ef | grep -v grep | grep "ora_pmon_${ORACLE_SID}$" | wc -l 2> /dev/null` -eq 0 ]
  19. then
  20. return 1
  21. else
  22. return 0
  23. fi
  24. }
  25. function is_no_restore_point
  26. {
  27. return `${ORACLE_HOME}/bin/sqlplus -S / "as sysdba" <<-EOF
  28. set pagesize 0 feedback off verify off heading off termout off echo off
  29. select count(1) FROM V\\$RESTORE_POINT;
  30. EOF`
  31. }
  32. # ----------------------------------------------------------------------------------------------------
  33. export ORACLE_SID=`echo ${1} | tr "[a-z]" "[A-Z]"`
  34. export SCRIPT_DIR="/home/oracle/Scripts/RMAN"
  35. export RMAN_CMD_FILE=${SCRIPT_DIR}/${ORACLE_SID}_rman_cleardown_cmds.rman
  36. test `uname -n` = "uks-odbnrgtst-02" && export ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1" || export ORACLE_HOME="/u01/app/oracle/product/11.2.0/db_1"
  37. if [ ${#} -eq 2 ]
  38. then
  39. if is_sid_valid
  40. then
  41. if [[ "${2}" = +([0-9]) ]]
  42. then
  43. echo "connect target / " > ${RMAN_CMD_FILE}
  44. echo "run {" >> ${RMAN_CMD_FILE}
  45. echo "sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';" >> ${RMAN_CMD_FILE}
  46. echo "sql 'ALTER SYSTEM SET CONTROL_FILE_RECORD_KEEP_TIME=60 SCOPE=BOTH';" >> ${RMAN_CMD_FILE}
  47. echo "CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;" >> ${RMAN_CMD_FILE}
  48. echo "CONFIGURE CONTROLFILE AUTOBACKUP ON;" >> ${RMAN_CMD_FILE}
  49. echo "CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;" >> ${RMAN_CMD_FILE}
  50. echo "CONFIGURE SNAPSHOT CONTROLFILE NAME TO '${ORACLE_HOME}/dbs/snapcf_${ORACLE_SID}.f';" >> ${RMAN_CMD_FILE}
  51. echo "CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 4;" >> ${RMAN_CMD_FILE}
  52. echo "CROSSCHECK backup of database;" >> ${RMAN_CMD_FILE}
  53. echo "CROSSCHECK backup of controlfile;" >> ${RMAN_CMD_FILE}
  54. echo "CROSSCHECK backup of spfile;" >> ${RMAN_CMD_FILE}
  55. echo "CROSSCHECK backup of archivelog all;" >> ${RMAN_CMD_FILE}
  56. echo "backup archivelog all not backed up 1 times;" >> ${RMAN_CMD_FILE}
  57. echo "backup current controlfile;" >> ${RMAN_CMD_FILE}
  58. if is_no_restore_point
  59. then
  60. echo "delete noprompt archivelog all backed up 1 times to disk completed before 'sysdate-${2}';" >> ${RMAN_CMD_FILE}
  61. fi
  62. echo "}" >> ${RMAN_CMD_FILE}
  63. echo "exit" >> ${RMAN_CMD_FILE}
  64. echo ${ORACLE_HOME}/bin/rman cmdfile=${RMAN_CMD_FILE} log=${SCRIPT_DIR}/logs/${ORACLE_SID}_RMAN_cleardown.log
  65. else
  66. echo -e "\nERROR: Parameter 2: Non-numeric entered for 'Days'.\n"
  67. fi
  68. else
  69. echo -e "\nERROR: Parameter 1: Database '${ORACLE_SID}' does not exist.\n"
  70. fi
  71. else
  72. echo -e "\nUsage: RMAN_DB_Cleardown.ksh <ORACLE_SID> <ARCHIVELOG_RETENTION_DAYS>\n"
  73. fi
  74. # --------- End of File ------------------------------------------------------------------------------