ایک نظارہ بنائیں ، ORA-01720 غلطی کی اطلاع دیں

Create View Report Ora 01720 Error Problem



جب منظر تیار ہوتا ہے ، درج ذیل دشواریوں کا سامنا ہوتا ہے۔



اور اس نقطہ نظر میں آبجیکٹ کی اجازت کو چیک کریں۔





یہ ایک ایسا فنکشن ہے جو دیکھنے والے کو صارف کو تخلیق کرنے کی عملی اجازت دیتا ہے۔

سرکاری وضاحت:



# 01720، 00000، 'گرانٹ آپشن'٪ s.٪ s 'کے لئے موجود نہیں ہے

// * وجہ: ایک گرانٹ کسی نظارے پر کی جارہی تھی یا آیویو کو تبدیل کیا جارہا تھا

// اور گرانٹ کا آپشن کسی بنیادی شے کے لئے موجود نہیں تھا۔

// * ایکشن: نقطہ نظر کی تمام بنیادی اشیاء پر گرانٹ کا اختیار حاصل کریں یا

// اس نظریہ پر موجود گرانٹس کو کالعدم کریں۔

ایم او ایس دستاویز کے بارے میں HEN کی وضاحت بہت واضح ہے

11.2.0.4 میں اپ گریڈ کرنے کے بعد ، 'او آر اے-01720:' گرانٹ آپشن موجود نہیں ہے 'کے ساتھ' تخلیق یا نظارہ کی جگہ لے لے 'ناکام ہوجاتا ہے (دستاویز ID 1628033.1)

درخواستیں:

اوریکل ڈیٹا بیس - انٹرپرائز ایڈیشن - ورژن 11.2.0.4 سے 11.2.0.4 [ریلیز 11.2]
اس دستاویز میں موجود معلومات کسی بھی پلیٹ فارم پر لاگو ہوتی ہیں۔

علامات

11.2.0.3 سے 11.2.0.4 میں اپ گریڈ کرنے کے بعد ، 'قول بنائیں یا تبدیل کریں' کے بیان کو چلاتے وقت آپ کو درج ذیل خامی کا سامنا کرنا پڑتا ہے:

ORA-01720: گرانٹ کا آپشن موجود نہیں ہے

اپ گریڈ سے پہلے ویوز تخلیق کی گئیں اور 'کریٹ یا ریپلیس ویو' ٹھیک کام کرچکے تھے۔

مثال کے طور پر درج ذیل ٹیسکیس ورژن 11.2.0.3 پر بغیر کسی غلطی کے چلے گا ، جبکہ آخری بیان 'ویو ٹیسٹیو کو u2.test سے منتخب کریں' کی طرح بنائیں یا تبدیل کریں 11.2.0.4 پر ناکام ہوجائے گا۔

مربوط / as sysdba
- صارف u1 جھرنکا چھوڑیں
- صارف u2 جھرنکا چھوڑیں
u1 کے ذریعہ شناخت شدہ یوزر 1 بنائیں
u2 کے ذریعہ شناخت شدہ صارف u2 بنائیں
u1 کو وسائل عطا کریں
u2 کو وسائل عطا کریں
u1 پر سیشن تخلیق کریں
u2 پر سیشن تخلیق کریں
u1 کو دیکھنے کا نظارہ دیں
u2 / u2 سے جڑیں
ٹیبل u2.test بنائیں (ایک نمبر)
گرانٹ کے اختیارات کے ساتھ u1 پر گرانٹ کا انتخاب کریں
u1 / u1 سے جڑیں
u2.test سے * منتخب کریں کے بطور نظارہ ٹیسٹیو تخلیق کریں
سسٹم پر testv پر منتخب کریں گرانٹ
u2 / u2 سے جڑیں
منسوخ کریں u1 سے ٹیسٹ پر انتخاب کریں
u1 ٹیسٹ پر گرانٹ منتخب کریں
u1 / u1 سے جڑیں
u2.test سے * منتخب کریں کے طور پر ویو ٹیسٹیو کو تخلیق یا تبدیل کریں

ورژن 11.2.0.4 (اور اس سے زیادہ) کا نتیجہ ہوگا:

u2.test سے * منتخب کریں کے طور پر ویو ٹیسٹیو کو تخلیق یا تبدیل کریں
*
خط 1 میں غلطی:
ORA-01720: U2.TEST کے لئے گرانٹ کا آپشن موجود نہیں ہے

'

تبدیلیاں

پچھلے ورژن سے 11.2.0.4 میں اپ گریڈ کریں۔

وجہ

مشاہدہ کیا گیا سلوک درست ہے۔ جب آپ کسی دوسرے صارف کی ٹیبلز سے انتخاب کرتے ہیں اور مندرجہ ذیل دونوں شرائط درست ہیں تو یہ نظریہ منسوخ کرتے وقت آپ کو یہ ORA-1720 غلطی ہوگی۔

- آپ نے پہلے ہی کسی دوسرے صارف کو VIEW پر منتخب یا دیگر مراعات دی ہیں
- نظارے کے مالک کے پاس ٹیبلز پر منتخب کردہ ٹیبل پر گرانٹ کا اختیار نہیں ہے (یا دیکھیں مالک کو گرانٹ کے اختیارات میں کچھ استحقاق مل سکتا ہے لیکن دوسروں کو نہیں)

ترقی نے اس کی وضاحت کی ہے۔

کوڈ کو 11.2.0.4 میں تبدیل کیا گیا تھا تاکہ دیکھنے کا طرز عمل گرانٹ جیسا ہی ہو۔ اگر آپ کسی موجودہ نظریہ پر کوئی گرانٹ بنانے کی کوشش کرتے ہیں اور دیکھنے والے کے پاس گرانٹ کا آپشن نہیں ہوتا ہے ، تو پھر ORA-1720 متوقع نتیجہ ہے (حتی کہ 11.2.0.3 میں بھی)۔ 11.2.0.4 میں ، ہم نے آسانی سے گرینٹ رویے کے مطابق کریئٹ ویو کو بنایا ہے ، یعنی اگر کوئی متضاد گرانٹ موجود ہے تو ، نئی قول تعریف کی اجازت نہیں دی جانی چاہئے (یہاں تک کہ طاقت کے ساتھ بھی)۔ دوسرے لفظوں میں ، ہم مطابقت پذیر گرانٹ کو نقطہ نظر کی تعریف کے ساتھ ساتھ رہنے کی اجازت نہیں دیتے ہیں لہذا کسی غلطی کو پھینکنا ضروری ہے۔ 11.2.0.3 (اور اس سے پہلے) کی رہائی میں سلوک 11.2.0.4 میں نیا طرز عمل غلط تھا اور یہ دانستہ اور صحیح ہے۔

حل

اس مسئلے سے بچنے کے ل you ، آپ درج ذیل میں سے کوئی بھی کام کرسکتے ہیں:

1. نظریہ کو دوبارہ تبدیل کرنے سے پہلے منظر پر موجود تمام گرانٹس کو ہٹا دیں۔ یہ یقینی بنائے گا کہ کوئی متضاد گرانٹس موجود نہیں ہے۔
2. ڈراپ اور منظر کو دوبارہ بنائیں۔ منظر گرنے سے خود بخود تمام گرانٹس ختم ہوجائیں گے۔

اس حالت کے ساتھ آراء کا پتہ لگانے کے لئے آپ مندرجہ ذیل بیان کا استعمال کرسکتے ہیں ، تاہم آگاہ رہیں کہ یہ صرف پہلے درجے کے انحصار کا پتہ لگاتا ہے:

منفرد d.owner ، d.name 'دیکھیں' سے منتخب کریں
dba_d dependency d، dba_tab_privs pv، dba_tab_privs pd
کہاں
- دیکھنے کے مالک کی اسکیما سے باہر انحصار ہے
d.TYPE = 'دیکھیں' اور d.REFERENCED_OWNER d.owner
- اس نظارے پر گرانٹس جاری کیے جاتے ہیں
اور pv.TABLE_NAME = d.name
اور d.owner = pv.owner
اور pv.privilege in ('منتخب کریں' ، 'INSERT' ، 'اپ ڈیٹ')
- منحصر اشیاء کو ایڈمن آپشن کے ساتھ نہیں دیا گیا ہے
اور pd.TABLE_NAME = d.REFERENCED_NAME
اور pd.GRANTABLE = 'NO'
- کرداروں کے لئے گرانٹس کو خارج کریں
اور pv.grantee 'پبلک'
اور پی ڈی.grantee 'عوامی'
اور pv.grantee نہیں (dba_roles سے کردار منتخب کریں)
اور پی ڈی.grantee نہیں (dba_roles سے کردار منتخب کریں)
- عوامی ملکیت والی اشیاء کو خارج کردیں
اور d.REFERENCED_OWNER 'پبلک'

جب اس دستاویز کے اوپری حصے میں ٹیس کیس کے ساتھ استعمال کیا جاتا ہے تو ، اس سے نمٹنے والے نظارے کو پورا کیا جاسکتا ہے:

ایس کیو ایل> @ ویو_چیک

خود کا نظارہ
------------------------------ -------------------- ----------

U1 TESTV

مجھے مسئلہ یہ ہے کہ یہ نظریہ دوسرے صارفین کو دیا گیا ہے ، لہذا نظارہ تخلیق کرتے وقت گرانٹ کے اختیارات کے ساتھ درخواست کی ضرورت ہے