工作上碰到了同义词和权限的东西,放在这做个总结:
1.查看当前用户所拥有的系统权限
select * from session_privs;2.查看数据库内的所有角色
select * from dba_roles;
4.查看当前用户所拥有的角色
select * from session_roles;
5.查看角色的嵌套关系和所授予的用户
select * from dba_role_privs order by 1;
6.其他查看角色和权限的命令
select * from role_sys_privs;
select * from dba_sys_privs;
7.表级对象权限
select * from user_tab_privs_made;
select * from user_tab_privs_recd;
8.列上的对象权限
select * from user_col_privs_made;
select * from user_col_privs_recd;
9.比较connect和resoucr角色的权限差别
select grantee,privilege from dba_sys_privs where grantee='RESOURCE' OR GRANTEE LIKE 'CONNECT'
10.查看oracle的版本
select version from v$instance;
select * from role_role_privs where role='CONNECT'
CONNECT角色在10g以后就只有create session的权限了,以前其他版本的权限都被取消了。
当RESOURCE角色被授予一个用户后,该用户自动拥有了unlimited tablespace的系统权限。
select * from role_role_privs
select * from role_sys_privs;
select * from role_tab_privs;
select * from role_wm_privs;
查看某个role赋给了哪些user或role:
select * from DBA_ROLE_PRIVS where GRANTee='ifm30';
select * from dba_users;
grant RESOURCE to TYF with admin option
commit
创建同义词: create public synonym table_name for user.table_name; 2.删除同义词: drop public synonym table_name; 3.查看所有同义词: select * from dba_synonyms
Oracle同义词的作用
1) 多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。
2) 为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个Oracle同义词来简化sql开发。
3)为分布式数据库的远程对象提供位置透明性。