تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست
آخرین نظرات
  • ۱۶ مرداد ۹۸، ۰۱:۰۰ - علی جهان نما
    عالی بود

گاهی اوقات نیاز است که کاربر نتواند اقدام به ALTER نمودن جداول نماید . در مثال زیر تمامی دسترسیهای کاربر به جز دستور TRUNCATE گرفته میشود.

CREATE OR REPLACE TRIGGER TEST.DDLTrigger
  BEFORE DDL ON schema
BEGIN
  if (ora_sysevent = 'TRUNCATE') then
    null; -- I do not care about truncate
  else
    raise_application_error(-20000, 'YOU CAN NOT DO DDL!');
  end if;
END;

/
روش دوم :

در مثال بالا با توجه به اینکه تریگر فوق بایستی در اسکیمای کاربر باشد ، در صورتی که کاربر اقدام به حذف و یا غیر فعال نمودن تریگر نماید ، دسترسی زدن DDL برایش باز میشود . حال در مثال زیر روشی را پیاده سازی میکنیم که از نظر امنیتی بهتر باشد. در حالت کلی با توجه به اینکه هر کاربر OWNER جداول خودش است نمیتوان دسترسی ALTER را از او گرفت . پس یک کاربر دیگر میسازیم و مراحل زیر را طی میکنیم.

1- ایحاد کاربر جدید (میتوان از اسکریپت ساخت کاربر قبلی کمک گرفت)

2- ایجاد SYNONYM از روی جداول کاربر قبلی(میتوان از اسکریپت زیر کمک گرفت)

3- دادن دسترسی های DML ای بر روی جداول اسکیمای قبلی

begin
for x in ( select table_name from DBA_TABLES where owner= 'TEST')
loop
dbms_output.put_line('CREATE OR REPLACE SYNONYM TEST2.' || x.table_name || ' FOR TEST.'|| x.table_name ||';');
dbms_output.put_line('GRANT DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE, ON COMMIT REFRESH, QUERY REWRITE, DEBUG, FLASHBACK ON ACHDD5.' || x.table_name || ' TO TEST2;');
end loop;
end;
  • موافقین ۰ مخالفین ۰
  • ۹۶/۱۰/۰۸
  • ۶۳۴ نمایش
  • حامد اسماعیلی

ALTER TABLE

ORACLE

RESTRICT DDL

TRUNCATE

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی