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(級聯回收)
※MyBatis開發DAO的方式
※提取json字元串的內容(框架)
TAG:程序員小新人學習 |