Procedure om tabellen te importeren van een target naar een host server - Oracle 9

Het komt geregeld voor dat men een of een aantal tabellen van de ene server wil exporteren en weer wil importeren in een andere database. Dit kan door bijvoorbeeld op de server waar je wil importeren zowel de export als de import te draaien.

 

In eerste instantie zorg je dat je vanaf de "import server" een sql*plus connectie kan maken naar de "export server", dit kan je door een entry in de tnsnames.ora te plaatsen. Als dit gedaan is test je dit en kan je het export script draaien:

export_mike.sh

#!/bin/ksh
 
id=`date '+%Y%m%d_%H%M'`
 
export NLS_LANG=.WE8ISO8859P15
 
USERID="system/<password>@<server_sid>"
PARFILE=/tmp/exp_mike.par
LOGFILE=/tmp/exp_mike_${id}.log
FILE=/tmp/mike.dmp
 
touch ${PARFILE}
chmod 600 ${PARFILE}
 
echo "
  userid       = ${USERID}
  buffer       = 1024000
  log          = ${LOGFILE}
  file         = ${FILE}
  rows=y
  direct=y
  consistent=y
  statistics=ESTIMATE
  tables=(MIKE.DUMMY1,
          MIKE.DUMMY2,
          MIKE.DUMMY3,
          MIKE.DUMMY4)
" > ${PARFILE}
 
exp parfile=${PARFILE}
 
sync; sync; sync

Vervolgens op de "import server" een sql*plus script neerzetten die de tabellen leegt die je wil importeren. Dit sql*plus script kan je in je import script aanroepen:

truncate_mike.sql

TRUNCATE TABLE MIKE.DUMMY1;
TRUNCATE TABLE MIKE.DUMMY2;
TRUNCATE TABLE MIKE.DUMMY3;
TRUNCATE TABLE MIKE.DUMMY4;

Nu kan je het import script draaien. In dit voorbeeld worden er voor iedere stap logfiles aangemaakt en wordt er na iedere stap een echo naar je scherm gestuurd zodat je kan zien waarje bent:  

import_mike.sh

#!/bin/ksh
#
# Schedule on UNIX prompt:
# echo imp_job.sh | at hh:mi
#
ORACLE_SID=<SID>
ORAENV_ASK=NO
. oraenv
 
NLS_LANG=".WE8ISO8859P15"  # je characterset
export NLS_LANG
 
id=`date '+%Y%m%d_%H%M'`
 
USERID="system/Manager"
PARFILE=/tmp/imp_mike.par
LOGFILE=/tmp/imp_mike_${id}.log
FILE=/tmp/mike.dmp
 
 
touch ${PARFILE}
chmod 600 ${PARFILE}
 
echo "variabelen zijn gezet"
 
sqlplus "/ as sysdba" << EOF1 2>&1 > /dev/null
set linesize 132;
spool /tmp/truncate_mike.log
@/tmp/truncate_mike         
spool off
EOF1
 
echo "tabellen zijn getruncate" 
 
 
sleep 5
 
echo "we kunnen weer verder met importeren"
 
echo " 
ignore  = y
userid  = ${USERID}
log     = ${LOGFILE}
file    = ${FILE}
rows    = y
indexes = n
commit  = y
fromuser= MIKE
touser  = MIKE
" > ${PARFILE}
 
echo "parfile is aangemaakt en importeren maar"
 
imp parfile=${PARFILE}
 
sync; sync; sync
 
echo "klaar"
 
 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 305 gasten online