الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

استفسار بخصوص الauditing

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله وبركاته

انا مستوعب موضوع مراقبة قاعدة البيانات ولكن عندي مشكله
انا قمت بعمل جدول في قاعدة البيانات خاص بالمستخدمين ، وطبعا حضراتكم عارفين ان في اتجاهاين ل Create Users أنا سلكت طريق ال Table Users بدلا من Create users on Database

وطبعا لما بعمل عملية المراقبه واسترجع بيانات المستخدم الذي اتصل بقاعدة البيانات او ال Ip Address او اي بيانات أخرى فيعطيني بيانات السيرفير الموجود عليه ال Database وطبعا ده منطقي جدا لان الاتصال قائم بالفعل على السيرفير عن طريق المستخدم hr مثلا اللي انا عامل عليه جدول المستخدمين
فهل من الممكن انا اعرف اسم مستخدم النظام وال Ip وال OS User وكل ما يخص المستخدم الذي قام بفتح الApplication أيا كان مكانه على الشبكه
وشكرا لكم

بتاريخ:

نعم تستطيع عزيزي هشام..

 

بعمل 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 UPDATE
ON SYSTEM.HOSP_RULES
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
    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 ;
/
 

 

تحياتي,

بتاريخ:
  • كاتب الموضوع

أخي الفاضل 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 ؟
أرجو أن يكون سؤالي قد أتضح ولو الأمر يحتاج لمزيد من الأيضاح فسوف أقوم بذلك

تم تعديل بواسطة هشام ابو العنين

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.