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 '最終更新日時';
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