kamctl.oracle 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #!/bin/sh
  2. #
  3. # control tool for maintaining Kamailio
  4. #
  5. #===================================================================
  6. ##### ----------------------------------------------- #####
  7. ### ORACLE specific variables and functions
  8. #
  9. SESSOPT="set term off feed 0 lin 8000 pages 50000 ver off colsep '|'
  10. col count(*) jus l format 'tm'
  11. alter session set nls_date_format='DD-MM-RR HH24:MI:SS';
  12. "
  13. ##### ----------------------------------------------- #####
  14. ### load SQL base
  15. #
  16. if [ -f "$MYLIBDIR/kamctl.sqlbase" ]; then
  17. . "$MYLIBDIR/kamctl.sqlbase"
  18. else
  19. echo "Cannot load SQL core functions '$MYLIBDIR/kamctl.sqlbase' - exiting ..."
  20. exit -1
  21. fi
  22. if [ -f "$MYLIBDIR/kamdbfunc.oracle" ]; then
  23. . "$MYLIBDIR/kamdbfunc.oracle"
  24. else
  25. echo "Cannot load ORACLE core functions '$MYLIBDIR/kamdbfunc.oracle' - exiting ..."
  26. exit -1
  27. fi
  28. ##### ----------------------------------------------- #####
  29. ### binaries
  30. if [ -z "$SQLPLUS" ] ; then
  31. locate_tool sqlplus
  32. if [ -z "$TOOLPATH" ] ; then
  33. echo "error: 'sqlplus' tool not found: set SQLPLUS variable to correct tool path"
  34. exit
  35. fi
  36. SQLPLUS="$TOOLPATH"
  37. export SQLPLUS
  38. fi
  39. if [ -z "$KAMAILIO_ORASEL" ] ; then
  40. locate_tool kamailio_orasel
  41. if [ -n "$TOOLPATH" ] ; then
  42. KAMAILIO_ORASEL="$TOOLPATH"
  43. export KAMAILIO_ORASEL
  44. fi
  45. fi
  46. ##### ----------------------------------------------- #####
  47. # input: sql query, optional sqlplus command-line params
  48. oracle_query() {
  49. # if password not yet queried, query it now
  50. prompt_oracle_pw rw
  51. mdbg "oracle_query: $SQLPLUS $2 -S -L -R 3 $DBRWUSER@$DBNAME '$1'"
  52. RC=`echo "$SESSOPT $1" | $SQLPLUS $2 -S -L -R 3 ${DBRWUSER}/${DBRWPW}@${DBNAME}`
  53. RE=$?
  54. echo "$RC"
  55. if [ $RE -eq 0 ]; then
  56. echo "$RC" | $EGREP -qi "error"
  57. if [ $? -eq 0 ]; then RE=1; fi
  58. fi
  59. if [ $RE -eq 0 ]; then
  60. echo "$RC" | $EGREP -q "ORA-[0-9]"
  61. if [ $? -eq 0 ]; then RE=1; fi
  62. fi
  63. return $RE
  64. }
  65. # input: sql query, optional sqlplus command-line params
  66. oracle_ro_query() {
  67. # if password not yet queried, query it now
  68. prompt_oracle_pw ro
  69. if [ -z "$KAMAILIO_ORASEL" ]; then
  70. mdbg "oracle_ro_query: $SQLPLUS $2 -S -L -R 3 $DBROUSER@$DBNAME '$1'"
  71. RC=`echo "$SESSOPT $1" | $SQLPLUS $2 -S -L -R 3 ${DBROUSER}/${DBROPW}@${DBNAME}`
  72. RE=$?
  73. echo "$RC"
  74. if [ $RE -eq 0 ]; then
  75. echo "$RC" | $EGREP -qi "error"
  76. if [ $? -eq 0 ]; then RE=1; fi
  77. fi
  78. if [ $RE -eq 0 ]; then
  79. echo "$RC" | $EGREP -q "ORA-[0-9]"
  80. if [ $? -eq 0 ]; then RE=1; fi
  81. fi
  82. return $RE
  83. else
  84. mdbg "oracle_ro_query: $KAMAILIO_ORASEL $DBROUSER@$DBNAME $2 -N -e '$1'"
  85. $KAMAILIO_ORASEL ${DBROUSER}/${DBROPW}@${DBNAME} $2 -Ne "$1"
  86. return $?
  87. fi
  88. }
  89. DBCMD=oracle_query
  90. DBROCMD=oracle_ro_query
  91. DBRAWPARAMS=""
  92. if [ -n "$KAMAILIO_ORASEL" ]; then
  93. DBRAWPARAMS="-B"
  94. fi