خطای ORA-01950: no privileges on tablespace در زمان اجرای Export Datapump


تاریخ انتشار: 1398/اردیبهشت/22
نویسنده:
گروه دانش : Oracle Datebase
تعداد بازدید: 22 مرتبه
اشتراک گذاری:

خطای ORA-01950: no privileges on tablespace در زمان اجرای Export Datapump

 

به هنگام اجرای دستور expdp خطای زیر در log مشاهده شد:

ORA-31642: the following SQL statement failes:

Begin “SYS”.”DBMS_RULE_EXP_RULES” SCHEMA_CALLOUT …

ORA-01950: no privileges on tablespace ‘SYSAUX’

 

این خطا در حالی رخ می داد که عملیات expdp با استفاده از کاربر sys اجرا می شد و این خطا غیر عادی به نظر می رسید. این خطا تنها زمانی رخ می داد که full export تهیه می شد. به نظر می رسید که این خطا مربوط به بخشی از دیتابیس (یک یا چند اسکیما) است، اما پیدا کردن قسمتی که موجب بروز مشکل شده با توجه به میزان log قابل تشخیص نبود، پس لازم بود تا مشخص شود دقیقاً چه دستوری موجب بروز این خطا می شود. برای این کار ابتدا دستور زیر اجرا شد:

$ sqlplus / as sysdba

SQL> alter system set events '1950 trace name ERRORSTACK level 3';

سپس دستور expdp مجدد اجرا شد. پس از آنکه در log خطای مذکور مشاهده شد، job مربوط به expdp را متوقف کردم و با دستور زیر هم trace را غیر فعال کردم:

SQL> alter system set events '1950 trace name ERRORSTACK off';

در مسیر فایل های trace فایل مربوطه را شناسایی شد و سپس در این فایل دنبال خطای ora-01950 گشتم. پس از این خطا، دستور SQL که موجب بروز خطا شده است مشخص است:

insert into dmuser.my_table …

 

پس متوجه شدم که کاربر dmuser دسترسی لازم را روی sysaux tablespace ندارد که با اعطا دسترسی مشکل برطرف شد.