oracle 进阶三(索引、权限,角色)

来源:互联网 发布:java线程池使用demo 编辑:程序博客网 时间:2024/06/05 03:27

索引

加速数据的存取,合理的使用索引可以大大降低i/o 的次数,提高访问的性能

单列索引:基于单个列所建立的索引

create index 索引名 on 表名(列名);

复合索引:基于多个列的索引,同一个表可以有多个索引,但是要求列的组合必须不能,意思就是不能对于相同的组合列,添加多个索引

create index emp_index1 on emp(ename,jop);

create index emp_index2 on emp(ename,sal);

使用原则:

1.    大表上建立索引

2.    在where子句或者连接条件上建立索引

3.    索引的层次不能超过四层

索引的缺点:

1.    建立索引,系统要占用大约为表的1.2倍的硬盘空间;

2.    更新数据的时候,系统必须要有额外的时间来对索引进行更新,以维护数据和索引的一致性

3.    不恰当的索引会影响系统性能。

显示索引的信息:(suer_indexs、dab_indexs)

select index_name,index_type fromuser_indexs where table_name=’表名’;

显示索引列:

select table_name,colum_name from user_ind_columswhere index_name=’索引名’;

权限和角色

在创建用户的时候,新用户没有任何操作数据库的能力;需要给他分配系统权限和对象权限才可以操作数据库。

系统权限:用户对数据库的操作,例如可不可以登陆数据库,可不可以建表等

create session  连接数据库、create table 建表、createview 建试图

create public synonym 建同义词、createprocedure 建存储过程,函数,包

create trigger 建触发器   create cluster  建簇

查看系统权限select * from system_priviege_map order by name;

授予系统权限(dba用户)

grant create session,create table to kenwith admin option;//授予ken用户创建表的权限,并且它可以把这个权限授予其他用户。

grant create cview to ken;//仅仅把createview权限授予ken自己,它不能把这个权限授予别人

回收系统权限:

一般情况下,回收系统是由dba来完成的,回收的也仅仅时自己的权限,不会涉及到其他人

revoke create session from ken;//回收ken用户的创建会话的权限、

对象权限:用户对表或者试图的操作,增删改查

alter 修改 、delete 删除、select 查询、inster 插入、update 修改数据

index 索引 reference引用、excute 执行

查询对象权限:

select distinct privilege from dba_tab_privs;

grant select  on socct.emp to ken;//整个表

grant all on socct,emp(sal) to ken;// 一列

with grant option 被授予的用户可以把授予的权限授予其他用户(只能给用户)

回收用户权限:revoke 如果用户把授予的用户权限收于了其他用户,那么其他用户的也会受到牵连

revoke select on  emp from ken;

方案:创建用户时oracle数据库会自动声称一个与用户名想同的方案;(数据对象,表、试图、触发器、存储过程)

角色:包含多种权限,使用角色为了简化权限的管理。分为预定义角色,自定义角色

预定义角色:connect、resource、dba

connect 角色:alter session、createcluster、create database link、create session、

create table、 create view、createsequence

resource角色:createtable\create indextype\create cluster\create type\create procedure \createtrigger

dba 角色:所有的系统权限

自定义角色:具有create role 的系统权限的用户

建立角色:create role  角色名 notidentified;

create role 角色名 identified by  验证密码;

给角色授予权限(dba用户):注意用户权限不可以with admin option

grant create session to 角色名 withadmin option;

drop 角色名; //删除角色,删除角色后,被授予该角色的用户也没有相应的权限l;

查询角色:

select *  from dab_roles;\\查询所有角色

select privilege,admin_optin fromrol_sys_privs where role=’角色名’;//显示角色所有的系统权限

sys_tab_privs//查询用户权限

查询用户拥有的角色

select grabted_role,default_role fromdab_role_privs where granter=’用户名’

 

 

0 0
原创粉丝点击