Oracle einrichten

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie eine Oracle-Datenbank verwenden. Sie werden durch die folgenden Tasks geführt:

Wenn bei Ihrer Installation die Standarddatenbank nicht erstellt wurde, erstellen Sie vor der Ausführung dieser Anweisungen zunächst eine Datenbank mithilfe der Anweisungen Ihres Datenbankadministrators.

Sie können diese Schritte auch mithilfe vordefinierter SQL-Scripts ausführen: Kehren Sie Zurück zum Beginn des Mustercodes und wählen Sie eine der Importoptionen aus. Nach dem Import können Sie die Datenbank auf Basis der SQL-Scripts einrichten.

Hinweis: Berücksichtigen Sie Folgendes beim Erstellen der Datenbanktabellen und beim Zugriff darauf:

  1. Öffnen Sie ein neues Dokument in einem Texteditor, kopieren Sie das folgende Script zum Erstellen der Tabellen DAPTER_ADDRESS, ADAPTER_CUSTOMER, ADAPTER_INVOICE und IBM_EVENTS, fügen Sie es in das Dokument ein und speichern Sie die Datei unter dem Namen adatper_create_tables_oracle.sql.
    -- Erstellen Sie zunächst die für Anwendungsdaten benötigten Tabellen
    DROP TABLE "ADAPTER_CUSTOMER" ;
    CREATE TABLE "ADAPTER_CUSTOMER" (
    		"PKEY" VARCHAR(10) NOT NULL PRIMARY KEY,
    		"FIRSTNAME" VARCHAR(20),
    		"LASTNAME" VARCHAR(20),
    		"ADDRESS" VARCHAR(10),
    		"CCODE" VARCHAR(10)
    	);
    
    ALTER TABLE "ADAPTER_CUSTOMER" ADD CONSTRAINT "CUST_ADDR_FK" FOREIGN KEY
    	("ADDRESS")
    	REFERENCES "ADAPTER_ADDRESS"
    	("PKEY")
    	ON DELETE CASCADE;
    
    DROP TABLE "ADAPTER_ADDRESS" ;
    CREATE TABLE "ADAPTER_ADDRESS" (
    	"PKEY" VARCHAR(10) NOT NULL PRIMARY KEY,
    	"FIRSTLINE" VARCHAR(20),
    	"SECONDLINE" VARCHAR(20),
    	"CODE" VARCHAR(10),
    	"CITY" VARCHAR(20),
    	"COUNTRY" VARCHAR(10));
    
    DROP TABLE "ADAPTER_INVOICE" ;
    CREATE TABLE "ADAPTER_INVOICE" (
    	"PKEY" VARCHAR(10) NOT NULL PRIMARY KEY,
    	"ITEM" VARCHAR(10) NOT NULL,
    	"QUANTITY" INTEGER NOT NULL,
    	"CUSTOMER" VARCHAR(10) NOT NULL);
    
    ALTER TABLE "ADAPTER_INVOICE" ADD CONSTRAINT "INV_CUST_FK" FOREIGN KEY
    	("CUSTOMER")
    	REFERENCES "ADAPTER_CUSTOMER"
    	("PKEY")
    	ON DELETE CASCADE;
    
    DROP TABLE "IBM_EVENTS" ;
    CREATE TABLE "IBM_EVENTS" (
    		"EVENT_ID" INTEGER PRIMARY KEY,
    		"CONNECTOR_ID" VARCHAR(40),
    		"OBJECT_KEY" VARCHAR(10) NOT NULL,
    		"OBJECT_NAME" VARCHAR(40) NOT NULL,
    		"OBJECT_VERB" VARCHAR(40) NOT NULL,
    		"EVENT_PRIORITY" INTEGER NOT NULL,
    		"EVENT_TIME" TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP,
    		"EVENT_STATUS" INTEGER NOT NULL,
    		"EVENT_COMMENT" VARCHAR(100)
    	);
    
    
    CREATE SEQUENCE "IBM_SEQUENCE" (start with 1 increment by 1 nomaxvalue);
    CREATE TRIGGER "IBM_SEQ_TRIG" 
      BEFORE INSERT ON "IBM_EVENTS" 
      FOR EACH ROW 
      BEGIN 
        SELECT DBINPUT_SEQUENCE.nextval INTO :NEW.EVENT_ID FROM dual; 
      END;
    
    DROP TRIGGER "ADAP_CUST_EVENT";
    CREATE TRIGGER "ADAP_CUST_EVENT" 
    	AFTER INSERT OR DELETE OR UPDATE ON "ADAPTER_CUSTOMER"
    	REFERENCING  NEW AS N OLD AS O
    	FOR EACH ROW
    	BEGIN
    		IF inserting THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_CUSTOMER', 'Create', 1, 0);
    		END IF;
    		IF updating THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_CUSTOMER', 'Update', 1, 0);
    		END IF;
    		IF deleting THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_CUSTOMER', 'Delete', 1, 0);
    		END IF;
    	END;
    	
    DROP TRIGGER "ADAP_ADD_EVENT";
    CREATE TRIGGER "ADAP_ADD_EVENT" 
    	AFTER INSERT OR DELETE OR UPDATE ON "ADAPTER_ADDRESS"
    	REFERENCING  NEW AS N OLD AS O
    	FOR EACH ROW
    	BEGIN
    		IF inserting THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_ADDRESS', 'Create', 1, 0);
    		END IF;
    		IF updating THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_ADDRESS', 'Update', 1, 0);
    		END IF;
    		IF deleting THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_ADDRESS', 'Delete', 1, 0);
    		END IF;
    	END;
    	
    DROP TRIGGER "ADAP_INV_EVENT";
    CREATE TRIGGER "ADAP_INV_EVENT" 
    	AFTER INSERT OR DELETE OR UPDATE ON "ADAPTER_INVOICE"
    	REFERENCING  NEW AS N OLD AS O
    	FOR EACH ROW
    	BEGIN
    		IF inserting THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_INVOICE', 'Create', 1, 0);
    		END IF;
    		IF updating THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_INVOICE', 'Update', 1, 0);
    		END IF;
    		IF deleting THEN
    			INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS)
    				VALUES(:N.PKEY,'ADAPTER_INVOICE', 'Delete', 1, 0);
    		END IF;
    	END;
    	
    	
            
  2. Wechseln Sie in einem Befehlsfenster, das für den Zugriff auf Ihre Datenbank geöffnet wurde, zu dem Ordner, in dem die Datei adapter_create_tables_oracle.sql enthalten ist, und geben Sie den folgenden Befehl ein:
    sqlplus <uid>/<Kennwort> @adapter_create_tables_oracle.sql

    Warten Sie das Ende des Scripts ab. Wenn Sie das Script zum ersten Mal ausführen, wird die folgende Nachricht angezeigt:

    ORA-00942: table or view does not exist (Tabelle oder Ansicht ist nicht vorhanden)
    Ignorieren Sie diese Nachricht. Die Nachricht wird angezeigt, weil das Script versucht, die möglicherweise bereits vorhandenen Tabellen 'DBINPUT_CUSTOMER' und 'DBINPUT_EVENTS' zu löschen, bevor neue Tabellen erstellt werden. Wenn das Script jedoch zum ersten Mal ausgeführt wird, kann das Script keine Tabelle finden.

Zurück zu 'Datenbank einrichten'

Zurück zum Beginn des Mustercodes