123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- #!/bin/sh
- #
- # Script for adding and dropping Kamailio Oracle tables
- #
- # History:
- ##In you not have 'AS SYSDBA' access to database connect, comment next string
- ##and Oracle administrator must create DBROOTUSER
- ##(see scripts/oracle/admin/_create_as_sys.tmpl)
- DBSYSUSER="sys"
- # path to the database schemas
- DATA_DIR="/usr/local/share/kamailio"
- if [ -d "$DATA_DIR/oracle" ] ; then
- DB_SCHEMA="$DATA_DIR/oracle"
- else
- DB_SCHEMA="./oracle"
- fi
- ##### ----------------------------------------------- #####
- ### load ORACLE SQL base
- #
- if [ -f "$MYLIBDIR/kamdbfunc.oracle" ]; then
- . "$MYLIBDIR/kamdbfunc.oracle"
- else
- echo "Cannot load ORACLE core functions '$MYLIBDIR/kamdbfunc.oracle' - exiting ..."
- exit -1
- fi
- if [ -z "$SQLPLUS" ] ; then
- SQLPLUS=`which sqlplus 2>/dev/null`
- if [ -z "$SQLPLUS" ]; then
- merr "'sqlplus' tool not found: set SQLPLUS variable to correct tool path"
- exit 1
- fi
- export SQLPLUS
- fi
- if [ -z "$KAMAILIO_ORASEL" ] ; then
- KAMAILIO_ORASEL=`which kamailio_orasel 2>/dev/null`
- if [ -n "$SQLPLUS" ]; then
- export KAMAILIO_ORASEL
- fi
- fi
- #################################################################
- ORALOG=/tmp/opensrdbctl.log
- if [ -z "$SED" ]; then
- SED="sed"
- fi
- SED_ROOTUSER="$SED -e s/%DBROOTUSER%/$DBROOTUSER/g"
- SED_USERS="$SED_ROOTUSER;s/%DBROUSER%/$DBROUSER/g;s/%DBRWUSER%/$DBRWUSER/g"
- #################################################################
- # config vars
- #################################################################
- # 'db'-privileges (scheme) Oracle user
- if [ -z "$DBROOTUSER" ]; then
- merr "scheme owner (pivileged user) 'DBROOTUSER' must be defined."
- exit 1
- fi
- #################################################################
- oracle_root_cmd()
- {
- prompt_oracle_pw root
- SUFF=""
- if [ -n "$1" ]; then
- SUFF="@$1"
- fi
- ORACLE_ROOT_CMD="$SQLPLUS -S -L -R 3 $DBROOTUSER/${DBROOTPW}$SUFF"
- export ORACLE_ROOT_CMD
- }
- kamailio_drop() # pars: <database name>
- {
- if [ $# -ne 1 ] ; then
- merr "kamailio_drop function takes one params"
- exit 1
- fi
- oracle_root_cmd $1
- echo "DROP USER $DBROUSER CASCADE;
- DROP USER $DBRWUSER CASCADE;" | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- mwarn "Could not drop $DBRWUSER or $DBROUSER users, try to continue.."
- else
- minfo "Database user deleted"
- fi
- $SED_ROOTUSER $DB_SCHEMA/inc/_dropsch.tmpl | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Dropping scheme for '$DBROOTUSER' in database '$1' failed!"
- exit 1
- fi
- if [ -n "$DBSYSUSER" ]; then
- get_answer "ask" "Remove user '$DBROOTUSER' (complete remove scheme)? (y/n): "
- if [ "$ANSWER" = "y" ]; then
- prompt_oracle_pw sys
- SUFF=""
- if [ -n "$1" ]; then
- SUFF="@$1"
- fi
- SYSCMD="$SQLPLUS -S -L -R 3 $DBSYSUSER/${DBSYSPW}$SUFF AS SYSDBA"
- echo "DROP USER $DBROOTUSER CASCADE;" | $SYSCMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Dropping scheme in database '$1' failed!"
- exit 1
- fi
- fi
- fi
- minfo "Scheme '$DBROOTUSER' in database '$1' dropped"
- } #kamailio_drop
- kamailio_create() # pars: <database name>
- {
- if [ $# -ne 1 ] ; then
- merr "kamailio_create function takes one param"
- exit 1
- fi
- minfo "creating scheme for '$DBROOTUSER' in database '$1' ..."
- if [ -n "$DBSYSUSER" ]; then
- get_answer "ask" "Create user '$DBROOTUSER' (is new scheme)? (y/n): "
- if [ "$ANSWER" = "y" ]; then
- prompt_oracle_pw sys
- prompt_oracle_pw root
- SUFF=""
- if [ -n "$1" ]; then
- SUFF="@$1"
- fi
- SYSCMD="$SQLPLUS -S -L -R 3 $DBSYSUSER/${DBSYSPW}$SUFF AS SYSDBA"
- echo "create user $DBROOTUSER identified by $DBROOTPW
- default tablespace DATA temporary tablespace TEMP
- profile DEFAULT;" | $SYSCMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- mwarn "Create privileged user in database failed, perhaps they allready exist? Try to continue.."
- fi
- $SED_ROOTUSER $DB_SCHEMA/inc/_grantroot.tmpl | $SYSCMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Creating scheme in database '$1' failed!"
- exit 1
- fi
- fi
- fi
- oracle_root_cmd $1
- $SED_ROOTUSER $DB_SCHEMA/inc/_createsch.tmpl | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Creating scheme for '$DBROOTUSER' in database '$1' failed!"
- exit 1
- fi
- cat $DB_SCHEMA/inc/_create_compat.sql | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Creating compatibility functions for '$DBROOTUSER' in database '$1' failed!"
- exit 1
- fi
- prompt_oracle_pw rw
- prompt_oracle_pw ro
- echo "create user $DBROUSER identified by $DBROPW
- default tablespace DATA temporary tablespace TEMP profile DEFAULT;
- grant connect to $DBROUSER;
- create user $DBRWUSER identified by $DBRWPW
- default tablespace DATA temporary tablespace TEMP profile DEFAULT;
- grant connect to $DBRWUSER;" | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- mwarn "Create user in database scheme failed, perhaps they allready exist? Try to continue.."
- fi
- $SED_USERS $DB_SCHEMA/inc/_grantfunc.tmpl | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Make compatibility functions for users failed!"
- exit 1
- fi
- for TABLE in $STANDARD_MODULES; do
- mdbg "Creating core table: $TABLE"
- cat $DB_SCHEMA/$TABLE-create.sql | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Creating core tables failed!"
- exit 1
- fi
- done
- if [ -e $DB_SCHEMA/extensions-create.sql ]; then
- minfo "Creating custom extensions tables"
- cat $DB_SCHEMA/extensions-create.sql | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Creating custom extensions tables failed!"
- exit 1
- fi
- fi
- minfo "Core Kamailio tables succesfully created."
- get_answer $INSTALL_PRESENCE_TABLES "Install presence related tables? (y/n): "
- if [ "$ANSWER" = "y" ]; then
- presence_create $1
- fi
- get_answer $INSTALL_EXTRA_TABLES "Install tables for $EXTRA_MODULES? (y/n): "
- if [ "$ANSWER" = "y" ]; then
- extra_create $1
- fi
- } # kamailio_create
- presence_create() # pars: <database name>
- {
- if [ $# -ne 1 ] ; then
- merr "presence_create function takes one param"
- exit 1
- fi
- minfo "creating presence tables..."
- oracle_root_cmd $1
- cat $DB_SCHEMA/presence-create.sql | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Failed to create presence tables!"
- exit 1
- fi
- cat $DB_SCHEMA/rls-create.sql | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Failed to create rls-presence tables!"
- exit 1
- fi
- minfo "Presence tables succesfully created."
- }
- extra_create() # pars: <database name>
- {
- if [ $# -ne 1 ] ; then
- merr "extra_create function takes one param"
- exit 1
- fi
- minfo "creating extra tables..."
- oracle_root_cmd $1
- for TABLE in $EXTRA_MODULES; do
- mdbg "Creating extra table: $TABLE"
- cat $DB_SCHEMA/$TABLE-create.sql | $ORACLE_ROOT_CMD >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- merr "Creating extra tables failed!"
- exit 1
- fi
- done
- minfo "Extra tables succesfully created."
- }
- oracle_dump()
- {
- if [ $# -ne 2 ] ; then
- merr "oracle_dump function takes two params"
- exit 1
- fi
- prompt_oracle_pw rw
- if [ -n "$1" ]; then
- SUFF="@$1"
- fi
- if [ -n "$KAMAILIO_ORASEL" ]; then
- $KAMAILIO_ORASEL ${DBROUSER}/${DBROPW}$SUFF -BLNe \
- "select * from table(dump_tables('$DBROOTUSER'));" >$2
- else
- echo "set feed 0 lin 8000 pages 0
- select * from table(dump_tables('$DBROOTUSER'));" | \
- $SQLPLUS -S -L -R 3 ${DBROUSER}/${DBROPW}$SUFF >$2
- fi
- return $?
- }
- oracle_restore()
- {
- if [ $# -ne 2 ] ; then
- merr "oracle_restore function takes two params"
- exit 1
- fi
- prompt_oracle_pw rw
- SUFF=""
- if [ -n "$1" ]; then
- SUFF="@$1"
- fi
- cat "$2" | $SQLPLUS -S -L -R 3 ${DBRWUSER}/${DBRWPW}$SUFF >$ORALOG
- if [ $? -ne 0 ] || check_oracle_log ; then
- return 1
- fi
- return 0
- }
|