數據字典數據庫
數據字典是oracle數據庫中最重要的組成部分,它提供了數據庫的一些系統信息session
數據字典記錄了數據庫的系統信息,它是隻讀表和視圖的集合,數據字典的全部者是sys用戶oracle
用戶只能在數據字典上執行查詢操做,而其維護和修改是由系統自動完成的ide
數據字典包括數據字典基表和數據字典視圖,其中基表存儲數據庫的基本信息,普通用戶不能直接訪問數據字典的基表,數據字典視圖是基於數據字典基表所創建的視圖,普通用戶能夠經過查詢數據字典視圖取得系統信息性能
數據字典視圖主要包括:user_xxx,all_xxx,dba_xxx三種類型spa
動態性能視圖擠在了例程啓動後的相關信息(常常變化的信息)server
數據字典由數據基表和動態視圖組成對象
數據字典基表存放的是靜態數據it
數據字典動態視圖存放的是動態信息io
數據字典記錄有oracle數據庫的全部系統信息,經過查詢數據字典能夠取得
一下系統信息,好比:
一、對象定義狀況
二、對象佔用空間大小
三、列信息
四、約束信息
動態性能視圖
動態性能視圖用於記錄當前例程的活動信息,當啓動oracle server時,系統
會創建動態性能視圖;當中止oracle server時,系統會刪除動態性能視圖。oracle
的全部動態性能視圖都是以v_$開始的,而且oracle爲每一個動態性能視圖都提供了相應的同義詞
而且同義詞是以V$開始的,例如v_$datafile的同義詞爲v$datafile;
動態性能視圖的全部者爲sys,通常狀況下,由dba或是特權用戶來查詢動態性能視圖
user_tables:用於顯示當前用戶所擁有的全部表,它只返回用戶所對應方案的全部表
SQL> desc user_tables;
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLE_NAME NOT NULL VARCHAR2(30)
TABLESPACE_NAME VARCHAR2(30)
CLUSTER_NAME VARCHAR2(30)
IOT_NAME VARCHAR2(30)
STATUS VARCHAR2(8)
用於顯示當前方案的全部表信息
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
STUDENT
all_tables:用於顯示當前用戶能夠訪問的全部表,它不只會返回當前用戶方案的全部表
還會返回當前用戶能夠訪問的其餘方案的表
例:某個用戶受權某張表給指定用戶能夠查詢等操做
SQL> select table_name from all_all_tables;
dba_tables
它會顯示全部方案擁有的數據庫表,可是查詢這種數據庫字典視圖,要求用戶必須是dba角色
或是有select any table系統權限
例如:當用system用戶查詢數據庫字典視圖dba_tables時,會返回system、sys,scott。。。
方案所對應的數據庫表
使用system用戶
select table_name from dba_tables;
MYEMP
TEST
WRI$_ADV_OBJSPACE_TREND_DATA
MYTABLE
2729 rows selected
用戶名,權限,角色
在創建用戶時,oracle會把用戶的信息存放到數據字典中,當給用戶授予權限或是角色時
oracle會將權限和角色的信息存放到數據字典中
經過查詢dba_users能夠顯示全部數據庫用戶的詳細信息 --使用的system查詢
SQL> desc dba_users;
Name Null? Type
----------------------------------------- -------- ----------------------------
USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
PASSWORD VARCHAR2(30)
ACCOUNT_STATUS NOT NULL VARCHAR2(32)
LOCK_DATE DATE
EXPIRY_DATE DATE
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
CREATED NOT NULL DATE
PROFILE NOT NULL VARCHAR2(30)
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30)
EXTERNAL_NAME VARCHAR2(4000)
PASSWORD_VERSIONS VARCHAR2(8)
EDITIONS_ENABLED VARCHAR2(1)
AUTHENTICATION_TYPE VARCHAR2(8)
有字段是username,即數據庫用戶名,因而能夠查出數據庫有多少用戶
SQL> select username from dba_users;
USERNAME
------------------------------
SYS
SYSTEM
XIAOBAI
XIAOMING
SCOTT
OUTLN
MGMT_VIEW
經過查詢數據字典視圖dba_sys_privs,能夠顯示用戶所具備的系統權限
SQL> desc dba_sys_privs; 系統權限表
Name Null? Type
----------------------------------------- -------- ----------------------------
GRANTEE NOT NULL VARCHAR2(30)
PRIVILEGE NOT NULL VARCHAR2(40)
ADMIN_OPTION VARCHAR2(3)
SQL> select * from dba_sys_privs where grantee='SCOTT';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SCOTT UNLIMITED TABLESPACE NO
能夠查詢到每一個用戶所擁有的系統權限,以及他是否配置了with admin option
SQL> select * from dba_sys_privs where grantee='SYSTEM';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SYSTEM GLOBAL QUERY REWRITE NO
SYSTEM CREATE MATERIALIZED VIEW NO
SYSTEM CREATE TABLE NO
SYSTEM UNLIMITED TABLESPACE YES
SYSTEM SELECT ANY TABLE NO
經過查詢數據字典視圖dba_tab_privs,能夠顯示用戶具備的對象權限
SQL> desc dba_tab_privs;
Name Null? Type
----------------------------------------- -------- ----------------------------
GRANTEE NOT NULL VARCHAR2(30)
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
GRANTOR NOT NULL VARCHAR2(30)
PRIVILEGE NOT NULL VARCHAR2(40)
GRANTABLE VARCHAR2(3)
HIERARCHY VARCHAR2(3)
經過查詢數據字典dba_col_privs,能夠顯示用戶具備的列權限
SQL> desc dba_col_privs;
Name Null? Type
----------------------------------------- -------- ----------------------------
GRANTEE NOT NULL VARCHAR2(30)
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
GRANTOR NOT NULL VARCHAR2(30)
PRIVILEGE NOT NULL VARCHAR2(40)
GRANTABLE VARCHAR2(3)
經過查詢數據庫字典視圖dba_role_privs,能夠顯示用戶所具備的角色 ------》如何查看某個用戶,具備什麼樣的角色?
SQL> desc dba_role_privs;
Name Null? Type
----------------------------------------- -------- ----------------------------
GRANTEE VARCHAR2(30)
GRANTED_ROLE NOT NULL VARCHAR2(30)
ADMIN_OPTION VARCHAR2(3)
DEFAULT_ROLE VARCHAR2(3)
查詢Scott用戶具備的角色?
SQL> select granted_role from dba_role_privs where grantee='SCOTT';
GRANTED_ROLE
------------------------------
RESOURCE
CONNECT 惟獨的兩個角色
用戶system具備的角色
SQL> select granted_role from dba_role_privs where grantee='SYSTEM';
GRANTED_ROLE
------------------------------
AQ_ADMINISTRATOR_ROLE
MGMT_USER
DBA
一、如何查詢一個角色所包含的權限?
一個角色包含的系統權限 系統權限表爲dba_sys_privs
SQL> desc dba_sys_privs;
Name Type Nullable Default Comments
------------ ------------ -------- ------- ----------------------------------------------
GRANTEE VARCHAR2(30) Grantee Name, User or Role receiving the grant
grantee:值爲user或者role
查詢角色connect的系統權限?
SQL> select * from dba_sys_privs where grantee='CONNECT';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
CONNECT CREATE SESSION NO
因而系統權限create session就是可以登錄數據庫的權限,也就是connect角色
還有一張表:role_sys_privs角色系統權限表
SQL> desc role_sys_privs;
Name Null? Type
----------------------------------------- -------- ----------------------------
ROLE NOT NULL VARCHAR2(30)
PRIVILEGE NOT NULL VARCHAR2(40)
ADMIN_OPTION VARCHAR2(3)
一個角色包含的對象權限 對象權限表爲:dba_tab_privs
SQL> desc dba_tab_privs; 系統對象權限表
Name Null? Type
----------------------------------------- -------- ----------------------------
GRANTEE NOT NULL VARCHAR2(30)
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
GRANTOR NOT NULL VARCHAR2(30)
PRIVILEGE NOT NULL VARCHAR2(40)
GRANTABLE VARCHAR2(3)
HIERARCHY VARCHAR2(3)
SQL> select privilege from dba_tab_privs where grantee='CONNECT';
no rows selected
一個角色包含的權限來自於系統權限和對象權限
二、oracle究竟有多少種角色? 查詢表dba_roles
SQL> desc dba_roles;
Name Null? Type
----------------------------------------- -------- ----------------------------
ROLE NOT NULL VARCHAR2(30)
PASSWORD_REQUIRED VARCHAR2(8)
AUTHENTICATION_TYPE VARCHAR2(11)
SQL> select count(*) from dba_roles;
COUNT(*)
----------
55
SQL> select role from dba_roles;
ROLE
------------------------------
CONNECT
RESOURCE
DBA
SELECT_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
DELETE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
LOGSTDBY_ADMINISTRATOR
DBFS_ROLE
AQ_ADMINISTRATOR_ROLE
一共有55種角色
三、查詢oracle中全部的系統權限?
select * from system_privilege_map order by name;
SQL> desc system_privilege_map;
Name Null? Type
----------------------------------------- -------- ----------------------------
PRIVILEGE NOT NULL NUMBER
NAME NOT NULL VARCHAR2(40)
PROPERTY NOT NULL NUMBER
SQL> select count(*) from system_privilege_map;
COUNT(*)
----------
208
四、查詢oracle中全部對象權限?
select distinct privilege from dba_tab_privs;
五、查詢數據庫的表空間? 查詢表系統表空間dba_tablespaces
SQL> desc dba_tablespaces;
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLESPACE_NAME NOT NULL VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
PREDICATE_EVALUATION VARCHAR2(7)
ENCRYPTED VARCHAR2(3)
COMPRESS_FOR VARCHAR2(12)
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
顯示當前數據庫的全稱
select * from global_name;
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL11G.US.ORACLE.COM
顯示當前用戶能夠訪問的全部數據字典視圖
select * from dict where comments like '%grant%';
SQL> desc dict;
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(4000)
SQL> select * from dict where comments like '%grant%';
TABLE_NAME COMMENTS
------------------------------ --------------------------------------------------------------------------------
USER_AUDIT_STATEMENT Audit trail records concerning grant, revoke, audit, noaudit and alter system
USER_COL_PRIVS