Skrypt do importu pliku dmp w oracle

Ponieważ import danych z pliku DMP jest zajęciem raczej nudnym, a niestety w środowisku testowym należy wykonywać tę akcję nader często postanowiłem napisać prosty skrypt, który zautomatyzuje operację importu.

Zadania skryptu

  1. Usuwać starego użytkownika
  2. Usuwać tablespace dla tego użytkownika
  3. Utworzyć ponownie użytkownika i tablespace
  4. Utworzyć katalog importu (jak istnieje to się nadpisze)
  5. Załadować dane z pliku DMP

Plik ma format L(U)nixowy, ale pod Windows, po dostosowaniu ścieżek też powinien pracować.

Zakładam iż:

  1. wszystkie akcje odbywają się w katalogu /opt/oracle_dbs (Windows np. c:\oracle_dbs)
  2. Konto administratora Oracle (użytkownik) nazywa się oracle
  3. Tablespace nosi nazwę mojabaza
  4. Katalog importu to /opt/oracle_dbs
  5. Plik DMP ma nazwę eksport.dmp i znajduje się w katalogu /opt/oracle_dbs
  6. Katalog tablespace to /opt/oracle_dbs
  7. Konto użytkownika tablespace mojabaza ma nazwę mojabaza z hasłem mojabaza (tak samo, łatwo się zarządza)

Do rzeczy :) odpalamy konsolę lub terminal jak kto woli:

1. Zmiana właściciela pliku DMP

aby plik był widziany podczas importu należy uprzednio zmienić jego właściciela

 sudo chown oracle:dba eksport.dmp

2. Zalogowanie się jako użytkownik oracle

su - oracle

należy następnie podać hasło użytkownika oracle.

3. Zapisać w katalogu /opt/oracle_dbs następujący skrypt (pod nazwą skrypt_sql)

DROP user mojabaza cascade;
DROP TABLESPACE mojabaza INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
DROP TABLESPACE mojabaza_temp INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
create tablespace mojabaza datafile '/opt/oracle_dbs/mojabaza_lin.dbf'
size 32m autoextend on next 32m maxsize 2048m extent management local;
CREATE TEMPORARY TABLESPACE mojabaza_temp
TEMPFILE '/opt/oracle_dbs/mojabaza_lin_tmp.dbf' SIZE 5M AUTOEXTEND ON;
alter tablespace mojabaza online;
create user mojabaza identified by mojabaza;
CREATE OR REPLACE DIRECTORY imp_dir AS '/opt/oracle_dbs';
GRANT READ, WRITE ON DIRECTORY imp_dir TO mojabaza;
grant CREATE SESSION, CONNECT, RESOURCE to mojabaza;
conn mojabaza/mojabaza;
CREATE SCHEMA AUTHORIZATION mojabaza;
exit;

4. Wywołać skrypt (tekst skryptu poniżej)

./moj_skrypt.sh

Zawartość skryptu:

sqlplus "/ as sysdba" @skrtpt_sql.sql;
impdp system/root table_exists_action=replace dumpfile=eksport.dmp logfile=import.log

koniec :)

Informacje o @albgorski

Od 1999 roku profesjonalnie zajmuję się rozwijaniem oprogramowania. Głównie Java, ale także Groovy, PHP, HTML, JavaScript oraz Adobe Flex. Fascynują mnie metody wymiany danych, ich przechowywania oraz dostępowania. Jestem WIELKIM zwolennikiem Clean Code, TDD oraz agilistą (może lepiej lean-istą). Ekosystem Java dostarcza WIELE świetnych frawework-ów i bibliotek, a społeczność miłośników języka Java jest najlepsza pod słońcem :)
Ten wpis został opublikowany w kategorii db, ubuntu i oznaczony tagami , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Możliwość komentowania jest wyłączona.