Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल किसी भी निर्देशिका को इस प्रतिबंध के साथ कैसे प्रदान करें कि सभी निर्देशिका किसी दिए गए निर्देशिका के अंदर बनाई जानी चाहिए?

यह निर्भर करता है, यदि आप प्रतिबंधित करना चाहते हैं कि कौन सी OS निर्देशिकाएं Oracle utl_file कमांड से एक्सेस कर सकती हैं, तो आप utl_file_dir सेट कर सकते हैं पैरामीटर। दुर्भाग्य से, यह पैरामीटर सिस्टम चौड़ा है, इसलिए आप इस पैरामीटर का उपयोग करने वाले किसी विशिष्ट उपयोगकर्ता के लिए अनुदान/निरस्त करने में सक्षम नहीं होंगे। यह भी ध्यान रखें कि यदि आप इस पैरामीटर में परिवर्तन करते हैं, तो वे परिवर्तन Oracle डेटाबेस के पुनरारंभ होने तक प्रभावी नहीं होंगे:

alter system set utl_file_dir = '/foo/bar' scope=spfile;
shutdown immediate;
startup open;

12.1 Oracle डॉक्स से परामर्श लें utl_file_dir के बारे में अधिक जानकारी के लिए ।

उस ने कहा, यदि आप वास्तव में प्रतिबंधित करना चाहते हैं कि विशिष्ट ओएस निर्देशिकाओं में ओरेकल निर्देशिका कौन बना सकता है, तो उस कार्य के लिए एक प्रक्रिया उपयुक्त होगी क्योंकि इससे आपको बेहतर अनाज नियंत्रण (और सीमित करने की अनुमति मिल जाएगी जो बहुत शक्तिशाली है create any directory प्रक्रिया के स्वामी को विशेषाधिकार):

sqlplus kjohnston

create or replace procedure mydircreate (p_dir varchar2)
as
  ex_custom EXCEPTION;
  PRAGMA EXCEPTION_INIT( ex_custom, -20001 );
begin
  if lower(p_dir) not like '/foo/bar/%' then
    raise_application_error( -20001, 'Not authorized' );
  end if;

  execute immediate 'create or replace directory mydir as ''' || p_dir || '''';
end mydircreate;

create user testuser identified by <password>;
grant create session to testuser;
grant execute on kjohnston.mydircreate to testuser;

exit;

sqlplus testuser

SQL> exec kjohnston.mydircreate('mydir', '/randomdir');
ORA-20001: Not authorized

SQL> exec kjohnston.mydircreate('mydir', '/foo/bar/baz');
PL/SQL procedure successfully completed.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle स्ट्रिंग एकत्रीकरण

  2. ओरेकल - अपडेट जॉइन - गैर कुंजी-संरक्षित तालिका

  3. to_sql का उपयोग करके ऑरैकल डेटाबेस में पांडा डेटाफ्रेम कैसे लिखें?

  4. स्तंभ नाम लाने के लिए Oracle क्वेरी

  5. Oracle 12c में JSON के रूप में एक sql क्वेरी के परिणाम लौटाएं