Object dependency – Objekt Referenz.
Ago 05

Manchmal müssen die Tests von Prozesse mit produktiven Daten stattfinden. Obwohl wir die Benutzer und ihre Kennwörter auf der Testumgebung besitzen, auf Sicherheitsgründe sind diese Zugriffsdaten der Produktivumgebung fürs uns unbekannten. Zum Glück haben wir einen Benutzer auf der Produktivumgebung, der die “select any tables” Rechte hat. Das reicht für uns, da wir die Tabellen auf unserem Schema anlegen können und danach mit Hilfe der Oracle Befehlen exp bzw. imp können wir diese Tabellen exportieren und importieren. Schließlich geben wir die “select” Rechte zu dem endgültigen Benutzer, da er die Daten zugreifen kann, um sie kopieren zu können.

Wir haben auch angenommen, dass die DB-LINKS zwischen der Testdatenbank und der Prod – Datenbank verboten sind.

Beispiel:

Technische Daten:

Datenbankversion: 10g
Produtivdatenbank: prod_db
Testdatenbank : test_db
Prodschema : sct
Benutzerschema : fran
Betriebssystem : AIX seat 3 5 00C783704C00

Ablauf:

  • Tabelle auf unserem produktiven schema anlegen:

fran@prod_db> create table fran.karten as
select *
from sct.karten

/

  • Tabelle exportieren:

exp fran@prod_db tables=karten file=karten.dmp

  • Tabelle auf unserem Testschema importieren:

exp fran@prod_db tables=karten file=karten.dmp

  • Grant vergeben:

fran@test_db> grant select on fran.karten to sct ;

Wichtige Himweise:

Muss berücksichtigt werden, dass genug Platz in dem betroffenen Tablespace bzw. Filesystem vorhanden ist.


Hilfbefehle:


  • „ls –lrt karten.dmp“: Um die Größe unserer Exportdatei zu kontrollieren:

-rw-r–r– 1 fran entw 263135232 Aug 05 16:28 karten.dmp

  • „df –k | grep lhome“: Um den Platz auf dem Filesystem zu überprüfen.

/dev/home 5242880 780164 86% 88358 7% /lhome

  • Mit der folgenden Abfrage können wir uns anschauen, wie viel Platz noch Übrig in unserem „users“ Tablespace haben:

select  a.tablespace_name,

b.file_name,

b.bytes sizeb,

sum(a.bytes) free

from (select file_id, tablespace_name, bytes, rownum from dba_free_space) a,

(select file_id, file_name, bytes, rownum from dba_data_files) b

where a.file_id = b.file_id

and a.tablespace_name = ‘USERS’

group by a.tablespace_name, b.file_name, b.bytes

;

Leave a Reply