-- Anmeldung an der Datenbank, von der aus der Vergleich durchgeführt wird --(hier eine 10g-DB mit der SID o10g auf dem Rechner Schulung08) conn sys/sys@schulung08/o10g as sysdba --Ein Account mit DBA-Rechten für den Owner des Packages wird eingerichtet CREATE USER kirk IDENTIFIED BY uhura DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; GRANT CREATE SESSION TO kirk; GRANT CREATE ANY TABLE, CREATE ANY INDEX, DROP ANY TABLE, UPDATE ANY TABLE, INSERT ANY TABLE, DELETE ANY TABLE, ALTER ANY TABLE, SELECT ANY TABLE, ANALYZE ANY TO kirk; GRANT SELECT ANY DICTIONARY, CREATE ANY PROCEDURE, ALTER ANY PROCEDURE TO kirk; --Einrichten des Datenbank-Links zur Remote-DB, eine DB auf dem Rechner Schulung07 : --Parallel muss die Kennung der Remote-DB in der TNS_NAMES.ORA eingetragen werden, der Aliasname ist hier O10_7 DROP PUBLIC DATABASE LINK sc_rem; CREATE PUBLIC DATABASE LINK sc_rem CONNECT TO scotty IDENTIFIED BY beam_me_up USING 'O10_7'; -- Einrichten der Benutzer für die zu vergleichenden Tabellen CREATE USER spock IDENTIFIED BY faszinierend DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; CREATE USER scotty IDENTIFIED BY beam_me_up DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; GRANT CREATE SESSION, CREATE TABLE TO spock, scotty; --Erstellen der Tabellen in den Schemata Scotty und Spock conn kirk/uhura DROP TABLE scotty.object1; DROP TABLE scotty.object1a; DROP TABLE spock.object2; CREATE TABLE scotty.object1 AS SELECT * FROM dba_objects WHERE object_id IS NOT NULL; --Ein Unique Index ist für den Vergleich unabdingbar ALTER TABLE scotty.object1 ADD CONSTRAINT object1_pk PRIMARY KEY(object_id); -- Für den Vergleich innerhalb des Schemas Scotty wird die Tabelle kopiert CREATE TABLE scotty.object1a AS SELECT * FROM scotty.object1; ALTER TABLE scotty.object1a ADD CONSTRAINT object1a_pk PRIMARY KEY(object_id); exec DBMS_STATS.GATHER_SCHEMA_STATS (ownname => 'SCOTTY'); CREATE TABLE spock.object2 AS SELECT * FROM scotty.object1; ALTER TABLE spock.object2 ADD CONSTRAINT object2_pk PRIMARY KEY (object_id); exec DBMS_STATS.GATHER_SCHEMA_STATS (ownname => 'SPOCK'); -- Anmeldung an der Datenbank, die über einen DB-Link angesprochen wird --(hier eine 10g-DB mit der SID o10g auf dem Rechner Schulung07) conn sys/sys@schulung07/o10g as sysdba CREATE USER scotty IDENTIFIED BY beam_me_up DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; GRANT CREATE SESSION, CREATE TABLE TO scotty; -- für die Erstellung der Spaltenliste über den DB-Link GRANT SELECT ON dba_tab_columns TO scotty; --Einrichten des Datenbank-Links zur Basis-DB (die mit dem Aliasnamen O10_8 in der TNS_NAMES.ORA eingetragen wird) zur Tabellenerstellung DROP PUBLIC DATABASE LINK sc_basis; CREATE PUBLIC DATABASE link sc_basis CONNECT TO scotty IDENTIFIED BY beam_me_up USING 'O10_8'; --Erstellen der Tabelle im Schema Scotty der Remote-DB DROP TABLE scotty.object1_rem; CREATE TABLE scotty.object1_rem AS SELECT * FROM scotty.object1@sc_basis; ALTER TABLE scotty.object1_rem ADD CONSTRAINT object1_rem_pk PRIMARY KEY(object_id); exec DBMS_STATS.GATHER_SCHEMA_STATS (ownname => 'SCOTTY');