[转]Oracle DB 性能视图和数据字典

  • 动态性能视图

用于访问实例内存结构不断变化的状态信息。

在Oracle DB
中还维护着一个关于数据库实例操作和性能的动态数据集。这些动态性能视图以基于数据库服务器内部的内存结构构建的虚拟表为基础。也就是说,这些视图不是驻留在数据库中的传统意义上的表。这就是为什么部分视图在数据库装载或打开之前就能够使用的原因。

动态性能视图包含下列信息:

? 会话

? 文件状态

? 作业和任务的进度

? 锁

? 备份状态

? 内存使用率和内存分配

? 系统参数和会话参数

?SQL 执行

? 统计数据和度量

注:DICT
和DICT_COLUMNS视图也包含这些动态性能视图的名称。动态性能视图以前缀“v$”开头,其数量超过590。

  • 动态性能视图:用法示例

经常使用这些视图的是Enterprise Manager ,但其他用户也可以根据需要查询这些视图。

1. 哪些SQL 语句(及其相关的执行编号)所占用的CPU 时间大于200,000 微秒?

SQL> SELECT sql_text, executions
FROM v$sql    WHERE
cpu_time > 200000;

2. 在前一天内,哪些当前会话从EDRSR9P1 计算机登录?

SQL> SELECT *
FROM v$session WHERE machine
= ‘EDRSR9P1‘ and logon_time > SYSDATE - 1;

3. 当前持有阻止其他用户的锁的那些会话的会话ID 是什么?这些锁已持有多长时间?

SQL> SELECT sid, ctime
FROM v$lock WHERE block >
0;

  • 动态性能视图:注意事项

? 这些视图由SYS 用户所有。

? 不同场合可使用的视图也不同:

– 实例已启动。

– 数据库已装载。

– 数据库已打开。

? 可以通过查询V$FIXED_TABLE 查看所有视图名称。

? 这些视图通常称为“v$ 视图”。

? 因为其数据是动态的,所以在这些视图上不能保证读取一致性。

某些动态视图包含的数据并不适用于实例或数据库的所有状态。例如,如果实例刚启动,但未装载任何数据库,则可以通过查询V$BGPROCESS
来查看正在运行的后台进程的列表。但无法通过查询V$DATAFILE查看数据库数据文件的状态,因为要通过装载数据库来读取控制文件,此后才能找出数据库关联的数据文件。

一些V$视图包含的信息类似于相应DBA_
视图中的信息。例如,V$DATAFILE类似于DBA_DATA_FILES。另请注意,V$视图名称通常是单数形式,而DBA_
视图名称是复数形式。

  • 数据字典:概览

Oracle
 数据字典是数据库的元数据,其中包含数据库中所有对象的名称和属性。创建或修改任何对象都会引起数据字典的更新,以反映这些更改。这些信息存储在由Oracle
DB 维护的基表中,不过,可使用预定义视图访问这些表(而不是直接读取表)。

数据字典:

? 由Oracle DB 服务器使用,可用于查找关于用户、对象、约束条件和存储的信息

? 对象结构或定义修改时,Oracle DB 将做出相应维护

? 可供任意用户使用以查询关于数据库的信息

? 由SYS 用户拥有

? 不得使用SQL 直接进行修改

注:DICTIONARY数据字典视图(或其DICT
同义词)包含数据字典表和视图的名称和说明。使用DICT_COLUMNS视图可查看视图列及其定义。

  • 数据字典视图

视图前缀指示给定用户可以看到的数据(以及数据量)。

只有拥有DBA 权限的用户才可访问包含所有对象的全局视图(带DBA_ 前缀)。

下一个权限级别是ALL_ 前缀级别,它表示查询用户有权查看的所有对象,无论用户是否拥有这些对象。例如,如果USER_A
被授权访问属于USER_B 的表,那么USER_A 会看到该表列在与表名有关的所有ALL_ 视图中。

前缀USER_代表最小的可见范围。该类型的视图只显示属于查询用户的那些对象(即存在于用户自己方案中的对象)。

一般情况下,每个视图集都是拥有更高权限的视图集的子集,无论按行还是按列。并非给定视图集中的所有视图都在其它视图集中有对应的视图。这取决于视图中信息的性质。

例如,有一个DBA_LOCK 视图,但是并不存在ALL_LOCK 视图。这是因为只有DBA
才关注有关锁的数据。为了满足需要,应确保选择适当的视图集。即便你有权访问DBA 视图,也可能只想查询USER
版本的视图,因为结果会显示你所拥有的对象的相关信息,而你可能不希望结果集中包含其他对象。

DBA_ 视图只能由拥有SYSDBA 或SELECT ANY DICTIONARY 权限的用户查询。

并非所有字典视图都以前缀DBA_、ALL_ 和USER_开头。以下视图或视图的同义词就是

例外:

? AUDIT_ACTIONS

? CAT

? CHANGE_PROPAGATIONS

? CHANGE_PROPAGATION_SETS

? CHANGE_SETS

? CHANGE_SOURCES

? CHANGE_TABLES

? CLIENT_RESULT_CACHE_STATS$

? CLU

? COLS

? COLUMN_PRIVILEGES

? DATABASE_COMPATIBLE_LEVEL

? DBMS_ALERT_INFO

? DBMS_LOCK_ALLOCATED

? DICT

? DICTIONARY

? DICT_COLUMNS

? DUAL

? GLOBAL_NAME

? IND

? INDEX_HISTOGRAM

? INDEX_STATS

? LOGSTDBY_UNSUPPORTED_TABLES

? NLS_DATABASE_PARAMETERS

? NLS_INSTANCE_PARAMETERS

? NLS_SESSION_PARAMETERS

? OBJ

? RECYCLEBIN

? RESOURCE_COST

? ROLE_ROLE_PRIVS

? ROLE_SYS_PRIVS

? ROLE_TAB_PRIVS

? SEQ

? SESSION_PRIVS

? SESSION_ROLES

? SM$VERSION

? SYN

? TABLE_PRIVILEGES

? TABS

  • 数据字典:用法示例

1. 方案中已创建的表的名称(以及表所在表空间的名称)是什么?

SELECT table_name, t
ablespace_name FROM user_tables;

2. 在你有权访问的数据库中,关于序列的重要信息是什么?

SELECT sequence_name, min_value,
max_value, increment_by FROM all_sequences WHERE
sequence_owner IN (‘MDSYS‘,‘XDB‘);

3. 此数据库中当前可以登录的用户是哪些?

SELECT USERNAME,
ACCOUNT_STATUS FROM dba_users WHERE
ACCOUNT_STATUS = ‘OPEN‘;

4. DBA_INDEXES 视图的列是什么?这显示了你可以查看数据库中所有索引的哪些信息。

DESCRIBE dba_indexes

下面列出了此命令的部分输出:

SQL> DESCRIBE dba_indexes

Name            Null?    Type

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

OWNER           NOT NULL VARCHAR2(30)

INDEX_NAME      NOT NULL VARCHAR2(30)

INDEX_TYPE              
VARCHAR2(27)

TABLE_OWNER     NOT NULL VARCHAR2(30)

TABLE_NAME      NOT NULL VARCHAR2(30)

  • 启用数据字典保护

你可以通过设置初始化参数O7_DICTIONARY_ACCESSIBILITY 为false来保护数据字典。

此参数可以防止用户(拥有任何系统权限即是在SYS模式对象的权限的用户)来使用这些数据字典。

oracle数据库提供高度细化的权限。

一个这样的特权,通常所说的任何特权,通常授予唯一的应用程序的owners和个人的数据库管理员。

例如,可以授予DROP ANY
TABLE 的权限给一个应用程序所有者,通过打开或关闭的07_DICTIONARY_ACCESSIBILITY初始化参数,免遭意外或恶意使用的任何特权,可以保护Oracle数据字典。

启用数据字典保护工作流

  1. 使用em登陆到Oracle Enterprise Manager Database Control (Database Control).

  2. 点击Server"服务器",点击Initialization
    Parameters“初始化参数”。

  3. 搜索O7_DICTIONARY_ACCESSIBILITY这个参数。

  4. 将 O7_DICTIONARY_ACCESSIBILTY 设置为FALSE。

5.点击应用,然后重启数据库。

O7_DICTIONARY_ACCESSIBILITY参数:

O7_DICTIONARY_ACCESSIBILITY控制对系统权限的限制。如果该参数被设置为true时,sys模式中的对象都可以访问数据字典。默认设置为false,确保系统权限被允许访问其他任何模式,而不能访问sys模式。

例如,O7_DICTIONARY_ACCESSIBILITY设置为false,那么 SELECT
ANY
TABLE
 的权限允许访问除了sys模式(数据字典不能被访问)中任何视图或表。系统权限EXECUTE
ANY PROCEDURE ,可以访问任何模式除了sys模式。

如果这个参数设置为falise,你需要访问在sys模式的对象,那么必须明确授予对象权限。以下角色,可以授予数据库管理员,也允许访问字典对象:

  • SELECT_CATALOG_ROLE

  • EXECUTE_CATALOG_ROLE

  • DELETE_CATALOG_ROLE

来源:http://blog.csdn.net/rlhua/article/details/12710613

[转]Oracle DB 性能视图和数据字典,布布扣,bubuko.com

时间: 2024-10-25 22:30:13

[转]Oracle DB 性能视图和数据字典的相关文章

oracle 报警日志、动态性能视图及数据字典

1.查看报警日志 /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log 实时日志:tail -f  /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log 跟踪文件 ADR 2.动态性能视图(v$) 保存在内存中 用来访问 实例 内存结构的不断变化的状态的信息(控制文件+实例) session data wait events memory allocations Runni

Oracle_高级功能(7) 数据字典视图和动态性能视图

oracle数据字典 1.概念数据字典是oracle数据库用来存储数据库结构信息的地方.数据字典是用来描述数据库数据的组织方式的,由表和视图组成.数据字典基表是在任何 Oracle 数据库中创建的第一批对象.所有数据库的数据字典表和视图都存储在SYSTEM表空间中.由于当数据库打开时,SYSTEM 表空间始终处于联机状态 ,所以当数据库打开时,数据字典总是可用的.Oracle数据库的SYS用户,拥有数据字典中的所有基表和用户可访问视图.数据字典基表中的数据,对于Oracle 数据库发挥正常功能是

Oracle数据字典和动态性能视图

Oracle数据字典和动态性能视图,布布扣,bubuko.com

十三、oracle 数据字典和动态性能视图

一.概念数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息.动态性能视图记载了例程启动后的相关信息. 二.数据字典1).数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户.2).用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的.3).这里我们谈谈数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表.数据字典视图是基于数据字典基表所建

Oracle的基本操作-数据字典和动态性能视图的介绍

三.数据字典和动态性能视图的介绍 1. 数据库的数据字典 (1) DBA_   全库所有的某种对象的数据字典       只有系统用户才有权限查询 (2) ALL_   当前用户创建的对象 + 其他用户授予当前用户使用的对象       当前用户 (3) USER_  当前用户创建的对象       当前用户 操作实例:解锁一个用户hr并改密码SQL> alter user hr account unlock; User altered. SQL> alter user hr identifi

[转]Oracle DB 通过SQL 优化管理性能

? 将SQL 优化指导用于: – 确定使用资源最多的 SQL 语句 – 优化使用资源最多的 SQL 语句 ? 使用SQL 访问指导优化工作量 SQL 优化 SQL 优化进程 ? 确定没有很好地优化的SQL 语句. ? 优化各条语句. ? 优化整个应用程序. 一般情况下,效果最明显的优化工作是SQL 优化.没有很好地优化的SQL 会不必要地使用过多资源.这种低效率会降低可伸缩性.使用更多的OS 和数据库资源并增加响应时间.要对没有很好地优化的SQL 语句进行优化,必须先确定这些语句,然后再进行优化

数据字典和动态性能视图<五>

数据字典和动态性能视图 介绍:数据字典是什么 数据字典是 oracle 数据库中最重要的组成部分,它提供了数据库的一些系统信息. 动态性能视图记载了例程启动后的相关信息. ? 数据字典 数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为 sys 用户. 用户只能在数据字典上执行查询操作(select 语句),而其维护和修改是由系统自动完成的. 这里我们谈谈数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不 能直接访问数据字典的

[转]Oracle DB 管理ASM实例

? 描述使用ASM 的好处 ? 管理ASM 实例 ? 创建和删除ASM 磁盘组 ? 扩展ASM 磁盘组 ? 通过使用各种实用程序检索ASM 元数据 Automatic Storage Management Automatic Storage Management (ASM) 将文件系统与卷管理器纵向集成在一起,这是一项专门为Oracle DB 文件建立的技术.使用ASM 可管理单个对称多处理(SMP) 计算机,或通过管理集群的多个节点来支持Oracle Real Application Clus

ORACLE数据库性能优化之-->内存磁盘

1,内存结构优化概述 1.1 缓冲区 影响数据库运行性能的缓冲区包括可以共享的SGA和服务器进程私有的pga两大类,其中sga又包括共享池.大型池.java池.数据缓冲区.流池.redo log缓冲区. 1.2 自动内存管理 oracle一般采用自动内存管理来管理系统内存,由oracle自动管理和调整数据库实例的内存大小.在自动管理模式下,首先对初始化参数MEMORY_TARGET(目标内存大小)和MEMORY_MAX_TARGET(最大内存大小)进行配置,数据库调整目标内存大小,根据需要不断重