kamctl.oracle 2.6 KB

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