MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/bin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/bin/ore_destimport.pl

# 
# $Header: oracler/migration/imp/ore_destimport.pl /st_oracler_1.5.1.0.1/1 2017/06/20 18:00:39 qinwan Exp $
#
# ore_destimport.pl
# 
# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      ore_destimport.pl - <one-line expansion of the name>
#
#    DESCRIPTION
#      <short description of component this file declares/defines>
#
#    NOTES
#      <other useful comments, qualifications, etc.>
#
#    MODIFIED   (MM/DD/YY)
#    qinwan      06/19/17 - remove shebang line
#    qinwan      06/26/15 - update refobjID after import
#    gayyappa    07/18/14 - porting for windows
#    gayyappa    01/20/14 - Creation
#

use strict;
use warnings;
use File::Copy;
use oracle::oremigcommon  qw( sanityChecks checkcmd checkcmdAndDie);

my $MIGUSER='system';
my $MIGPWD='';
my $ORAHOME='';
my $MIGSRCDIR='';
my $MIGDIR='';
my $MIGSRC_CONNECTSTR='';
my $SQLPLUS='';
my $SQLPLUS_CONSTR='';

sub checkArgs
{
  my $argc= $#ARGV ;     #$argc = @ARGV  will also assign length
  if ( $argc != 1 )
  {
   # print "argc is $argc+1";
    print "Usage is perl ore_destimport.pl <connect-identifier> <migration-dir`-name> \n";
    print( "Expect to find <migration-dir-name> directory with files required for import \n");
    die();
  }

  $SQLPLUS_CONSTR=$ARGV[0];
  $MIGDIR=$ARGV[1];
  $MIGSRC_CONNECTSTR=$SQLPLUS_CONSTR;
}

sub importProc
{
  my ($sqlplus, $rqsysexp, $filename, $output);
  my $resp='';
  my $invalid = 1;
  my $found = 0;
  my ($tmpfile, $convname);
  my ($tmpexit_in, $tmpexit_log);
  my ($step2_rqsys, $step2_log, $step2_imp, $step2_implog, $step2_rqsyslog);
  my ($step3_rqsys, $step3_rqsyslog, $step3_log, $step3_imp);
  my ($step4_log, $step4_imp, $step4_srcsql, $step4_destsql, $step4_logfiles);
  my $fsuff = &oracle::oremigcommon::getScriptSuffix();
  ##generate required .bat files from .sh files
  if ( ($^O eq 'MSWin32') || ($^O eq 'dos'))
  {
    $tmpfile = File::Spec->catfile($MIGSRCDIR, 'rqsys_imp.sh');
    $convname= &oracle::oremigcommon::convertShToBat($tmpfile);
    $tmpfile= File::Spec->catfile($MIGSRCDIR,'rqsystab_imp.sh');
    $convname= &oracle::oremigcommon::convertShToBat($tmpfile);
    $tmpfile= File::Spec->catfile($MIGSRCDIR, 'rqscript_imp.sh');
    $convname= &oracle::oremigcommon::convertShToBat($tmpfile);
    $tmpfile = File::Spec->catfile($MIGDIR, 'imp_ore_user.sh');
    $convname= &oracle::oremigcommon::convertShToBat($tmpfile);
  }

  $tmpexit_in=File::Spec->catfile($MIGDIR,'tmpsetup.sql');
  $tmpexit_log=File::Spec->catfile($MIGDIR,'tmpstep1.log');
  open FILE , ">", $tmpexit_in or die $!;
  printf FILE "create directory RQMIG_TEST_DIR as '%s' ;\n", $MIGDIR ;
  print FILE "exit;";
  close FILE;

  $sqlplus = "$SQLPLUS \@$tmpexit_in > $tmpexit_log";
  &oracle::oremigcommon::checkcmdAndDie( $sqlplus, "Step1 failed : $! \n Please check tmpstep1.log");


# step 2: import rqsys if it does not exists
# otherwise import only rqsys.rq$dataXXX table data only
  print "****Step2 import of rqsys ***\n";
  $step2_rqsys= File::Spec->catfile($MIGSRCDIR,'rqsysquery.sql');
  $step2_log= File::Spec->catfile($MIGDIR,'tmps2rqsysq.log');

  $sqlplus = "$SQLPLUS \@$step2_rqsys > $step2_log";
  &oracle::oremigcommon::checkcmdAndDie( $sqlplus, "Step2 failed : $! \n Please check tmps2rqsysq.log");
  ($found) = oracle::oremigcommon::findoraerr($step2_log);
  if( $found != 0)
  { 
    print "rqsys schema does not exist, creating rqsys from dmp file";
    $step2_imp= File::Spec->catfile($MIGSRCDIR,"rqsys_imp.$fsuff");
    $step2_implog= File::Spec->catfile($MIGDIR,'rqsys_imp.log');
    $rqsysexp = "$step2_imp $MIGUSER $MIGPWD $MIGSRC_CONNECTSTR 2>$step2_implog";
    oracle::oremigcommon::checkcmdAndDie($rqsysexp, "Step2 failed");
  } 
  else
  {
    print "rqsys schmea EXISTS. importing only datastore related data \n";
    print "We will first truncate the data in rq\$datastoreXXX tables from rqsys and then populate from source dump files\n";
    print "****** ALL existing datastores on this database will be removed ********\n\n\n"; 
    while ( $invalid )
    {
      print "Do you wish to continue? Type yes or no\n";
      $resp = <STDIN>;
      chomp $resp;
      if( $resp eq "yes")
      {
        $invalid = 0;
      }
      elsif( $resp eq "no")
      {
        die("Termintaing migration \n");
      }
      else
      {
        print("Please answer yes or no\n");
      }
    }
    $step2_rqsys= File::Spec->catfile($MIGSRCDIR,'rqsystab_prep.sql');
    $step2_rqsyslog= File::Spec->catfile($MIGDIR,'tmps2rqsysprep.log');
    $sqlplus = "$SQLPLUS \@$step2_rqsys > $step2_rqsyslog";
    oracle::oremigcommon::checkcmdAndDie($sqlplus, "Step 2 failed: check tmps2rqsysprep.log");
    $step2_rqsys= File::Spec->catfile($MIGSRCDIR,"rqsystab_imp.$fsuff");
    $step2_rqsyslog= File::Spec->catfile($MIGDIR,'tmps2rqsystab_imp.log');
    $rqsysexp = "$step2_rqsys $MIGUSER $MIGPWD $MIGSRC_CONNECTSTR 2> $step2_rqsyslog";
    oracle::oremigcommon::checkcmdAndDie($rqsysexp, "Step 2 failed: check tmps2rqsystab_imp.log");
    $step2_rqsys= File::Spec->catfile($MIGSRCDIR,'rqsys_sequpdate.sql');
    $step2_rqsyslog= File::Spec->catfile($MIGDIR,'tmps2rqsyssequpd.log');
    $sqlplus = "$SQLPLUS \@$step2_rqsys > $step2_rqsyslog";
    oracle::oremigcommon::checkcmd($sqlplus, "Step 2 failed: check tmps2rqsyssequpd.log");
  }

#step3 : copy of data store inventory from individual schema
  print "****Step3 import of schema with datastoreinventory ****\n";
  if ( !( ($^O eq 'MSWin32') || ($^O eq 'dos')) )
  {
    $rqsysexp = "chmod +x $MIGDIR/imp_ore_user.sh";
    oracle::oremigcommon::checkcmd($rqsysexp, "Step3 failed");
  } 
  $step3_imp = File::Spec->catfile($MIGDIR, "imp_ore_user.$fsuff");
  $step3_log = File::Spec->catfile($MIGDIR, 'tmps3imp_ore_user.log');
  $rqsysexp = "$step3_imp $MIGUSER $MIGPWD $MIGSRC_CONNECTSTR 2> $step3_log";
  oracle::oremigcommon::checkcmd($rqsysexp, "Step3 failed. check tmps3imp_ore_user.log"); 
  $step3_rqsys= File::Spec->catfile($MIGSRCDIR,'rqsys_refidupdate.sql');
  $step3_rqsyslog= File::Spec->catfile($MIGDIR,'tmps3rqsysrefidupd.log');
  $sqlplus = "$SQLPLUS \@$step3_rqsys > $step3_rqsyslog";
  oracle::oremigcommon::checkcmd($sqlplus, "Step 3 failed: check tmps3rqsysrefidupd.log");

#Step4 : import rqscript data
  print "****Step4 import rqscript *****\n";
  $step4_imp = File::Spec->catfile($MIGSRCDIR, "rqscript_imp.$fsuff");
  $step4_log = File::Spec->catfile($MIGDIR, 'tmps4rqscript_imp.log');
  $rqsysexp = "$step4_imp $MIGUSER $MIGPWD $MIGSRC_CONNECTSTR 2>$step4_log";
  oracle::oremigcommon::checkcmd($rqsysexp, "Step4 failed. check tmps4rqscript_imp.log"); 

  $step4_srcsql= File::Spec->catfile($MIGSRCDIR, 'rqscriptmig.sql');
  $step4_destsql= File::Spec->catfile($MIGDIR, 'rqscriptmig.sql');
  copy($step4_srcsql, $step4_destsql);

#check for errors
  $step4_logfiles=File::Spec->catfile($MIGDIR, '*.log');
  ($found) =oracle::oremigcommon::findoraerr($step4_logfiles);
  if( $found > 0 )
  {
    print "Failure: Please check log files in $MIGDIR for errors \n";
  }
print "*****************************IMPORTANT ******************************\n";
print " Please connect as sysdba and run the script rqscriptmig.sql in $MIGDIR to complete the IMPORT\n";
print "********************************************************************\n";


}

&checkArgs(@ARGV);
($SQLPLUS, $MIGPWD, $ORAHOME, $MIGSRCDIR)=&oracle::oremigcommon::sanityChecks($MIGUSER, $SQLPLUS_CONSTR, $MIGDIR);
$MIGSRCDIR=$MIGSRCDIR."/imp";
&importProc(); 

OHA YOOOO