• テーブルの作成
CREATE TABLE MACHINE_VERSION
 (MACHINE VARCHAR2(64)
 ,OSUSER VARCHAR2(30)
 ,CLIENT_VERSION VARCHAR2(40)
 ,INSDATE DATE
 ,UPDDATE DATE
 ,CONSTRAINT PK_MACHINE_VERSION PRIMARY KEY (MACHINE,OSUSER,CLIENT_VERSION)
 )
;

    • 列コメントの設定
COMMENT ON COLUMN MACHINE_VERSION.MACHINE IS '端末名';
COMMENT ON COLUMN MACHINE_VERSION.OSUSER IS 'ユーザ名';
COMMENT ON COLUMN MACHINE_VERSION.CLIENT_VERSION IS 'バージョン';
COMMENT ON COLUMN MACHINE_VERSION.INSDATE IS '新規登録日時';
COMMENT ON COLUMN MACHINE_VERSION.UPDDATE IS '最終更新日時';

    • PUBLICシノニムの作成
CREATE PUBLIC SYNONYM SYN_MACHINE_VERSION FOR MACHINE_VERSION;

    • トリガの作成
CREATE OR REPLACE TRIGGER MACHINE_VERSION_TRG1
 BEFORE INSERT OR UPDATE ON MACHINE_VERSION FOR EACH ROW
BEGIN
   IF INSERTING THEN
       :NEW.INSDATE := SYSDATE;
       :NEW.UPDDATE := SYSDATE;
   ELSIF UPDATING THEN
       :NEW.UPDDATE := SYSDATE;
   END IF;
END;
/

    • オブジェクト権限の付与
GRANT SELECT,INSERT,UPDATE,DELETE ON MACHINE_VERSION TO PUBLIC;

    • 接続端末別OracleClientバージョン情報のマージ
MERGE INTO SYN_MACHINE_VERSION
 USING
   (
   SELECT UPPER(T1.MACHINE) AS 端末名
         ,UPPER(T1.OSUSER) AS ユーザ名
         ,UPPER(T2.CLIENT_VERSION) AS バージョン
     FROM GV$SESSION T1
       LEFT OUTER JOIN
         (
         SELECT INST_ID
               ,SID
               ,SERIAL#
               ,CLIENT_VERSION
           FROM GV$SESSION_CONNECT_INFO
           WHERE AUTHENTICATION_TYPE ='DATABASE'
             AND OSUSER <>'SYSTEM'
           GROUP BY INST_ID
                   ,SID
                   ,SERIAL#
                   ,OSUSER
                   ,CLIENT_VERSION
         ) T2
         ON  T1.INST_ID = T2.INST_ID
         AND T1.SID = T2.SID
         AND T1.SERIAL# = T2.SERIAL#
     WHERE T1.USERNAME IS NOT NULL
       AND T1.TYPE ='USER'
     GROUP BY T1.MACHINE
             ,T1.OSUSER
             ,T2.CLIENT_VERSION
   )
   ON (MACHINE = 端末名 AND OSUSER = ユーザ名 AND CLIENT_VERSION = バージョン)
 WHEN NOT MATCHED THEN
   INSERT(MACHINE,OSUSER,CLIENT_VERSION) VALUES(端末名,ユーザ名,バージョン)
;

タグ:

+ タグ編集
  • タグ:
最終更新:2018年05月12日 15:39