اذهب الي المحتوي

لوحة القادة


المحتوى صاحب التقييم الأعلى

Showing content with the highest reputation since 20 ديس, 2020 في جميع الأقسام

  1. 2 points
    اخي الفاضل/ هذه الرسالة لا تعني ان هناك نقص في ملفاتك، ولكنها تعني أنك لم تضع مجلد images داخل المكان المفروض ان يرى فيه ال resources الخاصة بك ، وهنا اقترح عليك تشغيل ORDS on Tomcat apache وإليك رابط كل خطوات تسطيب ابيكس على جهازك والملفات التي أشرت إليها ليست ناقصة ولكنها ملغاة من اصدار 20.2
  2. 1 point
    ماهو مفهوم VPD وماهي الحاجه منــــــــــــــها : عندما نتكلم عن قواعد البيانات فإن من أهم الأمور التي يجب الإهتمام بها والتركيز عليها موضوع الأمن ونجد بعض الأسئلة التي تطرح نفسها هل بإستطاعة شخص ما إختراق قاعدة البيانات بإستخدام أي طريقة ؟ هل بياناتي في وضع آمن ؟وهل تستخدم بياناتي من تطبيقات أخرى بدون معرفتي ؟ كيف يمكنني زيادة أمن البيانات ؟ وغيرها الكثير من الأسئلة وإحدى الأمور التي تجيب على هذه الأسئلة هي مايسمى بال Virtual Private Database وسنتكلم عن طريقة إعداد هذه التقنية بشرح مختصر ويمكن الرجوع إلى المقالة الرئيسية للكاتب Sameer Wadhwa في موقعه http://www.samoratech.com بدئت هذه التقنية من إصدار أوراكل 8i وأصبحت شائعة الإستخدام ومفيدة في الإصدار ORACLE 9i ومفهوم هذه التقنية هو تطبيق قواعد الأمن عن طريق قاعدة البيانات وليس عن طريق البرنامج أو التطبيق بحيث لانحتاج إلى تطبيق قواعد الأمن على كل تطبيق يستخدم قاعدة البيانات وهذه التقنية تصبح فعالة أكثر إذا كانت البيانات تستخدم من تطبيقات خارج الشركة وفي بيئة غير آمنة مثلا مواقع التجارة الإلكترونية حيث تسمح للعملاء من الدخول على بيانات معينة وتستخدم هذه التقنية في البنوك ، المستشفيات ، المؤسسات المالية لزيادة وتعزيز أمن البيانات. ماهي آلية عمل الــــ Virtual Private Database أو row-level security"بشكل مختصر " عند دخول المستخدم على قاعدة البيانات يبدء عمل database logon trigger والذي يقوم بعمل CALL للــ CONTEXT stored procedure لتحديد ماهو المسموح والغير مسموح تنفيذه من قبل هذا المستخدم عن طريق defined context وبمجرد محاولة المستخدم تنفيذ إستعلام أو تنفيذ جملة DML فإنه يتم تنفيذ السياسات والشروط المعرفة داخل ال CONTEXT . والآن لنبدء بشرح مثال على هذا الموضوع : هذا المثال سوف يستخدم جدول الموظفين EMP الموجود لدى المستخدم SCOTT ، وسنطبق VPD بحيث يستطيع المستخدم مشاهدة البيانات التي تخصه فقط وليس جميع البيانات الموجودة في جدول الموظفين، أيضا سوف نقوم بإنشاء مستخدمين هما JAMES , BLAKE وكل منهما لديه صلاحية SELECT على جدول EMP وسنلاحظ أن أي من المستخدمين سوف يقوم بتنفيذ جملة مثل SELECT * FROM EMP; سوف يتم ترجمتها مباشرة إلى : SELECT "EMPNO","ENAME","JOB","MGR","HIREDATE" ,"SAL","COMM","DEPTNO" FROM "SCOTT"."EMP" "EMP" WHERE (EMPNO=SYS_CONTEXT('SCOTTCTX','EMP_ID')) ولو لاحظنا سنجد أن الجملة الأخيرة (EMPNO=SYS_CONTEXT('SCOTTCTX','EMP_ID')) مضافة من الأوراكل حسب سياسة الأمن التي تم تعريفهـــــــــــا سابقا . خطوات إعداد وتنفيذ الــــ Virtual Private Database أو row-level security : 1-إنشاء المستخدمين JAMES & BLAKE ومنحهم الصلاحيات على جدول الموظفين عن طريق الدخول على حساب ال SYS وتنفيذ مايلي : CREATE USER JAMES IDENTIFIED BY JAMES123; CREATE USER BLAKE IDENTIFIED BY BLAKE123; GRANT CREATE SESSION TO JAMES, BLAKE; CREATE TABLE SCOTT.EMPIDCONTROLTAB AS SELECT EMPNO, ENAME FROM SCOTT.EMP; GRANT SELECT ON SCOTT.EMP TO JAMES, BLAKE; 2-منح المستخدم SCOTT لصلاحية CONTEXT PRIVILEGE ليتمكن من عمل CONTEXT " تعريف شروط وسياسات الدخول على جدول الموظفين" GRANT CREATE ANY CONTEXT TO SCOTT; 3- إنشاء ال CONTEXT PACKAGE ومنح الصلاحيات عليها ندخل على المستخدم SCOTT ونقوم بإنشاء CONTEXT PACKAGE عن طريق تنفيذ مايلي : CREATE OR REPLACE CONTEXT SCOTTCTX USING SCOTT.CTXPKG; CREATE OR REPLACE PACKAGE SCOTT.CTXPKG AS PROCEDURE CTXPROC; والآن نقوم بإنشاء ال PACKAGE BODY والذي سنحدد فيه شروط وسياسات الدخول على البيانات كما يلي : CREATE OR REPLACE PACKAGE BODY SCOTT.CTXPKG IS PROCEDURE CTXPROC IS VEMPNO NUMBER; BEGIN -- set the attribute OWNER=TRUE if user is SCOTT IF SYS_CONTEXT ('USERENV', 'SESSION_USER') = 'SCOTT' THEN DBMS_SESSION.SET_CONTEXT ('SCOTTCTX', 'OWNER', 'TRUE'); ELSE BEGIN SELECT EMPNO INTO VEMPNO FROM SCOTT.EMPIDCONTROLTAB WHERE ENAME = SYS_CONTEXT ('USERENV', 'SESSION_USER'); -- set the attribute EMP_ID with the EMPNO of the -- session user DBMS_SESSION.SET_CONTEXT ('SCOTTCTX', 'EMP_ID', VEMPNO); EXCEPTION WHEN NO_DATA_FOUND THEN /* NO EMPLOYEE ID FOUND, SET A DUMMY ID */ DBMS_SESSION.SET_CONTEXT ('SCOTTCTX', 'EMP_ID', 0); END; END IF; END CTXPROC; END CTXPKG; نلاحظ أنه عندما يكون المستخدم هو SCOTT فإن نعطيه الصلاحيات الكاملة بسبب أنه TABLE OWNER وعندما يكون مستخدم آخر نقوم بالبحث عن رقمه وهو رقم الوظف في حالتنا هذه من جدول EMPIDCONTROLTAB ، إذا تم العثور على رقم الموظف فإننا نسمح له بالدخول على البيانات التي تخصه فقط في جدول الموظفين " السجلات التي تخصه فقط " ، وإذا لم يتم العثور على رقم لهذا الموظف فإننا نحدد رقم صفر له بحيث لايمكنه مشاهدة أي بيانات من جدول الموظفين . الآن نقوم بمنح صلاحية تنفيذ الحزمة السابقة الى جميع المستخدمين : GRANT EXECUTE ON SCOTT.CTXPKG TO PUBLIC; 4- نقوم الآن بإنشاء database logon trigger بحيث يتم تنفيذ ال context package بعد الدخول لقاعدة البيانات : CREATE OR REPLACE TRIGGER SCOTT.VPD_TRG AFTER LOGON ON DATABASE BEGIN SCOTT.CTXPKG.CTXPROC; END; 5- لندخل الآن بالمستخدم james/james123 وننفذ مايلي : col attribute format a10 col value format a10 col attribute format a10 SELECT * FROM SESSION_CONTEXT; ستظهر لنا معلومات عن الـــ CONTEXT المطبق على هذا ال SESSION . 6- نقوم بإنشاء سياسات الأمن التي نريد تطبيقها على جدول الموظفين وال FUNCTION التي تقوم بذلك بالدخول على المستخدم SCOTT ومنح الصلاحية عليها الى جميع المستخدمين وتنفيذ مايلي : CREATE OR REPLACE PACKAGE PREDICATE_PCK AS FUNCTION EMP_SELECT (OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2; END PREDICATE_PCK; / CREATE OR REPLACE PACKAGE BODY PREDICATE_PCK IS FUNCTION EMP_SELECT (OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2 IS PREDICATE VARCHAR2 (2000); BEGIN IF (SYS_CONTEXT ('SCOTTCTX', 'EMP_ID') = 0) THEN PREDICATE := '1=2'; ELSE PREDICATE := 'EMPNO=SYS_CONTEXT(''SCOTTCTX'',''EMP_ID'')'; END IF; IF (SYS_CONTEXT ('SCOTTCTX', 'OWNER') = 'TRUE') THEN PREDICATE := NULL; END IF; RETURN PREDICATE; END EMP_SELECT; END PREDICATE_PCK; / grant execute on SCOTT.PREDICATE_PCK to public; / لاحظ مما سبق أن هناك ثلاثة قواعد قمنا بتحديدها -- عندما يكون ال EMP_ID=0 فهذا معناه أن المستخدم لايمكنه مشاهدة أي بيانات . -- عندما يوجد رقم للمستخدم في جدول EMPIDCONTROLTAB فهذا معناه أنه يمكن للمستخدم مشاهدة البيانات التي تخصه فقط . -- إذا كان المستخدم هو الذي قام بإنشاء الجدول وهو SCOTT في هذا المثال يمكنه مشاهدة مايريد من المعلومات . بمجرد الإنتهاء من ماسبق نقوم بإضافة ال POLICY إلى الجدول عن طريق DBMS_RLS.ADD_POLICY PROCEDURE وذلك عن طريق الدخول على المستخدم SYS وتنفيذ مايلي : BEGIN DBMS_RLS.ADD_POLICY (OBJECT_SCHEMA => 'SCOTT', OBJECT_NAME => 'EMP', POLICY_NAME => 'EMP_SELECT_POLICY', FUNCTION_SCHEMA => 'SCOTT', POLICY_FUNCTION => 'PREDICATE_PCK.EMP_SELECT', STATEMENT_TYPES => 'SELECT', ENABLE => TRUE ); END; أيضا إذا أردنا إضافة شروط على ال INSERT , UPDATE, DELETE يمكننا ذلك عن طريق تنفيذ مايلي : BEGIN DBMS_RLS.ADD_POLICY (OBJECT_SCHEMA => 'SCOTT', OBJECT_NAME => 'EMP', POLICY_NAME => 'EMP_UPDATE_POLICY', FUNCTION_SCHEMA => 'SCOTT', POLICY_FUNCTION => 'PREDICATE_PCK.EMP_UPDATE', STATEMENT_TYPES => 'UPDATE,INSERT', UPDATE_CHECK => 'TRUE', ENABLE => TRUE ); END; -الآن جاء وقت الـتأكد من نتائج الخطوات السابقة وهل تم إعداد VPD بشكل ممتاز ندخل على المستخدم SCOTT ونمنح صلاحية SELECT على جدول الموظفين للمستخدم HR : GRANT SELECT ON EMP TO HR; ندخل على المستخدم HR وننفذ SELECT * FROM SCOTT.EMP; لن تعرض أي بيانات بالطبع لإن المستخدم HR غير موجود في جدول EMPIDCONTROLTAB لنحاول الدخول على المستخدم james/james123 وننفذ SELECT * FROM SCOTT.EMP; ستكون النتيجة سجل واحد يخص المستخدم james : EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7900 JAMES CLERK 7698 03-DEC-81 950 30 لنحاول الدخول على المستخدم blake والمستخدم scott ونرى ماهي النتيجة ولماذا ؟ خلاصة الموضوع أن تقنية الــــ Virtual Private Database أو row-level security تمكننا من إعداد سياسات الأمن على مستوى السجل وهي أسهل من تنفيذ هذه السياسات عن طريق التطبيقات والبرامج .... والله الموضوع طويل وسامحونا على أي تقصير تحياتي ولاتنسونا من دعوه صالحة .... منقول من موقع http://www.samoratech.com
  3. 1 point
    يسر الله امركم ووفقكم الى ما يحبه ويرضاه موضوع ال vagrant ده معقد شوية ، هل هناك ملف يشرح الخطوات للوصول الى الهدف الذي وجهتني اليه اخي الكريم؟ معذرة انا اثقلت عليك
  4. 1 point
    وعليكم السلام ورحمة الله للابتعاد عن مشاكل التنصيب وعثراته التي تضيع وقت وجهد المطور او المهيكل للنظام في حل مشاكل لا تخصه وتعوقه عن الانطلاق والابداع لذلك في رأيي المتواضع، أنه من الافضل بلاشك الابتعاد عن التنزيل المباشر على Host OS والافضلية لصالح الاتجاه الى الVirtualization و Containerization والافضل منهما Cloud وأحيلك سلمك الله على عدة اتجاهات او خيارات للعمل والانطلاق. وفقك الله للانسب فيهما (1) استخدام Vagrant لانشاء VM فهو امر جيد كعملية installation automation احترافية https://blogs.oracle.com/scoter/automated-oracle-apex-191-installation-with-vagrant-and-virtualbox (2) استخدام Docker Container لتنزيل Solution Stack الخاصة بOracle APEX Dani3lSun/docker-db-apex-dev GITHUB.COM Oracle Database & APEX Developer Docker Image. Contribute to... (3) الاستفادة من Oracle APEX Service الموجودة على Oracle Cloud Infrastructure هذا ما ارجحه لك ان اردت رأيي ودمتم بخير وعافية محمود ربيع أسعد بمتابعتكم: حسابي على LinkedIn حسابي على Twitter حسابي على Instagram
  5. 1 point
    الف شكر اخي محمد رمضان فعلا تم تطبيق نفس الطريقة التي تفضلتم بها من خلال عمل تسلسل لكل فئة مثل نوع العقارات تبدء بالرقم 1 وأنواع العقارات تم حجز لها خانتين بحيث تبدء 10 وتنتهي بـ 19 ، ونوع الشقق تبدء بالرقم 20 وتنتهي بــ 29 هكذا لباقي الفئات والانواع . CATEGORY NAME NO TYPE_ID TYPE_NAME CUSTUMERS 1 10 OWNER 11 CONTRACTORS 12 SUPPLIER 13 14 15 16 17 18 19 UNITS 2 20 21 22 23 24 25 26 27 28 29
  6. 1 point
    السلام عليكم ورحمة الله وبركاته كانت عاوز اطرح مناقشة تخص موضوع مهم جديد فى مصر وهو الفاتورة الالكترونية فى مصر واعتقد ان كل البرامج لازم تكون متصله بشكل معين بمعني لازم تكون عن طريق api بالغة json و xml طبعا الشركات الكبيره ابتدت فيها وعن قريب باقي الشركات انا بس حبيت اطرح علي كل مستخدم adf jdeveloper حلقة نقاش علي الموضع ده انشاء الله انا هبتدي فيها ولو حد جرب وابتد يشتغل فيها ياريت يساعدنا علشان يعود النفع علي الجميع
  7. 1 point
    السلام عليكم انا بحب اشكر م.ربيع و م. محمود ربيع و م.محمد رمضان الحمد الله تم حل المشكلة وكانت المشكلة فى كود login شكرا جدا ليكم وجزاك الله خير
  8. 1 point
    بارك الله فيك يا بشمهندس وايضا تأتي اهمية اتباع النسخة المحدثة من الinstallation guide
  9. 1 point
    هذه الملفات غير موجوده فلا اصدار 20.2 لانها اتلغت ولابد من استخدام ORDS
  10. 1 point
    من داخل مجلد APEX الذي قمت بعمل التسطيب من خلاله يمكنك تشغيل الملف التالي: @apxchpwd.sql
  11. 1 point
    اذا نظرنا الى الصورة المرفقة سنجد ان عندنا Active Connections - Current Count Active Connections - High Count لعل هذا الرابط Answered question يفيدك عملية Increasing Weblogic Active Connections Increasing STACKOVERFLOW.COM I deployed my project to weblogic, and I realized I had connections not closed because weblogic server went to overload. I fixed them. But still I... لكنك سلمك الله تحتاج الى JDBC Data Source: Monitoring ايضا لهاتين القيمتين Active Connections Current Count و Active Connections High Count المرجع JDBC Data Source: Monitoring: Statistics DOCS.ORACLE.COM Oracle WebLogic Server 12.1.3.0 Documentation
  12. 1 point
    انا كان عندى نفس المشكلة واتضح ان السبب فى الكود المستخدم فى Login Button Bean, لانه حتى بعد خروج المستخدم النظام ال session تظل مفتوحة على JDBC ياريت تعرض الكود المستخدم فى Login Button Bean
  13. 1 point
    وعليكم السلام ورحمة الله لعل الجزء المظلل بالأحمر هو المسؤول المباشر عن المشكلة وليس امور اعمق خلفه لذلك لعل الرابط التالي تفيدك https://www.databasedevelop.com/article/12180271/No+Resources+Currently+available+in+pool+%2Cplease+increase+the+size+of+the وفقك الله
  14. 1 point
    الوظيفة Convert تقوم بذلك ما هو characterset الذي تريد التحويل له من ضمن هذه الانواع المدعومة US7ASCII: US 7-bit ASCII character set WE8ISO8859P1: ISO 8859-1 West European 8-bit character set EE8MSWIN1250: Microsoft Windows East European Code Page 1250 WE8MSWIN1252: Microsoft Windows West European Code Page 1252 WE8EBCDIC1047: IBM West European EBCDIC Code Page 1047 JA16SJISTILDE: Japanese Shift-JIS Character Set, compatible with MS Code Page 932 ZHT16MSWIN950: Microsoft Windows Traditional Chinese Code Page 950 UTF8: Unicode 3.0 Universal character set CESU-8 encoding form AL32UTF8: Unicode 5.0 Universal character set UTF-8 encoding form
  15. 1 point
    فعلا هذا هو المطلوب الان ان شاء الله
  16. 1 point
    هل يعمل CONNECTION على الداتابيز
  17. 1 point
    اى منتج ليه software and hardware requirements. Minimum Hardware Requirements
  18. 1 point
    ان شاء الله سوف اقوم بشرح دروس فى weblogic server 10.3 وارجو منكم الدعوات الصالحات
  19. 1 point
    وعليكم السلام ورحمة الله وبركاته حل آخر قد يكون أسهل في القراءة باستخدام WITH With YEAR_DAYS AS ( select to_char( to_date('2019-01-01','YYYY-MM-DD') + rownum -1 , 'YYYY-MM-DD') as DATESTR, TO_CHAR( to_date('2019-01-01','YYYY-MM-DD') + rownum -1, 'DAY') as DAYSTR from all_objects where rownum <= to_date('2019-12-31','YYYY-MM-DD')-to_date('2019-01-01','YYYY-MM-DD')+1 ) select DATESTR,DAYSTR from YEAR_DAYS where TRIM(DAYSTR) in ('TUESDAY','SATURDAY') ودمت بخير وعافية
  20. 1 point
    select replace(day_name,' ',''),day_date from (SELECT TO_CHAR(TRUNC(SYSDATE,'year')+Level-1,'DAY') day_name,trunc(SYSDATE,'year') +Level-1 day_date FROM DUAL connect by Level<=(ADD_MONTHS(TRUNC (SYSDATE ,'YEAR'),12)-trunc(SYSDATE,'year'))) where replace(day_name,' ','') in ('SATURDAY','TUESDAY') order by 2;
  21. 1 point
    لعلك ذكرت هذا من البداية ! عموما لا مشكلة .. الحل الثاني: (١) قم بتعريف FTP Server على Server الشركة الداخلي الآمن وبالنسبة لنظام التشغيل (Oracle Linux هو اختياري المفضل) (٢) من خلال APEX قم بمناداة PL/SQL يتعامل مع الFTP Server https://oracle-base.com/articles/misc/ftp-from-plsql دمت بخير وعافية
  22. 1 point
    السلام عليكم ورحمة الله كحل مقترح، يمكنك تحميل الملفات على Google Drive يمكنك ذلك من الAPEX عن طريق استخدام ال Google Drive REST API و من خلال OAuth2 https://developers.google.com/drive/api/v3/about-sdk ثم من خلال الAPEX، قم بانشاء ال RESTful Modules و فيها ال Handlers المختلفة (PUT handler على سبيل المثال) المطلوبة في ال Guide أعلاه وخلال عملية الDevelopment يمكنك الاستفادة من ال Google OAuth2 Playground https://developers.google.com/oauthplayground/ ودمتم بخير وعافية
  23. 1 point
    المقارنة بين اللغات البرمجية مقارنة لا رابح فيها لان اللغات البرمجية لم تصنع الا من أجل جني المال و أرباح الشركات المختلفة فعلي سبيل المثال لماذا الطائرة أفضل ! لانها أسرع إذن فلم لا نستخدمها و نترك السيارات ..ممم لانها لا تصل الي باب المنزل .إذن السيارة أفضل . هكذا تصير المقارنة .فالسؤال هنا يجب ان يكون عن الهدف و ليس عن الوسيلة . الـ ADF ليست لغة برمجية هي بيئة عمل متكاملة ( اذا كنت تستطيع ان تدفع من أجيل رخص السيرفرات و الويب لوجيك و خلافه دون خسارة .. فهي اختيار مناسب و ليست أفضل اختيار) و لكن اذا لم تكن تستطيع فما العمل ! نعم .نبحث عن بضاعه أخري و لتكن ميكروسوفت و هكذا حتي تصل الي apex و هنا ما يعرف بحاجة السوق و العرض و الطلب و امكانيات العميل و امكانيات المبرمجين . فيجب الحرص علي أختيار تقنية مناسبة للبيئة المستهدفة بشكل كافي لضمان نجاح المشروع عند العميل حتي لو كان فيجوال بيزك و اكسس داتابيز . المهم العميل
  24. 1 point
    Hi, You can use another solution that doesn't use analytical functions DELETE FROM table1 WHERE ROWID IN ( SELECT ROWID FROM table1 t WHERE EXISTS ( SELECT 1 FROM table1 WHERE test1 = t.test1 AND test2 = t.test2 AND test3 = t.test3 AND ROWID > t.ROWID));
  25. 1 point
    BlueFairy شي رائع ,,, و أتمنى لكٍ التوفيق في مشروع و بالتأكيد الأخوة هنا ,,,, في عون كل أحد ,,, أنا دخلت هنا لأني عملت مشروع سابق لأدارة مستشفى (مصغر) و أحببت الأستفاده مما توصلتي إليه ,,, و أشاركك الرأي في بعض النقاط ,, . . أما بخصوص التثبيت ,,,, "أحفظي الصفحة في المفضلة حتي تصل إلينا بسرعة . و الله يرحم أحوكِ و يغفر له ,, . . تحيتي
  26. 1 point
    احواني الاعزاء بحمد الله وباللايام المقبلة سوف اقدم بين يديكم نظام مكتبة كامل ... مشروع تخرج لكلبتي وارجو منكم الدعاء لوالدي بالرحمة والمغفرة
  27. 1 point
    السلام عليكم جميعا........... My friends there are two solutions to solve this problem... Solution(1): ----------------- you can work on the trigger KEY-ENTQUERY on the form (module) level or yo can use the trigger PRE-QUERY on the block level..where the block is the block is which you will query from. In these triggers you can use the DEFAULT_WHERE while you have to use coding. Solution(2): ----------------- You can use exeute query in the trigger (WHEN-BUTTON-PRESSED) Go_block('BLOCK_NAME'); EXECUTE_QUERY; in this case you have to go to the block property and type the where condition in the property in there and also you can use the name of the text itm in the canvas for the date you enter..... Regards... to you all....... These are simple concepts............for the search property of ORACLE....
×
×
  • اضف...

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

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