This Oracle tutorial explains how to grant and revoke privileges in Oracle with syntax and examples.

আজ কে যা শিখবঃ

  • User Privilege এবং System Privilege
  • কোন Privilege টেবিলকে প্রদান
  • Data Dictionary থেকে Privilege দেখা
  • Role তৈরি এবং প্রদান
  • Role Privilege এর পার্থক্য

Privilege: কোন বিশেষ এসকিউএল স্টেটমেন্ট চালানোর অধিকারকে Privilege বলা হয়।Privilege দুই ধরণের- ১. System Privilege এবং Object Privilege

System Privilege ডাটাবেজের সাথে সম্পর্কিত Privilege গুলো হল System Privilege। ওরাকল ডাটাবেজে একশর বেশী Privilege রয়েছে। মূলত ডাটাবেজ Administrator প্রিভিলেজ গুলো দিয়ে থাকে। নিম্নে System Privilege এর একটি তালিকা দেওয়া হলো -

Privilege Description
DBA Grantee can Database Administrator
CREATE USER Grantee can create other Oracle users
DROP USER Grantee can drop another user
ALTER ANY INDEX Enables a user to alter any index in the database. Note: There is no ALTER INDEX statement.
ALTER ANY MATERIALIZED VIEW Enables a user to alter any materialized view in the database. Note: There is no ALTER MATERIALIZED VIEW statement.
ALTER ANY PROCEDURE Enables a user to alter any PL/SQL procedure, function or package in the database.
ALTER ANY SEQUENCE Enables a user to alter any sequence in the database. Note: There is no ALTER SEQUENCE statement.
ALTER ANY TABLE Enables a user to alter any table in the database
ALTER ANY VIEW Enables a user to alter any view in the database. Note: There is no ALTER VIEW statement.
CACHE_MANAGER Enables a user to perform operations related to cache groups
CREATE ANY CACHE GROUP Enables a user to create a cache group owned by any user in the database.
CREATE ANY INDEX Enables a user to create an index on any table or materialized view in the database.
CREATE ANY MATERIALIZED VIEW Enables a user to create a materialized view owned by any user in the database.
CREATE ANY PROCEDURE Enables a user to create a PL/SQL procedure, function or package owned by any user in the database.
CREATE ANY SEQUENCE Enables a user to create a sequence owned by any user in the database.
CREATE ANY SYNONYM Enables a user to create a private synonym owned by any user in the database.
CREATE ANY TABLE Enables a user to create a table owned by any user in the database.
CREATE ANY VIEW Enables a user to create a view owned by any user in the database.
CREATE CACHE GROUP Enables a user to create a cache group owned by that user.
CREATE MATERIALIZED VIEW Enables a user to create a materialized view owned by that user.
CREATE PROCEDURE Enables a user to create a PL/SQL procedure, function or package owned by that user.
CREATE PUBLIC SYNONYM Enables a user to create a public synonym.
CREATE SEQUENCE Enables a user to create a sequence owned by that user.
CREATE SESSION Enables a user to create a connection to the database.
CREATE SYNONYM Enables a user to create a private synonym.
CREATE TABLE Enables a user to create a table owned by that user.
CREATE VIEW Enables a user to create a view owned by that user.
DELETE ANY TABLE Enables a user to delete from any table in the database.
DROP ANY CACHE GROUP Enables a user to drop any cache group in the database.
DROP ANY INDEX Enables a user to drop any index in the database.
DROP ANY MATERIALIZED VIEW Enables a user to drop any materialized view in the database.
DROP ANY PROCEDURE Enables a user to drop any PL/SQL procedure, function or package in the database.
DROP ANY SEQUENCE Enables a user to drop any sequence in the database.
DROP ANY SYNONYM Enables a user to drop a synonym owned by any user in the database.
DROP ANY TABLE Enables a user to drop any table in the database.
DROP ANY VIEW Enables a user to drop any view in the database.
DROP PUBLIC SYNONYM Enables a user to drop a public synonym.
EXECUTE ANY PROCEDURE Enables a user to execute any PL/SQL procedure, function or package in the database.
FLUSH ANY CACHE GROUP Enables a user to flush any cache group in the database.
INSERT ANY TABLE Enables a user to insert into any table in the database. It also enables the user to insert into any table using the synonym, public or private, to that table.
LOAD ANY CACHE GROUP Enables a user to load any cache group in the database.
REFRESH ANY CACHE GROUP Enables a user to flush any cache group in the database.
SELECT ANY SEQUENCE Enables a user to select from any sequence or synonym on a sequence in the database.
SELECT ANY TABLE Enables a user to select from any table, view, materialized view, or synonym in the database.
UNLOAD ANY CACHE GROUP Enables a user to unload any cache group in the database.
UPDATE ANY TABLE Enables a user to update any table, or synonym in the database.
XLA Enables a user to connect to a database as an XLA reader.

User তৈরি করাঃ ডিবিএ এবং যে সকল User কে Create User প্রিভিলেজ দেওয়া আছে শুধুমাত্র তারাই ইউজার তৈরি করতে পারবে।
Syntax: Create User user Identified by password; Example: Create User emp Identified by 123;

ইউজার এর পাসওয়ার্ড পরিবর্তন করাঃ Alter User লিখে User এর নাম এবং শেষে নতুন পাসওয়ার্ড দিতে হবে।
Example: ALTER USER HR IDENTIFIED BY employ;

প্রিভিলেজ প্রদানঃ কোন ইউজারকে ডাটাবেজে কানেক্ট করার জন্য Create Session প্রিভিলেজ দেওয়া হয়। তাই প্রথমে ইউজারকে আমরা Create Session প্রিভিলেজ দিব। এবং এর মাধ্যমে কোন ইউজারকে প্রিভিলেজ কিভাবে দেওয়া হয় তা শিখব।
Example: GRANT create session TO scott;

Role: Role হল অনেক গুলো প্রিভিলেজ এর একটি গ্রুপ। যদি কোন ডাটাবেজ এ অনেক ইউজার থাকে তাহলে প্রত্যেককে আলাদা ভাবে একই প্রিভিলেজ প্রদান করা বেশ সময় সাপেক্ষ ব্যাপার। তাই রিলেটেড প্রিভিলেজ গুলকে নিয়ে একটি রোল তৈরি করে তা ইউজারকে প্রদান করা হয়।

Role তৈরিঃ CREATE ROLE লিখে তারপর রোলের নাম দিতে হবে -
Example: CREATE ROLE manager;

Role কে প্রিভিলেজ দেওয়াঃ GRANT লিখে প্রিভিলেজ গুলোর নাম দিতে হবে এবং শেষে যে রোলকে দিব তার নাম দিতে হবে -
Example: GRANT create table, create view TO manager;

কোন ইউজারকে রোল প্রদানঃ GRANT লিখে রোলের নাম তারপর যে সকল ইউজারকে দিব তার নাম -
Example: GRANT manager TO DE HAAN, KOCHHAR;