الانتقال إلى المحتوى
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.

إليكم تريجر لمنع الدخول علي قاعدة البيانات من برنامج معين

Featured Replies

بتاريخ:

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

إخواني الكرام

إليكم تريجر يمنع الدخول علي قاعدة البيانات من بنامج معين مثلا الSQL PLUS
او الTOADأو غيره

و يمكن التعديل فيه لاستثناء مستخدمين معينين او لتغيير البرنامج او لاضافة برامج اخري

اليكم الكود

create or replace trigger restrict_login
	after logon	   on database
--	  after logoff	  on database
--	  after servererror on database
--	  after startup	 on database
--	  after shutdown	on database
--	  after create	  on database
--	  after drop		on database
--	  after alter	   on database
declare
	flag number := 0;
begin
	select 1 into flag from sys.v_$session where lower(program)  like  '%sqlplus%' and  rownum=1;
	if flag = 1 then
			raise_application_error(-20000, 'No access from sqlplus');
	end if;
end;
/
show errors


و كما نري ايضا هناك امثلة للتريجرز علي مستوي قاعدة البيانات غير تريجر AFTER LOGON
و الاسكربت في الملف المرفق


ملحوظة :
التريجر تم تجربته علي اصدار 9i
و لم يعمل علي اصدار 10 g

مع تمنياتي بالتوفيق

PREVENT_LOGON.TXT

بتاريخ:

يمكن تجاوز هذا التريجر بكل سهوله
عن طريق تغيير اسم الملف sqlplus إلى اي اسم آخر

بتاريخ:

الاخ العزيز : ما معنى if flag = 1

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

السلام عليكم و رحمة الله و بركاته
الأخت AZA
مشكورة لملاحظتك

يمكن تطوير التريجر ليتم استخدامه لفرض الدخول الي البرنامج عن طريق الفورم فقط

و سيكون عملي عند العمل علي فورمز بدءا من 9i حيث تكون بيئة العمل عن طريق APPLICATION SERVER

و كل المستخدمين يقوموا بالدخول عن طريقه

و إسم البرنامج الذي يقوم بعمل رن للفورم هو

IFWEB90.EXE



و يمكن التطوير لمنع الدخول من اي برنامج اخر الا هذا البرنامج و الذي لن يكون متاح تغيير اسمه للمستخدمين بل لمديري النظام فقط

و يمكن أيضا استثناء مستخدمين معينين هم مطوري النظام بحيث يمكنهم استعمال البرامج الأخري مع حصر البرامج التي تقوم بعمل اتصال علي قاعدة البيانات الضرورية لعمليات اخري مثل ويب سايت او غيره
ووضعها في الاكسبشنز

لم يتم تجربة ذلك بعد و سأقوم بتجربة و ارسل التطوير للتريجر لاحقا

الأخ omar-alreyati

معنى if flag = 1
انه في السيليكت نقوم باختيار القيمة 1 من جدول

sys.v_$session 


و هو الجدول الذي يحتوي علي جلسات الاتصال الخاصة بمستخدمي قاعدة البيانات و بياناتها بناء علي اسم البرنامج وهو هنا الSQL PLUS
فان كان الاتصال من هذا البرنامج سيكون الFLAG=1 لانه يوجد بيانات
اما ان كان البرنامج ليس الSQL PLUS
فقيمة الFLAG لن تكون واحد بل ستكون null و لن يتم استكمال الاإجراءات تحت الشرط

بالتوفيق

بتاريخ:

شكرا لردك
لكن ايضا ملاحظتك يمكن تجاوزها بكل سهوله

لو فرضنا انك تسمح لدخول IFWEB90.EXE فقط فبكل سهوله يمكن
تغيير sqlplus أو toad .... الى IFWEB90.EXE

على فكره انا ايضا ابحث عن حل هذه المشكله منذ فتره طويله ولم أجد الحل ..

وبانتظار ردك
شكرا

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

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

الأخت الكريمة AZA

يمكن إضافة شرط أخر في التريجر بحيث يمنع الدخول من اي برنامج اخر غير IFWEB90.EXE
كما أشرت سابقا
و هو إضافة الTERMINAL
و التي تحمل دائما إسم جهاز الAPPLICATION SERVER
في حالة العمل علي الويب

و في هذه الحالة لن ينفع تغغير إسم البرامج الأخري مثل الTOAD او الSQL PLUS
الي IFWEB90

لاأنه حتي و ان تم تغيير إسم البرنامج مثل الtoad الي ifweb90
فعند الاتصال من اي جهاز اخر غيرالapplication server
سيحمل عمود الterminal
إسم الجهاز الذي تم الاتصال منه و ليس إسم ال application server
و في هذه الحالة لن يمكنه اتمام الاتصال
و قد قمت بتجربة ذلك بنفسي
كما ترين في الصورة المرفقة
فالجزء المظلل
هو عبارة عن اتصال من الtoad بعد تغيير اسمه الي ifweb90
ولكن نري ان اسم الجهاز المتصل منه يختلف عن اسم جهاز الapplication server
و الواضح في باقي الاتصالات
و بهذه الطريقة اذا عدلنا الشرط الي باضافة إسم الجاهز المتصل منه اليه
لن يكون بامكانه الاتصال

أتمني ان يكون هذا حلا وافيا لكي
مع تمننياتي بالتوفيق

post-132-1174293468.jpg

  • بعد 2 أسابيع...
بتاريخ:

i create the trigger in sys schme
but when i logon from any client ,the sqlplus program is connected

بتاريخ:

I create the trigger on database9i,
the trigger is run
but when I create the trigger on the database10g
and insert the followning code in last triger
to sure is the trigger is run or no

EXCEPTION WHEN OTHERS THEN
n1:= substr(SQLERRM, 1, 200);
insert into trg_error values (n1);

but I logon to database10g by sqlplusw.exe program
the result is:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options

note:
after logon to database10g ,i make query from [trg_error] table
the result
SQL> select * from pp1;
--------------------------------------------------------------------------------
ORA-20000: No access from sqlplus

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

السلام عليكم

أخي الكريم لقد جربت التريجر علي 10g ووجدت انه لا يعمل معها لاني كنت قد جربته من قبل في ال9i و اشتغل بنجاح

يبدو انه لا يعمل مع مع اصدار ال10g

بالتوفيق

بتاريخ:

التريجر يعمل على 10g

فقط قم بهذا التعديل

SELECT 1 into flag
FROM sys.V_$SESSION
WHERE lower(program) like '%sqlplus%'
and audsid = USERENV('SESSIONID');

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

مشكورة أختي الكريمة و جاري التجربة

بتاريخ:

نفس المشكلة في
oracle10g
التريجر لم يعمل

بتاريخ:

جزاكم الله خير
بالنسبة للتريجر فقد نفذ
بعض المستخدمين في القاعدة كانت لهم
صلاحية الdba
لذلك كان التريجر لا ينفذ

بتاريخ:

الأخ هاني سند التريجر يعمل على الأصدارين

اثناء التجربة في الأصدار 10g لم يتنفذ ثم قمت بالأتصال بالمستخدم sys ونفذت التريجر واشتغل معي 100%

الرجاء التجربة من جديد

ومشكور

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

أخ sky information

التريجر لم يعمل علي ال10g بصرف النظر عن عن المستخدم فقد جربته في الكل
و لكن لم اجرب بعد بعد إضافة الأخت aza

و لكن اعتقد انه سيعمل كما اوضح الأخ samoracle

و هناك نسخة اخري من التريجر عندي سأضعها هنا ان شاء الله
بالتوفيق

  • بعد 10 شهور...
بتاريخ:

كيف يمكن استخدام التريجر لمنع الدخول الى قاعدة البيانات من خلال builder 6i

بتاريخ:

كيف يمكن استخدام التريجر لمنع الدخول الى قاعدة البيانات من خلال dev 6i

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

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

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

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

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

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.