Oracle数据字典内部结构

3 篇文章 0 订阅

Oracle 数据字典中有大量的关于所有类型的数据库用户的表和视图。

一、Oracle用户视图

        用户视图是在数据字典中的可以为全部用户所拥有的视图,一个用户对其它的用户只有CREATE SESSION 的权限,所有的用户都是这样。

1、查看用户

select * from user_users; 

--用户查看表设计
select * from user_users;

--all_users可以查看所有存在于数据库中的用户
select * from all_users;
USERNAMEUSER_IDDEFAULT_TABLESPACETEMPORARYTABLESPACECREATED
JSMITH29USERSTEMP14-MAR-97
USERNAMEUSER_IDCREATED
SYS001-JAN-97
SYSTEM501-JAN-97
SCOTT801-JAN-97
JSMITH1014-MAR-97
TJONES1115-MAR-97
VJOHNSON1215-MAR-97

        USER_USERS 视图可以查看ORACLE 中的 ID是如何设置的,显示其它用户的详细情况以及对用户的统计。默认的表大小和临时表的大小也可以被显示。默认的USER 的表的大小是指由该用户所创建的表的大小,临时表大小是对 JSMITH 所指定的进行排序和分组空间的大小。

        ALL_USERS 视图你可以看到所有存在于数据库中的用户,但是内容不会像user_users那么详细。

2、访问权限

--查看系统权限
select *from user_sys_privs;
USERNAMEPRIVILEGEADM
JSMITHUNLIMITED TABLESPACENO
JSMITHCREATE SESSIONNO

JSMITH已经被赋予两种权限:

UNLIMITED TABLESPACE//无限表空间权限, 允许用户在其他表空间随意建表。

CREATE SESSION//创建会话权限,允许用户登录数据库。

--查看用户自己拥有的系统权限
select *from user_role_privs;
usernamegranted_roleadmdefos_
JSMITHCONNECTNOYESNO
JSMITHRESOURCENOYESNO

3、访问内容

--查看用户视图
select * from user_catalog;
TABLE_NAMETABLE_TYPE
MAGAZINE_TBLTABLE
MAG_COUNTERSEQUENCE
MAG_VIEWVIEW
SPORTSTABLE

查看其他人拥有的表。

select * from all_catalog;

二、系统数据库管理员

1、用户访问DBA

select *
from USER_ROLE_PRIVS;

select * from sys.dba_roles;
--系统报错,显示表或者视图不存在,因为用户没有访问数据库管理员权限
USERNAMEGRANTED_ROLEADMDEFOS_
JSMITHCONNECTNOYESNO
JSMITHRESOURCENOYESNO

2、数据库用户信息

select * from sys.dba_users;
USERNAMEUSER_IDPASSWORD

DEFAULT

_TABLESPACE

TEMPORARY

_TABLESPACE

CREATEDPROFILE
SYS04012DA490794C16BSYSTEMTEMP06-JUN-96DEFAULT
JSMITH5A4A94B17405C10B7USERSTEMP06-JUN-96DEFAULT

        当选择了 DBA_USERS 视图中的所有内容,这个视图是 DBA 管理其它用户的重要视图。

三、数据库安全

        在数据字典中有三个基本的视图与数据库安全相关的,这三个视图与数据库的规则、规则对用户的授权以及系统权限对用户的授权相关。视图会在 DBA_ROLES、DBA_ROLE_PRIVS和DBA_SYS_PRIVS中介绍。

--视图 DBA_ROLES 给出了所有在数据库中创建的规则的信息。它给出的规则的名字以及规则是否存在密码
select * from sys.dba_roles;
ROLEPASSWORD
CONNECTNO
RESOURCENO
DBANO
EXP_FULL_DATABASENO
IMP_FULL_DATABASENO
END_USER_ROLENO
select * from dba_role_privs
where grant='RJENNINGS';
--DBA_ROLE_PRIVS 给出的关于赋给用户的数据库规则的信息
GRANTEEGRANTED_ROLEADMDEF
RJENNINGSCONNECTNOYES
RJENNINGSDBANOYES
RJENNINGSRESOURCENOYES

        第一列为被授权人,第二列显示了被授予的规则。用户所授予的每一个规则都会占用表中的一个记录。ADM 通过后边的 ADM 选项来确定这个规则是否是允许的,最后一列为默认,表明这个规则是否是用户的默认规则。

        DBA_SYS_PRIVS 给了所有授予用户的系统权限,这个视图与 DBA_ROLE_PRIVS 视图类似,可以通过把系统权限授予规则来把这些系统权限包括在规则中。

四、数据库对象

        数据字典中有几个视图提供有关数据库对象如表、索引的信息,通常这些视图你可以获得常用的信息或详细的信息。

1、DBA_CATALOG

--DBA_CATALOG 所做的事与 USER_CATALOG 是一样的,只显示了所有者的表。
select * from sys.dba_catalog
where rownum<5;
OWNERTABLE_NAMETABLE_TYPE
SYSCDEF$TABLE
SYSTAB$TABLE
SYSIND$TABLE
SYSCLU$TABLE

        USER_CATALOG 则用于显示当前用户的表,用 DBA_CATALOG 视图 DBA 可 以快速地查看所有的表。

2、DBA_OBJECTS

dba_objects对于特定的数据库都存在哪种类型的对象。

select distinct(object_ytpe)
from sys.dba_objects;

        DISTINCT 功能可以让存在于数据库中的对象只出现一。

3、DBA_TABLES

--DBA_TABLES 视图给出了关于数据库表和大多数与存储有关的数据库对象的信息
select substr(OWNER,1,8) owner
    substr(TABLE_NAME,1,25) TABLE_NAME,
    substr(TABLESPACE_NAME,1,30) TABLESPACE_NAME
from SYS.DBA_TABLES
where OWNER='JSMITH';
OWNERTABLE_NAMETABLESPACE_NAME
JSMITHMAGAZINE_TBLUSERS
JSMITHHOBBY_TBLUSERS
JSMITHADDRESS_TBLSYSTEM
JSMITHCUSTOMER_TBLUSERS

4、DBA_SYNONYMS

        DBA_SYNONYMS 给出了所有存在于数据库中的同义字的清单。DBA_SYNONYMS 给出了所有数据库用户的同义字清单,USER_SYNONYMS是给出了当前 用户私有的同义字。

SELECT SYNONYM_NAME,
    SUBSTR(TABLE_OWNER,1,10) TAB_OWNER,
    SUBSTR(TABLE_NAME,1,30) TABLE_NAME
FROM SYS.DBA_SYNONYMS
WHERE OWNER = 'JSMITH';

5、DBA_INDEXS

        DBA_INDEXS得到所有的 JSMITH 的表和索引的清单。

SELECT SUBSTR(TABLE_OWNER,1,10) TBL_OWNER,
    SUBSTR(TABLE_NAME,1,30) TABLE_NAME,
    SUBSTR(INDEX_NAME,1,30) INDEX_NAME
FROM SYS.DBA_INDEXES
WHERE OWNER = 'JSMITH' AND ROWNUM < 5
ORDER BY TABLE_NAME;

        DBA_IND_COLUMNS工程/计划的记录集

SELECT SUBSTR(TABLE_NAME,1,15) TABLE_NAME,
    SUBSTR(INDEX_NAME,1,30) INDEX_NAME,
    SUBSTR(COLUMN_NAME,1,15) COLUMN_NAME,
    COLUMN_POSITION
FROM SYS.DBA_IND_COLUMNS
WHERE TABLE_OWNER = 'JSMITH'
AND ROWNUM < 10
ORDER BY 1,2,3;
    

6、DBA_TABLESPACES视图

        DBA_TABLESPACES 视图执行一个查询来查看所有的表空间以及状态。

SELECT TABLESPACE_NAME, STATUS
FROM SYS.DBA_TABLESPACES;

7、DBA_TS_QUOTAS

        DBA_TS_QUOTAS可以用来查看JSNITH还有多少空间存储数据库对象。

SELECT TABLESPACE_NAME,BYTES,MAX_BYTES
FROM SYS.DBA_TS_QUOTAS
WHERE USERNAME='JSMITH';

五、数据库空间

 1、数据库增长

        有两个视图可以对管理数据库的生长情况进行控制。

1.1  DBA_SEGMENTS

        DBA_SEGMENTS 提供了关于每一段或数据对象如存储分配,空间使用和扩展的信息。次当表和索引的增长超过了预先的指定就会开始下一次的扩展。采用这种方式会产生存储空间碎片化。

select substr(SEGMENT_NAME,1,20) SEGMENT_NAME,
    substr(SEGMENT_TYPE,1,12) SEGMENT_TYPE,
    bytes,
    extents
from sys.DBA_SEGMENTS
where OWNER = 'TWILLIAMS'
and ROWNUM < 5;

1.2  DBA_EXTENTS会给出段每次扩展的信息。

select SUBSTR(OWNER,1,10) OWNER,
    substr(SEGMENT_NAME,1,30) SEGMENT_NAME,
    extent_id,
    bytes
from sys.DBA_EXTENTS
where OWNER = 'TWILLIAMS'
and SEGMENT_NAME = 'INVOICE_TBL'
order by EXTENT_ID;

        在扩展次数太多,需要重建数据库并重新生成表并增加 initial_extent 的大小以优化空间的使用,重新生成表将后,将原表中的数据释放一个单一的片断中, 会造成碎片化

3、空间分配

        视图 DBA_DATA_FILES 可以让你看到表空间的实际分配。

select substr(TABLESPACE_NAME,1,25) TABLESPACE_NAME,
    substr(FILE_NAME,1,40) FILE_NAME,
    bytes
from sys.DBA_DATA_FILES;

4、可用空间

        DBA_FREE_SPACE 视图可以告诉你在每个表格空中 还有多少自由的空间可以使用。

select TABLESPACE_NAME, sum(BYTES)
from sys.DBA_FREE_SPACE
group by TABLESPACE_NAME;

5、ROLLBACK 段

        视图 DBA_ROLLBACK_SEGS可以查看事务所预留的 ROLLBACK 区域。

select OWNER,SEGMENT_NAME
from sys.DBA_ROLLBACK_SEGS;

六、动态执行视图

1、会话信息

        对 V$SEEEION 视图执行 DESCRIBE命令,可以查看视图的详细内容。

describe V$SESSION

        查看当前数据会话信息。

select USERNAME, COMMAND, STATUS
from V$SESSION
where USERNAME is not null;

2、运行统计

        对用户的会话进行统计,包括执行的统计包括如数据库读写速率、对表的成功命中、系统全局区域的使用、内存缓冲的使用、ROLLBACK 的详细信息、事务历史记录的详细信息以及表的锁定和等待情况。

3、计划表

        计划表是 ORACLE 的 SQL 语言工具所使用的默认表,EXPLAIN PLAN表是由被称为 UTLXPLAN.SQL 的 ORACLE 脚本所创建的。当软件被安装时拷贝到的服务器上,数据是由 EXPLAIN PLAN 工具来产生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值