當前位置:
首頁 > 知識 > oracle索引和用戶許可權

oracle索引和用戶許可權

索引

使用索引加快資料庫存取的數據對象,合理的使用索引可以大大降低i/o次數,從而提高資料庫訪問性能。索引有很多種。

單列索引

單列索引是基於單個列所建立的索引

Select *from emp where ename=』scott』;

Create index 索引名字 on 表名(列名) create index aa on emp (ename);

複合索引

複合索引是基於兩列或者多列的索引。在同一張表上可以建立多個索引,但是要求列的組合必須相同。

Select *from emp where ename=』scott』and deprno=20;

Create index aa on emp (enmae,job);

Create index aa on emp (job,ename);

使用原則

建立索引適合用於到大型的表中才有意義

在where和連接條件上經常用的列上建立

索引的層次不要超過4層

索引的缺點

1建立索引後,系統要佔用大約為表的1.2倍的硬碟空間來保存。

2更新數據的時候,系統必須要額外的時間來更新對索引的更新,數據的一致性

不恰當的索引會降低系統的性能,大量的插入、修改、刪除操作比沒有索引的時候花費的時間多。

不恰當的索引

1. 很少或從不用的欄位

2. 邏輯性的欄位(男、女)。已經和容易區分。

索引的分類

數據存儲方式 B*樹、反向索引、點陣圖索引。

索引列的個數 單列索引、複合索引

列值的唯一性 唯一索引和非唯一索引

函數索引 全局索引,分區索引

不同的情況下會有不同的列上建索引。

B*樹索引建立在重複值很少的列上,點陣圖索引建立在重複值很多、不同值固定的列上。

顯示錶的索引

在同一張表上可以有多個索引,可以查詢數據字典試圖

Dba_index (資料庫說有的索引)和user_index(用戶所有的索引), 可以顯示索引信息。

Select index_name,index_type from user_indexse where table_name=』表名字』

顯示索引列

通過查詢數據字典視圖 user_ind_columns,可以顯示索引對應的列的信息

Select table_name, column_name from user_ind_columns where index_name=』ind_ename』;

也可以通過工具查看。

管理許可權和角色

許可權和角色

建立用戶後,用戶沒有任何許可權,不能執行任何的操作。要執行操作,必須授予系統許可權。如果用戶要訪問其他方案的對象,必須授予對象許可權。為了簡化許可權管理,可以使用角色。

許可權

許可權是指執行特定類型sql命令或是訪問其它方案對象的權利,

系統許可權:系統許可權在執行特定類型SQL命令的特權,用於控制用戶可以執行的一個或者一組資料庫操作。創建表許可權,在其他方案中建立表 create any table 許可權。可以在任何方案中建立表。

建立表 create table 建立視圖create view 建立同義詞 create public synonym

建立過程、函數、包 create procedure 建立觸發器 create trigger

建立簇 create 處理 cluster

Oracle 提供的系統許可權會隨著oralce 的版本的不斷升級增多,

Select *from system_privilege_map order by name;

授予系統許可權:

授予系統許可權是dba用戶來完成,如果用其他用戶來給授權的話,需要 grant any privilege

的系統許可權,跟上 with admin option,(系統許可權)就允許再把許可權傳遞向下授予另外的用戶或者角色。

用system身份授權,grant create session to xiaoming;

Gtant select on emp to xiaoming with grant option; //給定小明許可權轉發給下一個人。可以轉發的許可權。

grant select on scott.emp to huang with grant option;

收回許可權,收回授權:revoke;(不是級聯回收)

誰賦予的許可權,就由誰收回。首先確定誰給的許可權。 Scott 收回小明的查詢 emp表的許可權。

Revoke select on emp from xiaoming;

對象許可權:

訪問其他方案對象的許可權,用戶可以直接訪問自己方案的對象,要是訪問其他方案的對象,必須賦予對象許可權。

例如一般用戶hfc要訪問SCOTT.EMP表(scott:方案, emp:表)

這樣的話就必須要在scott上有對象許可權

常用的

alter 修改結構 delete 刪除 select 查詢 insert 添加 update 更新數據 index 索引 references 引用 execute 執行

顯示對象許可權

通過數據欄位視圖可以顯示用戶或者角色所具有的對象許可權,dba_tab_privs

Select distinct privilege from dba_tab_privs;

Select grantor ,owner ,table_name, privilege from dba_tab_privs where grantee=』blake』;

之前的資料庫是誰的表就由誰來執行給許可權。

現在的資料庫都可以,具有dba許可權的用戶均可。

對象許可權可以授予用戶,角色,和public,在授予的時候如果帶有with grant option 就不能被授予角色。

Grant select on emp to hfc;(with grant option)傳遞

Select *from scott.emp;

一次把許可權給就是加all

授權對象許可權下的列許可權

具體到列

Grant select on emp(ename) to hfc;

對象許可權的收回 revoke

Scott----hfc----xiaoming(級聯回收)

oracle索引和用戶許可權

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

MyBatis開發DAO的方式
提取json字元串的內容(框架)

TAG:程序員小新人學習 |