oracle常用的权限查询指令

本文详细介绍了Oracle数据库中的权限系统,包括系统权限、对象权限和角色的概念,以及如何通过各种SQL查询检查用户、角色、权限和对象。涵盖了用户管理、角色分配、权限查看和调整等内容,是数据库权限管理的实用教程。
摘要由CSDN通过智能技术生成

介绍:

--权限分系统权限和对象权限,角色则是权限的集合。系统权限是对Oracle的操作权限,如连接,授权,创建create.对象权限则是对某个对象的操作权限,如查询。更新,删除delete等。

--查看系统中有哪些用户,下列指令都可以,DBA_*意为DBA拥有的或可以访问的所有的对象。

ALL_*意为某一用户拥有的或可以访问的所有的对象。USER_*意为某一用户所拥有的所有的对象象。--------------

select * from dba_users;  
select * from all_users; 

SELECT * FROM sys.user$;  //记录所有用户的账号密码

--查看当前用户
select * from user_users;

--查看当前用户具有哪些角色
select * from user_role_privs;  

--查看系统中有哪些角色
select * from dba_roles;  

--查看系统中全部用户分别具有哪些角色
select * from dba_role_privs;

--查看具有sysdba、sysoper、sysasm角色的用户
select * from  v$pwfile_users;

--查看DBA角色具有什么权限.要查看每个角色时不带where条件即可
select * from role_sys_privs where role='DBA';

--查看当前用户SYS具有的权限
select * from dba_sys_privs where grantee='SYS';

--查看当前用户在不同对象中所拥有的权限(即可以操作哪些表),grantee字段表示被授予者,对象即是一个具体的数据表或是数据库或是一个存储过程等,两条指令都可以用
select * from dba_tab_privs;
select * from all_tab_privs;

--查看当前用户有无“USER$” 表 
select *  from user_tables  where table_name='USER$';
select * from user_tables;          // 查看当前用户拥有哪些表  

select  *  from  user_tab_privs;  //查看当前用户对哪些表有操作权限

--查看USER$表属于哪个用户
select OWNER from dba_tables where table_name='USER$';

--将USER$表的select权限赋给用户synlte。注意必须以USER$表的所有者sys来登录,然后才能将USER$的权限赋给用户synlte,其他用户是无法操作USER$表的,包括管理员账号,表必须用对应的用户来开权限。
grant select on USER$ to synlte;    //在sys用户下执行此语句

--查看表的拥有者

select owner, object_name, object_type,created, timestamp, last_ddl_time from ALL_OBJECTS where OBJECT_TYPE='TABLE' and object_name='表名' ;
或是

SELECT OWNER,TABLE_NAME,TABLESPACE_NAME FROM all_tables where TABLESPACE_NAME!='SYSAUX' and TABLESPACE_NAME!='TEMP' and TABLESPACE_NAME!='SYSTEM' and table_name='表名';
 

--查看表中是否有主键,没有时返回空

select a.constraint_name,  a.column_name   
from user_cons_columns a, user_constraints b   
where a.constraint_name = b.constraint_name   and b.constraint_type = 'P'  and a.table_name = '表名';

--查看表中所有约束条件,表名要大写,否则查不到

select *from user_constraints where table_name='大写表名'

--设置表为只读权限(加锁)
ALTER TABLE tab_name READ ONLY ;

--设置表的读写权限(解锁)
ALTER TABLE tab_name READ WRITE ;

--设置新用户对表只有读权限

create user JSETI_WZQ identified by abcdef;   -- 假设abcdef是密码
grant connect,resource to JSETI_WZQ;
grant select on LYSDC.ly_xxbz_gxjg_grtxfszl to JSETI_WZQ;

--修改表名

ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令)

--查看表的属性信息(字段名,类型,长度等)

 select
   t.table_name,
   t.column_name,
   t.data_type,   
   t.data_length  
from user_tab_columns t where t.TABLE_NAME='TMP_DEVICE_INFO_ALL'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值