需求:
新建的使用者usera,要授權給他訪問使用者scott的所有表
有三種兩方法:
1)sql> conn / as sysdba;
sql> grant select any table on usera
這種方法的缺點是授予的許可權過大,usera不僅可以訪問scott下的所有表,也可以訪問其他使用者包括sys,system下的所有表。
2)sql> conn scott/tiger;
sql> select 'grant select on' || table_name || 'to usera;' from user_tables
得到的結果如下
grant select on emp to usera;
grant select on dept to usera;
grant select on bonus to usera;
grant select on loc to usera;
再把上面得到的結果逐一執行一遍:
sql> grant select on emp to usera;
sql> grant select on dept to usera;
sql> grant select on bonus to usera;
sql> grant select on loc to usera;
這種方法的缺點是要執行比較多的語句,如果有100個表,就得執行100個grant語句;
另外scott新建的表不在被授權的範圍內,新建的表要想被usera訪問,也得執行grant語句:
grant select on 新建的表 to usera;
(3)使用游標
先建立兩個使用者
sql> create user test1 identified by oracle;
user created.
sql> create user test2 identified by oracle;
user created.
授權sql> grant connect, resource to test1;
grant succeeded.
sql> grant connect, resource to test2;
grant succeeded.
在test2下建立乙個表作測試用
sql> conn test2/oracle;
connected.
sql> create table t(id number);
table created.
建立角色並用游標給角色授權
sql> conn /as sysdba;
connected.
sql> create role select_all_test2_tab;
role created
sql>
declare
cursor c_tabname is select table_name from dba_tables where owner = 'test2';
v_tabname dba_tables.table_name%type;
sqlstr varchar2(200);
begin
open c_tabname;
loop
fetch c_tabname into v_tabname;
exit when c_tabname%notfound;
sqlstr := 'grant select on test2.' || v_tabname ||' to select_all_test2_tab';
execute immediate sqlstr;
end loop;
close c_tabname;
end;
/pl/sql procedure successfully completed.
把角色授權給test1
sql> grant select_all_test2_tab to test1;
grant succeeded.
嘗試用test1訪問test2的表
sql> conn test1/oracle;
connected.
sql> select * from test2.t;
no rows selected
在test2下新建表
sql> conn test2/oracle;
connected.
sql> create table ta(id number);
table created.
嘗試用test1訪問新建的表
sql> conn test1/oracle;
connected.
sql> select * from test2.ta;
select * from test2.ta
*error at line 1:
ora-00942: table or view does not exist
結論:與第二種方案相比,用這種方式不需逐一把test2下的表授權給test1訪問,但test2新建的表無法被test1訪問。
oracle用dba建立使用者並授權
參考 sqlplus中切換使用者,如切換到adm使用者,命令為 conn adm 123456 其中adm為使用者名稱,123456 為密碼 1 建立使用者,如建立wstest,密碼為wstest1 create user wstest identified by wstest1 2 授予登入許可權...
Oracle 查詢使用者,表,授權相關語句
color blue 授予許可權 grant insert,select,update,delete on table to user grant dba,resource to ytpbl grant create any sequence to ytpbl 撤銷 revoke oracle查詢使...
oracle 建立使用者,授權使用者,建立表,查詢表
原文 oracle 建立使用者,授權使用者,建立表,查詢表 oracle 建立使用者,授權使用者,建立表,查詢表 假設oracle10g所有的都已經安裝和配置好 第一步 win r,進入執行,cmd 第二步 連線超級管理員sysdba,語句sqlplus as sysdba 第三步 假設連線成功 輸...