# Script to backup earlier versions of OID - < v.2.1.1

DEST_DIR=$ORACLE_HOME/ldap/load; export DEST_DIR
usage() {
cat <<USAGE_MESSAGE
usage: ${0} -connect <Database connect string>
            -pass <Password for Database Account 'ods'>
          
USAGE_MESSAGE
exit 1;
}

if [ $# != 4 ] ; then
   usage ;
fi

# parse arguments
while [ $# -gt 0 ] ; do
    case $1 in 
 
        -connect) CONNECT=$2;
                  shift;;  

        -pass) PASS=$2;
               shift;;
           *)  usage ;;
    esac
    shift 
done

${ORACLE_HOME}/bin/tnsping ${CONNECT} > $ORACLE_HOME/ldap/log/null
if [ $? != 0 ] ; then
   echo "Unable to connect to Database using connect string ${CONNECT}" 
   exit 1;
fi

# Check for ODS password
echo " set feedback off
       connect ods/${PASS}@${CONNECT}
       exit;" > $ORACLE_HOME/ldap/log/seccheck.sql 
${ORACLE_HOME}/bin/sqlplus  odscommon/odscommon@${CONNECT} @$ORACLE_HOME/ldap/log/seccheck.sql > $ORACLE_HOME/ldap/log/pwdchk.log
err=`grep -c ERROR $ORACLE_HOME/ldap/log/pwdchk.log`
echo ${err}
rm -f $ORACLE_HOME/ldap/log/seccheck.sql $ORACLE_HOME/ldap/log/pwdchk.log
if [ ${err} != 0 ] ; then
   echo " Password for user ODS is WRONG.."
   echo " Cannot execute this tool ..."
   exit 1;
fi

echo '******Start*********' >> ${DEST_DIR}/upgstats.out
echo
echo `date` >> ${DEST_DIR}/upgstats.out
echo
echo 'Exporting LDAP schema' 
echo
echo 'Exporting LDAP schema' >> ${DEST_DIR}/upgstats.out
$ORACLE_HOME/bin/exp ods/${PASS}@${CONNECT} LOG=${ORACLE_HOME}/ldap/log/attr_store.log tables=ds_attrstore query=\"where entryid \< 2000\" file=${DEST_DIR}/attr_store.dmp  2>&1 > ${DEST_DIR}/null 
$ORACLE_HOME/bin/exp ods/${PASS}@${CONNECT} LOG=${ORACLE_HOME}/ldap/log/orclaci.log tables=ct_orclaci query=\"where entryid \< 2000\" file=${DEST_DIR}/orclaci.dmp 2>&1 > ${DEST_DIR}/null  
$ORACLE_HOME/bin/exp ods/${PASS}@${CONNECT} LOG=${ORACLE_HOME}/ldap/log/orclentrylevelaci.log tables=ct_orclentrylevelaci query=\"where entryid \< 2000\" file=${DEST_DIR}/orclentrylevelaci.dmp 2>&1 > ${DEST_DIR}/null
if [ ! -s ${DEST_DIR}/attr_store.dmp -o ! -s ${DEST_DIR}/orclaci.dmp -o ! -s ${DEST_DIR}/orclentrylevelaci.dmp ] ; then
   echo
   echo "LDAP schema export failed. Check log files attr_store.log  "
   echo

fi
# Dump OracleSchemaVersion subtree
if [ -s ${DEST_DIR}/orcl_schemaver.ldif ] ; then
   CH='n';
   echo File ${DEST_DIR}/orcl_schemaver.ldif exists. Please remove this from ${DEST_DIR} or this tool will overwrite it. 
   echo "Do you wish to continue (y/n?) [n]"
   read CH;
   if [ ${CH} != 'y' ] ; then
      exit 1;
   fi
fi 
   
$ORACLE_HOME/bin/ldifwrite -c ${CONNECT} -b "cn=oracleschemaversion" -f ${DEST_DIR}/orcl_schemaver.ldif

if [ ! -s ${DEST_DIR}/orcl_schemaver.ldif ] ; then
   echo
   echo "No entries found under cn=oracleschemaversion."
   echo
fi
echo `date` >> ${DEST_DIR}/upgstats.out
# Clean up cn=OracleSchemaVersion entries
echo " spool ${DEST_DIR}/ldif.log
      declare 
         cursor entries is
            SELECT entryid from ct_dn
            where parentdn like 'cn=oracleschemaversion,%'
            OR rdn like 'cn=oracleschemaversion';
       BEGIN
          FOR cur in entries LOOP
             DELETE ds_attrstore where entryid = cur.entryid;
             DELETE ct_objectclass where entryid = cur.entryid; 
             DELETE ct_orclguid where entryid = cur.entryid;
             DELETE ct_cn where entryid = cur.entryid;
             DELETE ct_dn where entryid = cur.entryid;
          END LOOP;
       END;  
/
       commit;
       exit;" > ${DEST_DIR}/schemaversion_del.sql
 
$ORACLE_HOME/bin/sqlplus ods/${PASS}@${CONNECT} @${DEST_DIR}/schemaversion_del.sql
if [ -f ${DEST_DIR}/OID_userdata.ldif ] ; then
   CH='n';
   echo File ${DEST_DIR}/OID_userdata.ldif exists. Please remove this from ${DEST_DIR} or this tool will overwrite it. 
   echo "Do you wish to continue (y/n?) [n]"
   read CH;
   if [ ${CH} != 'y' ] ; then
      exit 1;
   fi
fi 

$ORACLE_HOME/bin/ldifwrite -c ${CONNECT} -b "" -f ${DEST_DIR}/OID_userdata.ldif

if [ ! -s ${DEST_DIR}/OID_userdata.ldif ] ; then
   echo
   echo "OID user data backup failed or the directory was empty."
   echo
else
   echo
   echo "OID backup was completed."
   echo
   
fi

exit 0;

