数据字典

select * from dictionary;

--数据字典

数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。

比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。

数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中

当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。

用户可以用SQL语句访问数据库数据字典。

数据字典内容包括:

1,数据库中所有模式对象的信息,如表、视图、簇、及索引等。

2,分配多少空间,当前使用了多少空间等。

3,列的缺省值。

4,约束信息的完整性。

5,Oracle用户的名字。

6,用户及角色被授予的权限。

7,用户访问或使用的审计信息。

8,其它产生的数据库信息。

Oracle中的数据字典有静态和动态之分。

1,静态数据字典-->主要是在用户访问数据字典时不会发生改变的,

--例如某用户创建的表

2,动态数据字典-->是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。

--当前锁住的对象

静态数据字典:这类数据字典主要是由表和视图组成

数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。

静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。

user_*

该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)

all_*

该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)

dba_*

该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)

-----------------------------------------------------------------------------------------------------------

select * from dictionary;

--查询该用户拥有哪些表

--user_tables主要描述当前用户拥有的所有表的信息,

----主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些

desc user_tables;

select table_name from user_tables;

select * from user_tables;

--查询该用户拥有哪些索引

select index_name from user_indexes;

--查询该用户拥有哪些视图

select view_name from user_views;

--查询该用户拥有哪些数据库对象,对象包括表、

视图、存储过程、触发器、包、索引、序列、JAVA文件等。

select object_name from user_objects;

--主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。

select * from user_users;

-----------------------------------------------------------------------------------------------------------

--user_/all_区别:

----all_列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。

--查询某一用户下的所有表、过程、函数等信息。

select owner , object_name ,object_type from all_objects

-----------------------------------------------------------------------------------------------------------

--对于dba_开头的需要管理员权限,

--查询表空间的信息(当前用户必须拥有DBA角色)。

select * from dba_data_files

-----------------------------------------------------------------------------------------------------------

动态数据字典

Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。

Oracle中这些动态性能视图都是以v$开头的视图.

v$access

该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。

select * from v$access

v$session

该视图列出当前会话的详细信息。

v$active_instance

该视图主要描述当前数据库下的活动的实例的信息。依然可以使用select语句来观察该信息。

v$context

该视图列出当前会话的属性信息。比如命名空间、属性值等

-----------------------------------------------------------------------------------------------------------------------
查询出一个表的所有字段信息,包括字段名、字段类型、字段长度、是都允许空值等等。

select * from user_tab_columns c where c.table_name = upper('表名字')
-----------------------------------------------------------------------------------------------------------------------
oracle 怎么查看一个数据库中有几个表空间?以及这些表空间的名字?

oracle数据库tabs查看表空间名字
select distinct TABLESPACE_NAME from tabs
查看几个表空间
select count(distinct TABLESPACE_NAME) from tabs
-----------------------------------------------------------------------------------------------------------------------
表空间是oracle数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空

间。表空间在物理上体现为磁盘数据文件,每一个表空间由一个或多个数据文件组成,一个数据文件只可与一个表空间相联系,这是逻辑与物理的统一。
-------------------------------------------------------------------------------------------------------------------------
查看Oracle数据库中数据文件信息的命令方法:
通过查询数据库系统中的数据字典表(data dictionary tables)获取数据文件的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句
select
b.file_name 物理文件名,
b.tablespace_name 表空间,
b.bytes/1024/1024 大小M,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name
---------------------------------------------------------------------------------------------------------------------------
当表空间的利用率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100%时,将产生空间不够的错误。
---------------------------------------------------------------------------------------------------------------------------
查看对应用户下的所有表:
查询所有表的信息 select * from dba_tables 如:select t.* from dba_tables t where owner='TE'
查看对应表空间下的所有表:select t.* from dba_tables t where t.tablespace_name='TE'





相关文档
最新文档