ORACLE授权用户查询另一个用户下的表与视图
发布网友
发布时间:2024-08-20 22:12
我来回答
共1个回答
热心网友
时间:2024-08-29 11:57
一、系统权限说明:
1、用户权限
CREATE SESSIOIN 连接到数据库
CREATE TABLE 在用户的方案中创建表
CREATE SEQUENCE 在用户的方案中创建序列
CREATE VIEW 在用户的方案中创视图
CREATE PROCEDURE在用户的方案中创建存储过程,函数或包
1.1、例子:授予系统权限
DBA能够授予用户指定的系统权限
GRANT create session,create table,
create sequence,create view
TO scott;
二、创建用户只用于查询其它用户库的表和视图
1、创建用户
createuser用户名identifiedby密码;grantconnect,selectanytableto用户名;这样创建的用户就可以连接数据库和只有对任何表有查询权限了grantconnectto用户名//只有连接权限
2、授权查询表与视图权限
2.1、a用户下授权查询所有表给b用户(a用户登录执行下面语句)
select'grantselectona.'||tname||'tob;'fromtab;'GRANTSELECTONA.'||TNAME||'TOB;'------------------------------------------------------grantselectona.VOTE_NUMtob;grantselectona.TMP_MSGtob;grantselectona.VOTE_IPtob;grantselectona.QUESTIONtob;grantselectona.QUESTION_COUNTtob;grantselectona.RECORD_DICTtob;grantselectona.BM_COLUMNtob;grantselectona.BM_COLUMN_CLASSIFY_RELtob;grantselectona.BM_INFO_CLASSIFYtob;grantselectona.BM_MODULEtob;grantselectona.BM_MODULE_AUTHtob;或select'grantselecton'||table_name||'tob;'fromuser_tables;'GRANTSELECTON'||TABLE_NAME||'TOB;'----------------------------------------------------grantselectonVOTE_NUMtob;grantselectonTMP_MSGtob;grantselectonVOTE_IPtob;grantselectonQUESTIONtob;grantselectonQUESTION_COUNTtob;grantselectonRECORD_DICTtob;grantselectonBM_COLUMNtob;grantselectonBM_COLUMN_CLASSIFY_RELtob;说明:在a用户下执行该语句,执行后会生成对所有表的赋权限语句,拷贝出来执行就可以了。
2.2、a用户下授权查询单个表给b用户
grantselectona.tablenametob;
2.3、a用户下授权查询所有序列给b用户
select'grantselecton'||sequence_name||'tob;'fromdba_sequenceswheresequence_owner='A'
2.4、--Oracle查询用户视图
select*fromuser_views;
2.5、a用户下授权查询视图给test11用户
select'grantselectona.'||view_name||'totest11;'fromuser_views;视图查询如下:'GRANTSELECTON'||VIEW_NAME||'TOTEST11;'---------------------------------------------------------grantselectonCONFIRM_RESERVATION_VIEWtotest11;grantselectonDEPARTMENT_RESERVATION_VIEWtotest11;grantselectonDEPART_CANCEL_RESERVATION_VIEWtotest11;grantselectonDOCTOR_CANCEL_RESERVATION_VIEWtotest11;grantselectonDOCTOR_RESERVATION_VIEWtotest11;grantselectonGRPSStotest11;grantselectonHOSPITAL_ALL_SCHEDULE_VIEWtotest11;grantselectonHOSPITAL_DEPARTMENT_VIEWtotest11;grantselectonHOSPITAL_DEP_SCHEDULE_VIEWtotest11;grantselectonHOSPITAL_DOCTOR_VIEWtotest11;grantselectonHOSPITAL_DOC_SCHEDULE_VIEWtotest11;'GRANTSELECTON'||VIEW_NAME||'TOTEST11;'---------------------------------------------------------grantselectonPATIENT_COUNT_RESERVATION_VIEWtotest11;grantselectonPATIENT_RESERVATION_VIEWtotest11;grantselectonPATIENT_RESERVATION_VIEW2totest11;grantselectonPATIENT_RES_VIEWtotest11;grantselectonPRVIEWtotest11;grantselectonRES_VIEWtotest11;grantselectonSStotest11;
备注:授权更新、删除的语法和授权查询类似,只是关键字不同而已。
三、撤消权限
1、授权a用户下取消给b用户删除单个表的权限
revoke delete on a.tablename fromb;
2、授权a用户下取消给b用户更新单个表的权限
revoke update on a.tablename from b;
3、拥有dba权限的用户下取消给b用户创建dblink的权限
revoke create database link from b;
4、拥有dba权限的用户下取消给tes11用户查询任何表的权限
revoke select any table from test11;
四、事例:
1、在rh_test用户下授权查询所有表给wd用户
select'grantselectonrhip_test.'||tname||'towd;'fromtab;'GRANTSELECTONRH_TEST.'||TNAME||'TOWD;'----------------------------------------------------------------grantselectonrh_test.BIZ_CODE_RELtowd;grantselectonrh_test.BIZ_RMIM_DICtowd;grantselectonrh_test.BIZ_RMIM_VERSIONtowd;grantselectonrh_test.BIZ_RMIM_VERSION_DETAILtowd;grantselectonrh_test.BIZ_RMIM_VERSION_SUBDETAILtowd;grantselectonrh_test.BIZ_SYSTEM_LOGINtowd;grantselectonrh_test.BIZ_TREE_PATHtowd;grantselectonrh_test.CLINIC_TRANSFERtowd;grantselectonrh_test.CODE_SYSTEM_DICtowd;'GRANTSELECTONRH_TEST.'||TNAME||'TOWD;'----------------------------------------------------------------grantselectonrh_test.ETL_PATIENT_INDEXtowd;grantselectonrh_test.HOSPITAL_DICtowd;grantselectonrh_test.HOSPITAL_SUBSYSTEMtowd;grantselectonrh_test.MAIL_RECORDtowd;grantselectonrh_test.MEDICAL_RECORDtowd;grantselectonrh_test.PATIENT_INDEXtowd;grantselectonrh_test.RHIP_SYSCONFIGtowd;grantselectonrh_test.SYSTEMLOGINtowd;将上面查出的语句执行一下即可。
2、a用户下授权查询单个表给test11用户
select'GRANTSELECTON'||table_name||'totest11;'fromuser_tables得到的结果如下:GRANTSELECTONWEBSERVICE_USERtotest11GRANTSELECTONUSERLESS_PATIENTtotest11;再把上面得到的结果逐一执行一遍:GRANTSELECTONWEBSERVICE_USERtotest11GRANTSELECTONUSERLESS_PATIENTtotest11;新建的表要想被userA访问,也得执行grant语句:grantselecton新建的表touserA;
3、授权a用户下授权更新单个表给b用户
grant update on a.tablename to b;
4、授权a用户下授权删除单个表给b用户
grant delete on a.tablename to b;
5、拥有dba权限的用户下授权创建dblink给b用户
grant create database link to b;
ORACLE授权用户查询另一个用户下的表与视图
标签:updidewhiteclassioiicausercolorcancel
标签 upd ide white class ioi ica user color cancel
ORACLE授权用户查询另一个用户下的表与视图
2.5、a用户下授权查询视图给test11用户 select'grantselectona.'||view_name||'totest11;'fromuser_views;视图查询如下:'GRANTSELECTON'||VIEW_NAME||'TOTEST11;'---grantselectonCONFIRM_RESERVATION_VIEWtotest11;grantselectonDEPARTMENT_RESERVATION_VIEWtotest11;grantselectonDEPART_CANCEL_RESERVA...
oracle中有没有赋予一个用户查询另一个用户所有表的权限
可以的,在用户1中执行:select 'grant ALL on用户1.'||object_name|| ' to 用户2;'from user_objects where (object_type='TABLE' or object_type='VIEW') ;然后在用户2中把用户1的查询结果运行一遍,就是把用户1的表权限都给用户2,这样用户2就可以查用户1的表和视图了! 在用户2下...
oracle中怎么在一个用户(B)中查询另一个用户(A)的use_tables表?
一.第一种方法,在dba 用户下创建基于dba_tables的视图;1.create view V_A_tables as select * from dba_tables where owner='A';2.grant select on V_A_tables to B;3. 进入用户B, select * from sys.V_A_tables ;二. 第二种方法是在A用户下创建视图并赋权限;如有疑问,请...
oracle中同一个实例里面的两个用户,从另外一个用户的表里面取数据做视图...
用system登录,将用户A的表授权给public或者 B grant select on A.table1 to public;grant select on A.table to B;或者用A登录,将表的select授权给public或者B
Oracle数据库已赋予用户A对sys下3张视图的select权限,但访问的时候有张...
可能有两个原因:1,view1和view3是所有用户都有的,比如user_tables视图等,view2是sys用户独有的 2,view1和view3有建公共同义词,view2没建公共同义词 希望对你有帮助。
oracle数据库,只有访问视图权限,没有访问表权限
视图里边的表也是该用户下的,去掉表的授权,视图不受影响;如果里边的表是其它用户,需要 with grant option;sqlplus / as sysdbacreate table t1(f1 number);create view v1 as select * from t1;create user cc identified by wcycc;grant connect to cc;grant select on v1 to cc;conn cc/wcyccselect *...
oracle 赋予权限后,查询却显示表或视图不存在
使用建表用户名.表名来查询 select * from scott.emp;如果要不带建表用户名,需要建同义词 create public synonym emp for scott.emp;这样用xiaohong 登陆后就可以使用 select * from emp; 来查询数据了
Oracle 授权另外一个用户拥有创建视图的权限
在另外一个用户登录的账号内输入这三条命令 grant create view to ds_leader;grant select any table to ds_leader;grant select any dictionary to ds_leader;然后创建视图 create or replace view t_dm_ay as select zdxbm bh, zdxbm dm, ...
Oracle查看用户下,表下有哪些视图
select * from dba_tab_privs where grantee='user_name'--查看该用户下所有视图信息 select * from dba_dependencies where referenced_name='table_name'--查看该表创建了哪些视图
oracle中怎样把一个用户的所有table的select权限授给另外一个用户
1、双击桌面sqldeveloper软件图标启动软件。2、新建数据库连接,填写登录数据库信息并选择相应角色进行登录。3、登录成功后先查询出hr用户下所有的表名,可直接通过dba_tables来进行查询。4、把查询权限赋给测试用户的方法有两种,一种为当用户下的表比较少的情况下可以直接通过grant select/delete/update ...