بتاريخ: 19 أكتوبر 201015 سنة comment_201761 السلام عليكم ورحمة الله وبركاتهالاخوه الاعزاء عندي سوال طرحته في اكثر من قسم في هذا المنتدى والان اطرحه في هذا القسم لعل وعسىسواليعندي 20 اسكيما في كل اسكيما 100 جدول اريد اعمل مراقبه على كل الجداول من الذي يقوم بالحذف والتعديلفاذا انشات الترجر يدوي على كل تيبل لاخذ وقت وجهد لان بعض التيبل يكون فيها اكثر 160 فيلداريد ان اعمل برسيجر او فنكشن تجيب لي اسماء الفيلد من كل تيبل الى الترجر دههل في طريقه لذلك او احد يدلني على طريقه اخرى وجزاكم الله خيرا تقديم بلاغ
بتاريخ: 19 أكتوبر 201015 سنة comment_201762 dear,,,this is the all information about auditing system in oracle and how you can createdServer SetupAuditing is a default feature of the Oracle server. The initialization parameters that influence its behaviour can be displayed using the SHOW PARAMETER SQL*Plus command. SQL> SHOW PARAMETER AUDITNAME TYPE VALUE------------------------------------ ----------- ------------------------------audit_file_dest string C:\ORACLE\PRODUCT\10.2.0\ADMIN \DB10G\ADUMPaudit_sys_operations boolean FALSEaudit_trail string NONESQL> Auditing is disabled by default, but can enabled by setting the AUDIT_TRAIL static parameter, which has the following allowed values. AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }The following list provides a description of each setting: •none or false - Auditing is disabled.•db or true - Auditing is enabled, with all audit records stored in the database audit trial (SYS.AUD$).•db,extended - As db, but the SQL_BIND and SQL_TEXT columns are also populated.•xml- Auditing is enabled, with all audit records stored as XML format OS files.•xml,extended - As xml, but the SQL_BIND and SQL_TEXT columns are also populated.•os- Auditing is enabled, with all audit records directed to the operating system's audit trail.Note. In Oracle 10g Release 1, db_extended was used in place of db,extended. The XML options are new to Oracle 10g Release 2.The AUDIT_SYS_OPERATIONS static parameter enables or disables the auditing of operations issued by users connecting with SYSDBA or SYSOPER privileges, including the SYS user. All audit records are written to the OS audit trail.The AUDIT_FILE_DEST parameter specifies the OS directory used for the audit trail when the os, xml and xml,extended options are used. It is also the location for all mandatory auditing specified by the AUDIT_SYS_OPERATIONS parameter.To enable auditing and direct audit records to the database audit trail, we would do the following. SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;System altered.SQL> SHUTDOWNDatabase closed.Database dismounted.ORACLE instance shut down.SQL> STARTUPORACLE instance started.Total System Global Area 289406976 bytesFixed Size 1248600 bytesVariable Size 71303848 bytesDatabase Buffers 213909504 bytesRedo Buffers 2945024 bytesDatabase mounted.Database opened.SQL>Audit Options One look at the AUDIT command syntax should give you an idea of how flexible Oracle auditing is. There is no point repeating all this information, so instead we will look at a simple example.First we create a new user called AUDIT_TEST. CONNECT sys/password AS SYSDBACREATE USER audit_test IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users;GRANT connect TO audit_test;GRANT create table, create procedure TO audit_test;Next we audit all operations by the AUDIT_TEST user.CONNECT sys/password AS SYSDBAAUDIT ALL BY audit_test BY ACCESS;AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY audit_test BY ACCESS;AUDIT EXECUTE PROCEDURE BY audit_test BY ACCESS;These options audit all DDL and DML, along with some system events. •DDL (CREATE, ALTER & DROP of objects)•DML (INSERT UPDATE, DELETE, SELECT, EXECUTE).•SYSTEM EVENTS (LOGON, LOGOFF etc.)Next, we perform some operations that will be audited. CONN audit_test/passwordCREATE TABLE test_tab ( id NUMBER);INSERT INTO test_tab (id) VALUES (1);UPDATE test_tab SET id = id;SELECT * FROM test_tab;DELETE FROM test_tab;DROP TABLE test_tab; In the next section we will look at how we view the contents of the audit trail.View Audit TrailThe audit trail is stored in the SYS.AUD$ table. Its contents can be viewed directly or via the following views: SELECT view_nameFROM dba_viewsWHERE view_name LIKE 'DBA%AUDIT%'ORDER BY view_name;VIEW_NAME------------------------------DBA_AUDIT_EXISTSDBA_AUDIT_OBJECTDBA_AUDIT_POLICIESDBA_AUDIT_POLICY_COLUMNSDBA_AUDIT_SESSIONDBA_AUDIT_STATEMENTDBA_AUDIT_TRAILDBA_COMMON_AUDIT_TRAILDBA_FGA_AUDIT_TRAILDBA_OBJ_AUDIT_OPTSDBA_PRIV_AUDIT_OPTSDBA_REPAUDIT_ATTRIBUTEDBA_REPAUDIT_COLUMNDBA_STMT_AUDIT_OPTS14 rows selected.SQL>The three main views are: •DBA_AUDIT_TRAIL - Standard auditing only (from AUD$).•DBA_FGA_AUDIT_TRAIL - Fine-grained auditing only (from FGA_LOG$).•DBA_COMMON_AUDIT_TRAIL - Both standard and fine-grained auditing.The most basic view of the database audit trail is provided by the DBA_AUDIT_TRAIL view, which contains a wide variety of information. The following query displays the some of the information from the database audit trail. COLUMN username FORMAT A10COLUMN owner FORMAT A10COLUMN obj_name FORMAT A10COLUMN extended_timestamp FORMAT A35SELECT username, extended_timestamp, owner, obj_name, action_nameFROM dba_audit_trailWHERE owner = 'AUDIT_TEST'ORDER BY timestamp;USERNAME EXTENDED_TIMESTAMP OWNER OBJ_NAME ACTION_NAME---------- ----------------------------------- ---------- ---------- ----------------------------AUDIT_TEST 16-FEB-2006 14:16:55.435000 +00:00 AUDIT_TEST TEST_TAB CREATE TABLEAUDIT_TEST 16-FEB-2006 14:16:55.514000 +00:00 AUDIT_TEST TEST_TAB INSERTAUDIT_TEST 16-FEB-2006 14:16:55.545000 +00:00 AUDIT_TEST TEST_TAB UPDATEAUDIT_TEST 16-FEB-2006 14:16:55.592000 +00:00 AUDIT_TEST TEST_TAB SELECTAUDIT_TEST 16-FEB-2006 14:16:55.670000 +00:00 AUDIT_TEST TEST_TAB DELETEAUDIT_TEST 16-FEB-2006 14:17:00.045000 +00:00 AUDIT_TEST TEST_TAB DROP TABLE6 rows selected.SQL> When the audit trail is directed to an XML format OS file, it can be read using a text editor or via the V$XML_AUDIT_TRAIL view, which contains similar information to the DBA_AUDIT_TRAIL view. COLUMN db_user FORMAT A10COLUMN object_schema FORMAT A10COLUMN object_name FORMAT A10COLUMN extended_timestamp FORMAT A35SELECT db_user, extended_timestamp, object_schema, object_name, actionFROM v$xml_audit_trailWHERE object_schema = 'AUDIT_TEST'ORDER BY extended_timestamp;DB_USER EXTENDED_TIMESTAMP OBJECT_SCH OBJECT_NAM ACTION---------- ----------------------------------- ---------- ---------- ----------AUDIT_TEST 16-FEB-2006 14:14:33.417000 +00:00 AUDIT_TEST TEST_TAB 1AUDIT_TEST 16-FEB-2006 14:14:33.464000 +00:00 AUDIT_TEST TEST_TAB 2AUDIT_TEST 16-FEB-2006 14:14:33.511000 +00:00 AUDIT_TEST TEST_TAB 6AUDIT_TEST 16-FEB-2006 14:14:33.542000 +00:00 AUDIT_TEST TEST_TAB 3AUDIT_TEST 16-FEB-2006 14:14:33.605000 +00:00 AUDIT_TEST TEST_TAB 7AUDIT_TEST 16-FEB-2006 14:14:34.917000 +00:00 AUDIT_TEST TEST_TAB 126 rows selected.SQL> Several fields were added to both the standard and fine-grained audit trails in Oracle 10g, including:•EXTENDED_TIMESTAMP - A more precise value than the exising TIMESTAMP column.•PROXY_SESSIONID - Proxy session serial number when an enterprise user is logging in via the proxy method.•GLOBAL_UID - Global Universal Identifier for an enterprise user.•INSTANCE_NUMBER - The INSTANCE_NUMBER value from the actioning instance.•OS_PROCESS - Operating system process id for the oracle process.•TRANSACTIONID - Transaction identifier for the audited transaction. This column can be used to join to the XID column on the FLASHBACK_TRANSACTION_QUERY view.•SCN - System change number of the query. This column can be used in flashback queries.•SQL_BIND - The values of any bind variables if any.•SQL_TEXT - The SQL statement that initiated the audit action.The SQL_BIND and SQL_TEXT columns are only populated when the AUDIT_TRAIL parameter is set to db,extended or xml,extended.Maintenance and SecurityAuditing should be planned carefully to control the quantity of audit information. Only audit specific operations or objects of interest. Over time you can refine the level of auditing to match your requirements.The database audit trail must be deleted, or archived, on a regular basis to prevent the SYS.AUD$ table growing to an unnacceptable size.Only DBAs should have maintenance access to the audit trail. Auditing modifications of the data in the audit trail itself can be achieved using the following statement:AUDIT INSERT, UPDATE, DELETE ON sys.aud$ BY ACCESS;The OS and XML audit trails are managed through the OS. These files should be secured at the OS level by assigning the correct file permissions.Fine Grained Auditing (FGA)Fine grained auditing extends Oracle standard auditing capabilities by allowing the user to audit actions based on user-defined predicates. It is independant of the AUDIT_TRAIL parameter setting and all audit records are stored in the FGA_LOG$ table, rather than the AUD$ table. The following example illustrates how fine grained auditing is used.First, create a test table. CONN audit_test/passwordCREATE TABLE emp ( empno NUMBER(4) NOT NULL, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2));INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Tim', 1);INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Larry', 50001);COMMIT;The following policy audits any queries of salaries greater than £50,000.CONN sys/password AS sysdbaBEGIN DBMS_FGA.add_policy( object_schema => 'AUDIT_TEST', object_name => 'EMP', policy_name => 'SALARY_CHK_AUDIT', audit_condition => 'SAL > 50000', audit_column => 'SAL');END;/ Querying both employees proves the auditing policy works as expected. CONN audit_test/passwordSELECT sal FROM emp WHERE ename = 'Tim';SELECT sal FROM emp WHERE ename = 'Larry';CONN sys/password AS SYSDBASELECT sql_textFROM dba_fga_audit_trail;SQL_TEXT------------------------------------------SELECT sal FROM emp WHERE ename = 'Larry'1 row selected.SQL> Extra processing can be associated with an FGA event by defining a database procedure and associating this to the audit event. The following example assumes the FIRE_CLERK procedure has been defined: BEGIN DBMS_FGA.add_policy( object_schema => 'AUDIT_TEST', object_name => 'EMP', policy_name => 'SALARY_CHK_AUDIT', audit_condition => 'SAL > 50000', audit_column => 'SAL', handler_schema => 'AUDIT_TEST', handler_module => 'FIRE_CLERK', enable => TRUE);END;/ The DBMS_FGA package contains the following procedures:•ADD_POLICY•DROP_POLICY•ENABLE_POLICY•DISABLE_POLICYIn Oracle9i fine grained auditing was limited queries, but in Oracle 10g it has been extended to include DML statements, as shown by the following example. -- Clear down the audit trail.CONN sys/password AS SYSDBATRUNCATE TABLE fga_log$;SELECT sql_text FROM dba_fga_audit_trail;no rows selected.-- Apply the policy to the SAL column of the EMP table.BEGIN DBMS_FGA.add_policy( object_schema => 'AUDIT_TEST', object_name => 'EMP', policy_name => 'SAL_AUDIT', audit_condition => NULL, -- Equivalent to TRUE audit_column => 'SAL', statement_types => 'SELECT,INSERT,UPDATE,DELETE');END;/-- Test the auditing.CONN audit_test/passwordSELECT * FROM emp WHERE empno = 9998;INSERT INTO emp (empno, ename, sal) VALUES (9998, 'Bill', 1);UPDATE emp SET sal = 10 WHERE empno = 9998;DELETE emp WHERE empno = 9998;ROLLBACK;-- Check the audit trail.CONN sys/password AS SYSDBASELECT sql_text FROM dba_fga_audit_trail;SQL_TEXT--------------------------------------SELECT * FROM emp WHERE empno = 9998INSERT INTO emp (empno, ename, sal) VALUES (9998, 'Bill', 1)UPDATE emp SET sal = 10 WHERE empno = 9998DELETE emp WHERE empno = 99984 rows selected.-- Drop the policy.CONN sys/password AS SYSDBABEGIN DBMS_FGA.drop_policy( object_schema => 'AUDIT_TEST', object_name => 'EMP', policy_name => 'SAL_AUDIT');END;/ تقديم بلاغ
بتاريخ: 19 أكتوبر 201015 سنة comment_201801 السلام عليكم ورحمة الله وبركاتهجزاك الله كل خير تقديم بلاغ
بتاريخ: 21 أكتوبر 201015 سنة comment_201899 انا افضل بعمل في التيبل المنشود مراقبته او كل التبيل عندما تعملهم ان تضع فيهم 4 اعمدهcreation usercreation datemodification usermodification dateوعمل تريقر داخل الفورم يدخل معلومات الى هذه الحقول تقديم بلاغ
بتاريخ: 21 أكتوبر 201015 سنة comment_201926 اخي العزيز اولا شكرا على الشرح تبعك ولكن هذة الطريقة تبطيء قاعده البيانات بشكل كبير جدا والاهم انها بتملاها بسرعه الحل انا رفعتة رد على موضوع انذكر تقديم بلاغ
بتاريخ: 21 أكتوبر 201015 سنة comment_201955 في مثل بيقولك كل شيخ واله طريقة ممكن حبيبنا طريقتي مو منقطقية بالنسبة الكبس منطقية لناس تانية وياليت تذكر لنا رابط الموضوع اللي انت علقت عليهعشان يستفيدوا الاخوةوجوابي منطقي بالنسبة لطلب مثل الاخ ماذكرهوممكن في طرق تانيه بس هوه حابب يعمل شي على المستوى كله من غير ما يكرر تم تعديل 21 أكتوبر 201015 سنة بواسطة أسامة موسى تقديم بلاغ
بتاريخ: 22 أكتوبر 201015 سنة comment_201962 أسامة موسىالعبوسأنا رأيي أن الطريقتين سواء طريقة أسامة موسي أو طريقة العبوس فهم صح الصح !!!ولكن طريقة أسامة موسي من حيث الـ Oracle DBA فيمكن تكون صح ولكن لا أعلمهاأما الطريقة التي عرضها الأخ العبوس فهي أيضاً منطقية جداً جداً جداً ويتم تطبيقها في أي نوع من أنواع قواعد البيانات سواءAccessFoxProMySqlSQ-ServerOracleفأعتقد أن الـ Access, FoxPro ليس لديهم نفس الإمكانيات الموجودة داخل الـ Oracle, SQL-Server, MySql !!!الشيء الثاني أنا كمبرمج Application Database يهمني دائماً أن أكون المتحكم الأول والأخير في كل شغلي وكل عملي ، وفكرة العبوس هي أفضل فكرة بتستخدمها أعظم الشركات البرمجيةوعلي كل حال شكراً لكم جميعاً ، وشكر خاص للأخ أسامة موسي تقديم بلاغ
بتاريخ: 24 نوفمبر 201015 سنة comment_204109 الأخ / أسامة ..شكراً لك على هذه المقالة الرائعة ..بالنسبة للكود :SELECT sql_text FROM dba_fga_audit_trail;SQL_TEXT--------------------------------------SELECT * FROM emp WHERE empno = 9998INSERT INTO emp (empno, ename, sal) VALUES (9998, 'Bill', 1)UPDATE emp SET sal = 10 WHERE empno = 9998DELETE emp WHERE empno = 99984 rows selected.أنا لا تظهر لدي جملة SQL كاملة وإنما تظهر مع Bind Variables كما في المثال التالي :UPDATE "SCOTT"."STUDENT" SET ST_NAME = :1 WHERE ROWID = :2 AND ORA_ROWSCN = :3أريد أن تظهر جملة SQL كالتالي :UPDATE "SCOTT"."STUDENT" SET ST_NAME ='AHMAD'فكيف يمكن ذلك ؟ تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.