MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/R/migration/oreuser/exp/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/R/migration/oreuser/exp/storedproc.sql

Rem
Rem $Header: oracler/migration/oreuser/exp/storedproc.sql /main/6 2015/10/02 12:29:54 qinwan Exp $
Rem
Rem storedproc.sql
Rem
Rem Copyright (c) 2013, 2015, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      storedproc.sql - <one-line expansion of the name>
Rem
Rem    DESCRIPTION
Rem      <short description of component this file declares/defines>
Rem
Rem    NOTES
Rem      <other useful comments, qualifications, etc.>
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    qinwan      09/30/15 - impdp replace inventory table
Rem    qinwan      08/31/15 - no grants
Rem    qinwan      06/17/15 - add rqsys to datastore table name
Rem    gayyappa    12/11/13 - Created
Rem
Rem    BEGIN SQL_FILE_METADATA 
Rem    SQL_SOURCE_FILE: oracler/migration/oreuser/exp/storedproc.sql 
Rem    SQL_SHIPPED_FILE: 
Rem    SQL_PHASE: 
Rem    SQL_STARTUP_MODE: NORMAL 
Rem    SQL_IGNORABLE_ERRORS: NONE 
Rem    SQL_CALLING_FILE: 
Rem    END SQL_FILE_METADATA

SET ECHO ON
SET FEEDBACK 1
SET NUMWIDTH 10
SET LINESIZE 80
SET TRIMSPOOL ON
SET TAB OFF
SET PAGESIZE 100

Rem  Creates stored proc rqgenDumpDSI to generate dump script for
Rem  rq$datastoreinventory table
Rem stored prproc rqgenDumpOreUser to generate dump script for
Rem entire ORE user schema (i.e. any schema that has rq$datastoreinventory table )


--***************************************************************************--
--*  (*) PROCEDURES: Data Store                                             *--
--***************************************************************************--

CREATE OR REPLACE PROCEDURE rqgenDumpDSI(
   muser IN VARCHAR2,
   pwd IN VARCHAR2,
   connectStr IN VARCHAR2,
   schemaName IN VARCHAR2,
   outdir IN VARCHAR2 
) 
AUTHID CURRENT_USER 
IS 
  fileHandler UTL_FILE.FILE_TYPE;
  impHandler UTL_FILE.FILE_TYPE;
  tmpHandler UTL_FILE.FILE_TYPE;
  filList    UTL_FILE.FILE_TYPE;
  cursor dsown_cur is
    SELECT distinct username dsowner 
    FROM all_users where username = schemaName ;
  dsicur sys_REFCURSOR;
  v_sql VARCHAR2(2000);
  cnt integer;
BEGIN
  fileHandler := UTL_FILE.FOPEN(outdir, 'exp_dsi_user.sh', 'W');
  impHandler := UTL_FILE.FOPEN(outdir, 'imp_dsi_user.sh', 'W');
  filList := UTL_FILE.FOPEN(outdir, 'genfileList.txt', 'W');

  cnt := 0;
  FOR ds_rec IN dsown_cur
  LOOP
    v_sql := 'impdp $1/$2@$3'
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_rqds.dmp'
               || ' remap_schema=rqsys:system'
               || ' remap_table=rq\$datastore:tmprqdatastore'
               || ' exclude=constraint' 
               || ' logfile=' || ds_rec.dsowner || '_dstds.log';
     UTL_FILE.PUT(impHandler, v_sql);
     UTL_FILE.NEW_LINE(impHandler, 1);
     v_sql := ds_rec.dsowner || '_rqds.dmp' ;
     UTL_FILE.PUT(filList, v_sql);
     UTL_FILE.NEW_LINE(filList, 1);

     v_sql := 'impdp $1/$2@$3'
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_rqdsob.dmp'
               || ' remap_schema=rqsys:system'
               || ' remap_table=rq\$datastoreobject:tmprqdatastoreobject'
               || ' exclude=constraint exclude=ref_constraint' 
               || ' logfile=' || ds_rec.dsowner || '_dstdsob.log';
     UTL_FILE.PUT(impHandler, v_sql);
     UTL_FILE.NEW_LINE(impHandler, 1);
     v_sql := ds_rec.dsowner || '_rqdsob.dmp' ;
     UTL_FILE.PUT(filList, v_sql);
     UTL_FILE.NEW_LINE(filList, 1);

     v_sql := 'impdp $1/$2@$3'
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_rqrefdbobj.dmp'
               || ' remap_schema=rqsys:system'
               || ' remap_table=rq\$refdbobject:tmprqrefdbobject'
               || ' exclude=constraint' 
               || ' logfile=' || ds_rec.dsowner || '_dstrefdbobj.log';
     UTL_FILE.PUT(impHandler, v_sql);
     UTL_FILE.NEW_LINE(impHandler, 1);
     v_sql := ds_rec.dsowner || '_rqrefdbobj.dmp' ;
     UTL_FILE.PUT(filList, v_sql);
     UTL_FILE.NEW_LINE(filList, 1);

     v_sql := 'impdp $1/$2@$3'
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_rqdsref.dmp'
               || ' remap_schema=rqsys:system'
               || ' remap_table=rq\$datastorerefdbobject:tmprqdatastorerefdbobject'
               || ' exclude=ref_constraint' 
               || ' logfile=' || ds_rec.dsowner || '_dstdsref.log';
     UTL_FILE.PUT(impHandler, v_sql);
     UTL_FILE.NEW_LINE(impHandler, 1);
     v_sql := ds_rec.dsowner || '_rqdsref.dmp' ;
     UTL_FILE.PUT(filList, v_sql);
     UTL_FILE.NEW_LINE(filList, 1);

     v_sql := 'impdp $1/$2@$3'
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_rqdsaccess.dmp'
               || ' remap_schema=rqsys:system'
               || ' remap_table=rq\$datastoreaccess:tmprqdatastoreaccess'
               || ' exclude=ref_constraint'
               || ' logfile=' || ds_rec.dsowner || '_dstdsaccess.log';
     UTL_FILE.PUT(impHandler, v_sql);
     UTL_FILE.NEW_LINE(impHandler, 1);
     v_sql := ds_rec.dsowner || '_rqdsaccess.dmp' ;
     UTL_FILE.PUT(filList, v_sql);
     UTL_FILE.NEW_LINE(filList, 1);

     v_sql := 'impdp $1/$2@$3'
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_src.dmp'
               || ' logfile=' || ds_rec.dsowner || '_dst.log';
     UTL_FILE.PUT(impHandler, v_sql);
     UTL_FILE.NEW_LINE(impHandler, 1);
     v_sql := ds_rec.dsowner || '_src.dmp' ;
     UTL_FILE.PUT(filList, v_sql);
     UTL_FILE.NEW_LINE(filList, 1);

     v_sql := 'impdp $1/$2@$3' 
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_srcdsi.dmp'
               || ' table_exists_action=replace'
               || ' logfile=' || ds_rec.dsowner || '_dstdsi.log';
     UTL_FILE.PUT(impHandler, v_sql);
     v_sql := ds_rec.dsowner || '_srcdsi.dmp' ;
     UTL_FILE.PUT(filList, v_sql);
     UTL_FILE.NEW_LINE(filList, 1);

--generate parameter file for dumping schema - rq$datastoreinvenotry table
     tmpHandler := UTL_FILE.FOPEN(outdir, ds_rec.dsowner || '_src.par'
, 'W');
     v_sql :=  ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_src.dmp'
               || ' logfile=' || ds_rec.dsowner || '_src.log'
               || ' exclude=TABLE:"IN( ''RQ$DATASTOREINVENTORY'') " '
               || ' schemas=' || ds_rec.dsowner ; 
     UTL_FILE.PUT(tmpHandler, v_sql);
     UTL_FILE.FCLOSE(tmpHandler);

-- generate parametr file for dumping rq$datastore 
     tmpHandler := UTL_FILE.FOPEN(outdir, ds_rec.dsowner || '_rqds.par'
, 'W');
     v_sql :=  ' directory=' || outdir
               || ' tables=rqsys.rq$datastore ' 
               || ' query=(rqsys.rq$datastore:"where dsowner like '''
               || ds_rec.dsowner || ''' ' || '")' 
               || ' dumpfile=' || ds_rec.dsowner || '_rqds.dmp'
               || ' logfile=' || ds_rec.dsowner || '_rqds.log' ;
     UTL_FILE.PUT(tmpHandler, v_sql);
     UTL_FILE.FCLOSE(tmpHandler);

-- generate parameter file for rq$datastoreobject
     tmpHandler := UTL_FILE.FOPEN(outdir, ds_rec.dsowner || '_rqdsob.par'
, 'W');
     v_sql :=  ' directory=' || outdir
               || ' tables=rqsys.rq$datastoreobject ' 
               || ' query=(rqsys.rq$datastoreobject:"where dsid in  (select dsid from rqsys.rq$datastore where  dsowner like '''
               || ds_rec.dsowner || ''' ' || ')")' 
               || ' dumpfile=' || ds_rec.dsowner || '_rqdsob.dmp'
               || ' logfile=' || ds_rec.dsowner || '_rqdsob.log' ;
     UTL_FILE.PUT(tmpHandler, v_sql);
     UTL_FILE.FCLOSE(tmpHandler);

-- generate parameter file for rq$refdbobject
     tmpHandler := UTL_FILE.FOPEN(outdir, ds_rec.dsowner || '_rqrefdbobj.par'
, 'W');
     v_sql :=  ' directory=' || outdir
               || ' tables=rqsys.rq$refdbobject ' 
               || ' query=(rqsys.rq$refdbobject:"where refobjid in  ( select refobjId from rqsys.RQ$DATASTORE a, rqsys.RQ$DATASTOREOBJECT b, rqsys.RQ$DATASTOREREFDBOBJECT c where b.objid = c.objid and a.dsid = b.dsid and a.dsowner like '''  
               || ds_rec.dsowner || ''' ' || ')")' 
               || ' dumpfile=' || ds_rec.dsowner || '_rqrefdbobj.dmp'
               || ' logfile=' || ds_rec.dsowner || '_rqrefdbobj.log' ;
     UTL_FILE.PUT(tmpHandler, v_sql);
     UTL_FILE.FCLOSE(tmpHandler);

-- generate parameter file for rq$datastorerefdbobject
     tmpHandler := UTL_FILE.FOPEN(outdir, ds_rec.dsowner || '_rqdsref.par'
, 'W');
     v_sql :=  ' directory=' || outdir
               || ' tables=rqsys.rq$datastorerefdbobject ' 
               || ' query=(rqsys.rq$datastorerefdbobject:"where objid in  ( select objId from rqsys.RQ$DATASTORE a, rqsys.RQ$DATASTOREOBJECT b where a.dsid = b.dsid and a.dsowner like '''  
               || ds_rec.dsowner || ''' ' || ')")' 
               || ' dumpfile=' || ds_rec.dsowner || '_rqdsref.dmp'
               || ' logfile=' || ds_rec.dsowner || '_rqdsref.log' ;
     UTL_FILE.PUT(tmpHandler, v_sql);
     UTL_FILE.FCLOSE(tmpHandler);

-- generate parameter file for rq$datastoreaccess
     tmpHandler := UTL_FILE.FOPEN(outdir, ds_rec.dsowner || '_rqdsaccess.par'
, 'W');
     v_sql :=  ' directory=' || outdir
               || ' tables=rqsys.rq$datastoreaccess '
               || ' query=(rqsys.rq$datastoreaccess:"where dsId in ( select a.dsId from rqsys.RQ$DATASTORE a where a.dsowner like '''
               || ds_rec.dsowner || ''' ' || ')")'
               || ' dumpfile=' || ds_rec.dsowner || '_rqdsaccess.dmp'
               || ' logfile=' || ds_rec.dsowner || '_rqdsaccess.log' ;
     UTL_FILE.PUT(tmpHandler, v_sql);
     UTL_FILE.FCLOSE(tmpHandler);

--generate expdp stmt
     v_sql := 'expdp ' || muser || '/' || pwd || '@' || connectStr 
               || ' directory=' || outdir
               || ' dumpfile=' || ds_rec.dsowner || '_srcdsi.dmp'
               || ' logfile=' || ds_rec.dsowner || '_srcdsi.log'
               || ' tables=' || ds_rec.dsowner || '.RQ\$DATASTOREINVENTORY '; 
     UTL_FILE.PUT(fileHandler, v_sql);
     UTL_FILE.NEW_LINE(fileHandler, 1);

     v_sql := 'expdp $1/$2@$3'
               || ' parfile=' ||ds_rec.dsowner || '_rqds.par';
     UTL_FILE.PUT(fileHandler, v_sql);
     UTL_FILE.NEW_LINE(fileHandler, 1);
     v_sql := 'expdp $1/$2@$3'
               || ' parfile=' ||ds_rec.dsowner || '_rqdsob.par';
     UTL_FILE.PUT(fileHandler, v_sql);
     UTL_FILE.NEW_LINE(fileHandler, 1);
     v_sql := 'expdp $1/$2@$3'
               || ' parfile=' ||ds_rec.dsowner || '_rqrefdbobj.par';
     UTL_FILE.PUT(fileHandler, v_sql);
     UTL_FILE.NEW_LINE(fileHandler, 1);
     v_sql := 'expdp $1/$2@$3'
               || ' parfile=' ||ds_rec.dsowner || '_rqdsref.par';
     UTL_FILE.PUT(fileHandler, v_sql);
     UTL_FILE.NEW_LINE(fileHandler, 1);
     v_sql := 'expdp $1/$2@$3'
               || ' parfile=' ||ds_rec.dsowner || '_rqdsaccess.par';
     UTL_FILE.PUT(fileHandler, v_sql);
     UTL_FILE.NEW_LINE(fileHandler, 1);
     v_sql := 'expdp $1/$2@$3'
               || ' parfile=' || ds_rec.dsowner || '_src.par';
     UTL_FILE.PUT(fileHandler, v_sql);
     UTL_FILE.NEW_LINE(fileHandler, 1);
     cnt := cnt + 1;
  END LOOP;
  UTL_FILE.FCLOSE(fileHandler);
  UTL_FILE.FCLOSE(impHandler);
  UTL_FILE.FCLOSE(filList);

  fileHandler := UTL_FILE.FOPEN(outdir, 'cnt_dsi_user.txt', 'W');
  UTL_FILE.PUT(fileHandler,cnt);
  UTL_FILE.FCLOSE(fileHandler);  
  
EXCEPTION
  WHEN utl_file.invalid_path THEN
     raise_application_error(-20000, 'ERROR: Invalid PATH FOR file.');
  RETURN;
END;
/
SHOW ERRORS;


OHA YOOOO