Oracle のセットアップ

この説明では、Oracle データベースを使用していることを前提とし、以下のタスクを順番に説明していきます。

インストールでデフォルトのデータベースが作成されていない場合には、データベースを作成してください。 この場合、DBA 指示に従ってから、以下の指示に従います。

事前定義の SQL スクリプトを実行して以下のステップを実行することもできます。 サンプルのホームに戻り、インポート・オプションを 1 つ選択します。 インポート後に、SQL スクリプトでデータベースをセットアップすることを選択できます。

データベース表を作成してそれにアクセスする際には、以下の問題に注意してください。

  1. テキスト・エディターで新しい文書を開き、DAPTER_ADDRESS、ADAPTER_CUSTOMER、ADAPTER_INVOICE、および IBM_EVENTS 表を作成する以下のスクリプトをコピーしてその文書に貼り付け、ファイル名を adatper_create_tables_oracle.sql として、そのファイルを保存します。
    -- First create the tables needed for Application Data
    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. データベースにアクセスするために開いたコマンド・ウィンドウで、adapter_create_tables_oracle.sql が入っているフォルダーに移動し、次のコマンドを入力します。
    sqlplus <uid>/<password> @adapter_create_tables_oracle.sql

    スクリプトの実行が終了するまで待ちます。 スクリプトを初めて実行すると、次のようなメッセージが表示されます。

    ORA-00942: table or view does not exist
    メッセージを無視します。メッセージが表示される理由は、スクリプトは DBINPUT_CUSTOMER および DBINPUT_EVENTS という既存の表を新規表の作成前に除去しようとしますが、これまでスクリプトを実行したことがない場合は、スクリプトが既存の表を検出できないからです。

「データベースのセットアップ」に戻る

サンプルのホームに戻る