1. 程式人生 > >oracle 進階三(索引、許可權,角色)

oracle 進階三(索引、許可權,角色)

索引

加速資料的存取,合理的使用索引可以大大降低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=’使用者名稱’