بتاريخ: 23 يونيو 201411 سنة comment_252291 السلام عليكم ورحمة الله وبركاته انا مستوعب موضوع مراقبة قاعدة البيانات ولكن عندي مشكلهانا قمت بعمل جدول في قاعدة البيانات خاص بالمستخدمين ، وطبعا حضراتكم عارفين ان في اتجاهاين ل Create Users أنا سلكت طريق ال Table Users بدلا من Create users on Database وطبعا لما بعمل عملية المراقبه واسترجع بيانات المستخدم الذي اتصل بقاعدة البيانات او ال Ip Address او اي بيانات أخرى فيعطيني بيانات السيرفير الموجود عليه ال Database وطبعا ده منطقي جدا لان الاتصال قائم بالفعل على السيرفير عن طريق المستخدم hr مثلا اللي انا عامل عليه جدول المستخدمينفهل من الممكن انا اعرف اسم مستخدم النظام وال Ip وال OS User وكل ما يخص المستخدم الذي قام بفتح الApplication أيا كان مكانه على الشبكهوشكرا لكم تقديم بلاغ
بتاريخ: 25 يونيو 201411 سنة comment_252401 نعم تستطيع عزيزي هشام.. بعمل TRIGGER عند الدخول او على مستوى الجداول حسبما اردت ففي حالة الدخول على قاعدة البيانات CREATE TABLE SYSTEM.LOGIN_AUDIT ( ACTION_DATE DATE, SYSTEM_USER VARCHAR2(15 BYTE), SYSTEM_IP VARCHAR2(40 BYTE) ) ; CREATE OR REPLACE TRIGGER SYSTEM.USER_LOGON after logon on database BEGIN INSERT INTO SYSTEM.LOGIN_AUDIT VALUES (SYSDATE,SYS_CONTEXT('USERENV', 'OS_USER'), SYS_CONTEXT('USERENV', 'IP_ADDRESS')); END ; / اما على مستوى الجدول CREATE OR REPLACE TRIGGER SYSTEM.TRG_HOSP_RULES_AUDIT AFTER DELETE OR INSERT OR UPDATEON SYSTEM.HOSP_RULESREFERENCING NEW AS NEW OLD AS OLDFOR EACH ROWDECLARE v_action_no NUMBER ;BEGIN --*********************************************************** --* TRIGGER : TRG_HOSP_RULES_AUDIT * --* CREATED BY : HAMID M. HAMID * --* PURPOSE : TO AUDIT DML STATEMENTS ON * --* HOSP_RULES TABLE * --*********************************************************** BEGIN IF INSERTING THEN INSERT INTO SYSTEM.HOSP_RULES_AUDIT (RULE_CODE, RULE_DESC, RULE_VALUE, MODULE_CODE, LAST_UPDATE_BY, LAST_UPDATE_DATE, RULE_COMMENT, HOSP, ACTION_NO, ACTION_TYPE, ACTION_DATE, SYSTEM_IP, SYSTEM_USER) VALUES (:NEW.RULE_CODE, :NEW.RULE_DESC, :NEW.RULE_VALUE, :NEW.MODULE_CODE, :NEW.LAST_UPDATE_BY, :NEW.LAST_UPDATE_DATE, :NEW.RULE_COMMENT, :NEW.HOSP,SYSTEM.SEQ_HOSP_RULES_AUDIT.NEXTVAL,'INSERT',SYSDATE, SYS_CONTEXT('USERENV', 'IP_ADDRESS'),SYS_CONTEXT('USERENV', 'OS_USER')) ; ELSIF UPDATING THEN SELECT SYSTEM.SEQ_HOSP_RULES_AUDIT.NEXTVAL INTO v_action_no FROM dual ; INSERT INTO SYSTEM.HOSP_RULES_AUDIT (RULE_CODE, RULE_DESC, RULE_VALUE, MODULE_CODE, LAST_UPDATE_BY, LAST_UPDATE_DATE, RULE_COMMENT, HOSP, ACTION_NO, ACTION_TYPE, ACTION_DATE, SYSTEM_IP, SYSTEM_USER) VALUES (:OLD.RULE_CODE, :OLD.RULE_DESC, :OLD.RULE_VALUE, :OLD.MODULE_CODE, :OLD.LAST_UPDATE_BY, :OLD.LAST_UPDATE_DATE, :OLD.RULE_COMMENT, :OLD.HOSP,v_action_no,'UPDATE OLD',SYSDATE, SYS_CONTEXT('USERENV', 'IP_ADDRESS'),SYS_CONTEXT('USERENV', 'OS_USER')) ; INSERT INTO SYSTEM.HOSP_RULES_AUDIT (RULE_CODE, RULE_DESC, RULE_VALUE, MODULE_CODE, LAST_UPDATE_BY, LAST_UPDATE_DATE, RULE_COMMENT, HOSP, ACTION_NO, ACTION_TYPE, ACTION_DATE, SYSTEM_IP, SYSTEM_USER) VALUES (:NEW.RULE_CODE, :NEW.RULE_DESC, :NEW.RULE_VALUE, :NEW.MODULE_CODE, :NEW.LAST_UPDATE_BY, :NEW.LAST_UPDATE_DATE, :NEW.RULE_COMMENT, :NEW.HOSP,SYSTEM.SEQ_HOSP_RULES_AUDIT.NEXTVAL,'UPDATE NEW',SYSDATE, SYS_CONTEXT('USERENV', 'IP_ADDRESS'),SYS_CONTEXT('USERENV', 'OS_USER')) ; ELSIF DELETING THEN INSERT INTO SYSTEM.HOSP_RULES_AUDIT (RULE_CODE, RULE_DESC, RULE_VALUE, MODULE_CODE, LAST_UPDATE_BY, LAST_UPDATE_DATE, RULE_COMMENT, HOSP, ACTION_NO, ACTION_TYPE, ACTION_DATE, SYSTEM_IP, SYSTEM_USER) VALUES (:OLD.RULE_CODE, :OLD.RULE_DESC, :OLD.RULE_VALUE, :OLD.MODULE_CODE, :OLD.LAST_UPDATE_BY, :OLD.LAST_UPDATE_DATE, :OLD.RULE_COMMENT, :OLD.HOSP,v_action_no,'DELETE',SYSDATE, SYS_CONTEXT('USERENV', 'IP_ADDRESS'),SYS_CONTEXT('USERENV', 'OS_USER')) ; END IF ;EXCEPTION WHEN OTHERS THEN NULL ; END ;END ;/ تحياتي, تقديم بلاغ
بتاريخ: 26 يونيو 201411 سنة كاتب الموضوع comment_252434 أخي الفاضل HAMID M. HAMID جزاك الله خيرا على هذا الرد الطيب ويبدو أن سؤالي كان غير واضح لتقصير عندي في سرد السؤالهذه الأجابة التي ذكرتها هي صحيحة في حالة إذا كنت قمت بعمل Create User hr identified by hr; فيقوم بمراقبة عمل المستخدم hr ولكن ما أسأل عنه هو في حالة لو قمت بعمل جدول للمستخدمين على المستخدم hr مثلا : create table users ( user_name VARCHAR2(50), password VARCHAR2(50) ); Insert into USER (USER_NAME, PASSWORD) Values ('Hesham', '123'); الأن قام المستخدم Hesham بالدخول على الفورم وبدأ بعمل عمليات الinsert , update,delete فكيف أراقبه ؟ وإن كان يتصل من على جهاز على الشبكه كيف أعرف ال os_user ,Ip_address ؟أرجو أن يكون سؤالي قد أتضح ولو الأمر يحتاج لمزيد من الأيضاح فسوف أقوم بذلك تم تعديل 26 يونيو 201411 سنة بواسطة هشام ابو العنين تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.