أورا-01031:امتيازات غير كافية عند تحديد طريقة العرض

StackOverflow https://stackoverflow.com/questions/140643

  •  02-07-2019
  •  | 
  •  

سؤال

عندما أحاول تنفيذ عرض يتضمن جداول من مخططات مختلفة، يتم طرح امتيازات ORA-001031 غير كافية.تتمتع هذه الجداول بإذن التنفيذ للمخطط الذي تم إنشاء طريقة العرض فيه.إذا قمت بتنفيذ بيان SQL الخاص بالعرض فإنه يعمل.ماذا ينقصني؟

هل كانت مفيدة؟

المحلول

باعتبارك مالك الجدول، يتعين عليك منح حق الوصول SELECT إلى الجداول الأساسية للمستخدم الذي تقوم بتشغيل عبارة SELECT باسمه.

grant SELECT on TABLE_NAME to READ_USERNAME;

نصائح أخرى

وأخيرا حصلت عليه للعمل.إجابة ستيف صحيحة ولكن ليس لجميع الحالات.يفشل عندما يتم تنفيذ هذا العرض من مخطط ثالث.لكي يعمل ذلك عليك إضافة خيار المنحة:

GRANT SELECT ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;

من ذلك الطريق، [READ_USERNAME] يمكن أيضًا منح امتياز التحديد على العرض لمخطط آخر

س.متى يكون "خيار المنحة" مطلوبًا؟

أ.عندما يكون لديك عرض تم تنفيذه من مخطط ثالث.

مثال:يحتوي مخطط DSDSW على طريقة عرض تسمى view_name

a) that view selects from a table in another schema  (FDR.balance)
b) a third shema  X_WORK  tries to select  from that view

المنح النموذجية:منح التحديد على dsdw.view_name إلى dsdw_select_role؛منح dsdw_select_role إلى fdr؛

لكن:يحصل FDR على تحديد العد (*) من dsdw.view_name ؛خطأ في السطر 1:أورا-01031:إمتيازات غير كافية

إصدار المنحة:

grant select on fdr.balance to dsdw with grant option;

الآن فرانكلين روزفلت:حدد العد (*) من dsdw.view_name؛5 صفوف

اسمحوا لي أن ألخص.

عندما تقوم بإنشاء عرض يحتوي على كائن لمالكين مختلفين، يجب على هؤلاء المالكين الآخرين منح "خيار المنح" لمالك العرض.لذلك، يمكن لمالك العرض منحه لمستخدمين أو مخططات أخرى....

مثال:user_a هو مالك جدول يسمى mine_a user_b هو مالك جدول يسمى yours_b

لنفترض أن user_b يريد إنشاء عرض بربط mine_a وyours_b

لكي يعمل العرض بشكل جيد، يجب على user_a إعطاء "منح التحديد على mine_a إلى user_b مع خيار المنح"

ثم يستطيع user_b منح التحديد في هذا العرض للجميع.

إذا تم الوصول إلى العرض عبر إجراء مخزن، فإن منح التنفيذ غير كافٍ للوصول إلى العرض.يجب عليك منح التحديد بشكل صريح.

إذا تم الوصول إلى العرض عبر إجراء مخزن، فإن منح التنفيذ غير كافٍ للوصول إلى العرض.يجب عليك منح التحديد بشكل صريح.

ببساطة اكتب هذا

منح كل شيء للجمهور.

لاستخدام طريقة عرض، يجب أن يتمتع المستخدم بالامتيازات المناسبة ولكن فقط للعرض نفسه، وليس للكائنات الأساسية الخاصة به.ومع ذلك، إذا تمت إزالة امتيازات الوصول للكائنات الأساسية لطريقة العرض، فلن يعد لدى المستخدم حق الوصول.يحدث هذا السلوك لأن مجال الأمان الذي يتم استخدامه عندما يستعلم مستخدم عن طريقة العرض هو معرف طريقة العرض.إذا تم إبطال الامتيازات الخاصة بالكائنات الأساسية من مُعرف العرض، فسيصبح العرض غير صالح، ولن يتمكن أي شخص من استخدام العرض.لذلك، حتى إذا تم منح المستخدم حق الوصول إلى طريقة العرض، فقد لا يتمكن المستخدم من استخدام طريقة العرض إذا تم إبطال حقوق المُعرف من الكائنات الأساسية لطريقة العرض.

وثائق أوراكلhttp://docs.Oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#DBSEG98017

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top