数据字典和动态性能视图(一)

2014-11-24 09:26:03 · 作者: · 浏览: 0

数据字典记载了数据库的系统信息,它是只读表和视图的集会。数据字典包含数据字典基表和数据字典视图两部分,其中,基表存储数据库的基本信息,普通用户不能之间访问数据字典基表;数据字典视图是基于数据字典基表建立的视图,普通用户可以通过查询数据字典视图取得系统信息。数据字典视图主要包括USER_XXX,ALL_XXX,DBA_XXX三种类型。

常用数据字典

DICT用于显示当前用户可访问的所有数据字典视图,并给出了这些数据字典视图的作用。

DICT_COLUMNS用于显示数据字典视图的每个列的作用。

DUAL用于取得函数的返回值。

GLOBAL_NAME用于显示当前数据库的全名。

IND用于显示当前用户所拥有的所有索引和索引的统计信息。

OBJ用于显示当前用户所拥有的所有对象。

SEQ用于显示当前用户所拥有的所有序列。

SYN用于显示当前用户所拥有的同义词和同义词所对应的数据库对象名。

TAB用于显示当前用户所用于的表,视图和序列。



动态性能视图用于记录当前例程的活动信息。启动例程时,oracle会自动建立动态性能视图;停止例程时,oracle会自动删除动态性能视图。需要注意的时,数据字典的信息时从数据文件中取得,而动态性能视图时从SGA和控制文件中取得。通过查询动态性能视图,一方面可以获得性能数据,另一方面可以取得与磁盘和内存结构相关的其他信息。所有的动态性能视图都是以V_$开始的,oracle为每个动态性能视图提供了相应的同义词(以V$开始)

V$FIXED_TABLE用于列出所有可用的动态性能视图和动态性能表。

V$INSTANCE用于获取当前例程的详细信息。

V$SGA用于取得SGA更详细的信息。

V$PARAMETER用于取得初始化参数的详细信息。

V$VERSION用于取得oracle版本的详细信息。

V$OPTION 用于显示已经安装的oracle选项。其中,TRUE表示该选项已经安装,FALSE表示该选项没有安装。


V$SESSION 用于显示会话的详细信息。


V$PROCESS 用于显示与oracle相关的所有进程的信息(包括后台进程和服务器进程)。


V$BGPROCESS 用于显示后台进程的详细信息。


V$DATABASE 用于取得当前数据库的详细信息(如数据库名,日志模式以及建立时间)。


V$CONTROLFILE 用于取得当前数据库所有控制文件的信息。


V$DATAFILE 用于取得当前数据库所有数据文件的详细信息。


V$DBFILE 用于取得数据文件编号及名称。


V$LOGFILE 用于显示重做日志成员的信息。


V$LOG 用于显示日志组的详细信息。


V$THREAD 用于取得重做线程的详细信息。


V$LOCK 用于显示锁信息。


V$LOCKED_OBJECT 用于显示被加锁的数据库对象。


V$ROLLNAME和V$ROLLSTAT

V$ROLLNAME动态性能视图用于显示处于online状态的undo段,而V$ROLLSTAT用于显示undo段统计信息。通过在二者之间执行连接查询,可以显示undo段的详细统计信息。


V$TABLESPACE 用于显示表空间的信息。


V$TEMPFILE用于显示当前数据库所包含的临时文件。

2.

常用DBA管理脚本

一、数据库构架体系

1、表空间的监控是一个重要的任务,我们必须时刻关心表空间的设置,是否满足现在应用的需求,以下的语句可以查询到表空间的详细信息

SELECT TABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,
MAX_EXTENTS,PCT_INCREASE,MIN_EXTLEN,STATUS,
CONTENTS,LOGGING,
EXTENT_MANAGEMENT, -- Columns not available in v8.0.x
ALLOCATION_TYPE, -- Remove these columns if running
PLUGGED_IN, -- against a v8.0.x database
SEGMENT_SPACE_MANAGEMENT --use only in v9.2.x or later
FROM DBA_TABLESPACES
ORDER BY TABLESPACE_NAME;



2、对于某些数据文件没有设置为自动扩展的表空间来说,如果表空间满了,就将意味着数据库可能会因为没有空间而停止下来。监控表空间,最主要的就是监控剩余空间的大小或者是使用率。以下是监控表空间使用率与剩余空间大小的语句

SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)",
ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2) "USED_RATE(%)",FREE_SPACE "FREE_SPACE(M)"
FROM
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL --if have tempfile
SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,
USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",
NVL(FREE_SPACE,0) "FREE_SPACE(M)"
FROM
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,
ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

3、除了监控表空间的剩余空间,有时候我们也有必要了解一下该表空间是否具有自动扩展空间的能力,虽然我们建议在生产系统中预先分配空间。以下语句将完成这一功能



SELECT T.TABLESPACE_NAME,D.FIL