介绍:
--权限分系统权限和对象权限,角色则是权限的集合。系统权限是对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'