oracle數據庫管理-數據字典

     數據字典是oracle數據庫中最重要的組成部分,他提供了數據的一些系統信息

     動態性能視圖記載了例程啓動後的相關信息

 

     數據字典

     數據字典記錄了數據庫的系統信息,它是隻讀表和視圖的集合,數據字典的所有者爲sys用戶

     用戶只能在數據字典上執行查詢操作(select語句),而其維護和修改是由系統自動完成的

 

 

     這裏我們談談數據字典的組成:數據字典包括數據字典基表和數據字典視圖,其中基表存儲數據庫的基本信息,普通用戶不能直接訪問數據字典的基表數據字典視圖是基於數據字典基表所建立的視圖普通用戶可以通過查詢數據字典視圖取得系統信息,數據字典視圖主要包括user_xxx,all_xxx,dba_xxx三種類型

      user_tables

      用於顯示當前用戶所擁有的所有表,它只返回所對應方案的所有表

       比如;select table_name from user_tables;

       all_tables

      用於顯示當前用戶可以訪問的所有表,他不僅會返回當前當前用戶方案的所有表,還會返回當前用戶可以訪問的其它方案的表

      比如:select table_name from all_tables;

      dba_tables

      他會顯示所有方案擁有的數據庫表,但是查詢這種數據庫字典視圖,要求用戶必須是dba角色或是有select any tables系統權限,例如:當用system用戶查詢數據字典視圖dab_tables時,會返回system,sys,scott,.....方案所對應的數據庫表

 

       用戶名,權限,角色

       在建立用戶時,oracle會把用戶的信息存放到數據字典中,當給用戶授予權限或是角色時,oracle會將權限和角色的信息存放到數據字典中

       通過查詢dba_users可以顯示所有數據庫用戶的詳細信息

       通過查詢數據字典視圖dba_sys_privs可以顯示用戶所具有的系統權限

       通過查詢數據字典視圖dba_tab_privs可以顯示用戶具有的對象權限

       通過查詢數據字典dba_col_privs可以顯示用戶具有的列權限

       通過查詢數據庫字典視圖dba_role_privs可以顯示用戶所具有的角色

 

 

        角色由很多權限組成,當把一個角色分配給某個用戶後,該用戶就擁有了很多的權限 ,權限分爲對象權限和系統權限

 

         查詢oracle中所有的角色一般是dba

         select * from dba_roles;

         查詢oracle中所有的系統權限,一般是dba

         select * from system_privilege_map order by name;

         查詢oracle中所有的對象權限,一般是dba

         select distinct privilege from dba_tab_privs;

         查詢數據庫的表空間

         select tablespace_name from dba_tablespaces;

 

1.如何查詢一個角色包含的權限

     a.一個角色包好的系統權限

     select * from dba_sys_privs where grantee='CONNECT';

      或是

      select * from role_sys_privs where role='CONNECT';

     b.一個角色包含的對象權限

     select * from dba_tab_privs where grantee='CONNECT';

 

2.oracle究竟有多少中角色

     select * from dba_roles;

 

3.如何查看某個用戶具有什麼角色

select * from dba_role_privs where grantee='SCOTT';

 

顯示當前用戶可以訪問的所有數據字典視圖

select * from dict comments like '%grant%';

顯示當前數據庫的全稱

select * from global_name;

 

 

----------------------------管理表空間和數據文件------------------------------

介紹,數據庫則是存放

表空間是數據庫的邏輯組成部分,從物理上講,數據庫數據存放在數據文件中;從邏輯上講,數據庫則是存放在表空間中的,表空間由一個或是多個數據文件組成。

 

oracle中邏輯結構包括表空間,段,區和塊

數據庫由表空間構成,而表空間又是由段構成,而段又是由區構成,而區又是由oracle塊構成的這樣的一種結構,可以提高數據庫的效率。   

表空間用於從邏輯上組織數據庫的數據,數據庫邏輯上是由一個或多個表表空間組成的,通過表空間可以 達到以下作用;

(1)控制數據庫佔用的磁盤空間

(2)dba可以將不同數據類型部署到不同的位置,這樣有利於提高i/0性能,同時利於備份和恢復等管理操作

 

建立表空間

建立表空間是使用create tablespace命令完成的,需要注意的是,一般情況下,建立表空間是特權用戶或是dba來執行的,如果其它用戶想要建立表空間,則用戶必須具有create tablespace的系統權限

建立數據表空間

在建立數據庫後,爲便於管理表,最好建立自己的表空間,create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k

說明:執行完上述命令後,會建立名稱爲data01 的表空間,併爲該表空間建立名稱爲data01.dbf的數據庫文件,區的大小爲128k

使用表空間

create table mypart(deptno number(4),dname varchar2(14) ,loc varchar2(13))tablespace data01;

 

 

 改變表空間的狀態

當建立表空間時,表空間處於聯機(online)狀態,此時該表空間是可以訪問的,並且該表空間是可以讀寫的,即可以查詢該表空間的數據,而且還可以在表空間執行各種語句,但是在進行系統維護或是數據維護時,可能需要改變表空間的狀態,一般情況下,有特權用戶或是dba來操作

(1)使表空間脫機

alter tablespace 表空間名 offline;

(2)使表空間聯機

alter tablespace 表空間 online;

(3)只讀表空間

當建立表空間時,表空間可以讀寫,如果不希望在該表空間上執行update,delete,insert操作,那麼可以將表空間修改爲只讀,alter tablespace 表空間名 read only;

<4使表空間可讀寫

alter tablespace 表空間名 read write;

    <1知道表空間名,顯示錶空間包括的所有表

      select * from all_tables where tablespace_name='表空間名'

      <2知道表名,查看錶屬於那個表空間

      select tablespace_name,table_name from user_tables where tale_name='emp';

通過<2可以知道scott.emp是在system這個表空間上,現在我們可以將system改爲只讀的但是不會成功,因爲system是系統表空間,如果是普通表空間,那麼我們就可以將其設爲只讀的

 

 

刪除表空間

一般情況下,由特權用戶或是dba來操作,如果其它用戶操作,那麼要求用戶具有drop tablespace系統權限

drop tablespace ‘表空間’ including contents and datafiles

說明;including contents表示刪除表空間時,刪除該表空間的所有數據庫對象,而datafiles表示將數據庫文件也刪除

 

擴展表空間

表空間是由數據文件組成的,表空間的大小實際上就是數據文件相加後的大小,那麼我麼可以想象,假定表employee存放到data01表空間上,初始大小是2m,當數據滿2m空間後,如果在向employee表插入數據,這樣就會顯示錶空間不足的錯誤,此時需要擴展表空間,擴展表空間的方式有三種

(1)增加數據文件

alter tablespace sp01 add  datafile 'd:\test\sp01.dbf' size 20m

(2)增加數據文件的大小

alter  tablespace 表空間名  'd:\test\sp01.dbf'  resize 20m

(3)設置文件自動增長

alter tablespace 表空間名 'd:\test\sp01.dbf' autoextend on next 10m maxsize 500m;

 

移動數據庫文件

有時,如果你的數據文件所在的磁盤損壞時,該數據文件將不能再使用,爲了能夠重新使用,需要將這些文件的副本移到其它的磁盤,然後恢復,例如移動數據庫文件sp001.dbf爲例來說明

<1確定數據文件所在的表空間

select tablespace_name from dba_data_files where file_name='d:\sp001.dbf';

<2使表空間脫機

確保數據文件的一致性,將表空間轉變爲offline的狀態

alte tablespace sp01 offline

<3使用命令移動數據文件到指定的目標位置

host move d:\sp01.dbf c:\sp01.dbf

<4執行alter tablespace命令

在物理上移動了數據後,還必須執行alter tablespace命令對數據庫文件進行邏輯修改

alter tablespace sp01 rename datafile 'd:\sp001.dbf' to 'c;\sp01.dbf';

<5使的表空間聯機

在移動了數據文件後,爲了使用戶可以訪問該表空間,必須將其轉變爲online狀態

alter tablespace sp01 online

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章