每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统schema里来展示的。
Oracle的数据字典是Oracle数据库安装之后,自动创建的一系列数据库对象。数据字典是Oracle数据库对象结构的元数据信息。熟悉和深入研究数据字典对象,可以很大程度的帮助我们了解Oracle内部机制。
Oracle字典视图包括四个层次,分别为X$内部表、基础数据字典表、数据字典视图和动态性能视图。

数据字典有四类

1内部RDBMS(X$)表
X$表是Oracle数据库的核心部分,这些表用于跟踪内部数据库信息,维持数据库的正常运行,X$表是加密命名的,而且Oracle不做文档说明,这部分知识是ORACLE公司的技术机密,ORACLE公司通过这些X$建立起其它大量视图提供用户查询管理数据库之用。
内部X$表可以用v$fixed_table来查询 2基础数据字典表,也叫基表(underlying tables)
数据字典表和用户创建的表没有什么区别,数据字典表里的数据是Oracle系统存放的系统数据,而普通表存放的是用户的数据。为了方便的区别这些表,这些表的名字都是用"$"结尾,这些表属于SYS用户。
数据字典表由$ORACLE_HOME/rdbms/admin/sql.bsq 脚本创建, 这个脚本里又调用了其他的脚本来创建这些数据字典表。 在那些创建脚本里有基表的创建SQL。
Oracle 对数据字典表的说明:
These underlying tables store information about the database. Only Oracle Database should write to and read these tables. Users rarely access the base tables directly because they are normalized and most data is stored in a cryptic format.
这些数据字典表,只有Oracle 能够进行读写。
SYS用户下的这些数据字典表,存放在system 表空间下面,表名都用"$"结尾,为了便于用户对数据字典表的查询, Oracle对这些数据字典都分别建立了用户视图,这样即容易记住,还隐藏了数据字典表表之间的关系,Oracle针对这些对象的范围,分别把视图命名为DBA_XXXX, ALL_XXXX和USER_XXXX。

注意:在创建数据库时会运行两个脚本。先运行catalog.sql,该脚本用来创建数据库的内部字典表。然后再运行catrpoc.sql,该脚本用来创建数据库内建的存储过程、包等pl\sql对象。如果我们是使用dbca来创建数据库,则dbca会自动调用这两个脚本。否则在执行create database命令来创建时,则需要手工运行这两个脚本。
3数据字典视图
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。
这些视图由SYS用户创建的,所以使用需要加上SYS,为了方便, Oracle为每个数据字典表的视图头建立了同名字的公共同义词(public synonyms). 这样简单的处理就省去了写sys.的麻烦。
除了静态数据字典中三类视图,其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或GV$开头的。这些视图会不断的进行更新,从而提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
user_对象视图:描述了当前用户schema下的对象;
all_对象视图:描述了当前用户有权限访问到的所有对象的信息;
dba_对象视图:包括了所有数据库对象的信息;
4动态性能(V$)视图
V$视图是基于X$虚拟视图的。V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_和ALL_视图,但不能看到DBA_视图。与DBA_,ALL,和USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。
动态性能表用于记录当前数据库的活动,只存于数据库运行期间,实际的信息都取自内存和控制文件。 DBA可以使用动态视图来监视和调节数据。

动态性能视图概述

所谓动态性能视图,就是指将内存里的数据或控制文件里的数据以表的形式展现出来。他们实际都是虚拟表,并不是真正的表。只不过是为了能够让我们更好的管理数据库的性能,所以将内存里的活动情况以表的形式展现出来。只要数据库还在运行,就会不断更新动态性能视图。一旦数据库关闭或崩溃,动态性能视图里的数据就会全部丢失,下次重启时则会重新计算。就像所有的数据字典的名词都存在 dictionary里一样,v$fixed_table里存放了所有的动态性能视图的名称。所有的动态性能的属主都是sys,且都以v_$开头,创建同名词时则都以v$开头。

静态数据字典视图

数据字典视图非常多,我们无法一一记住,但是有个视图,我们必须知道,那就是dictionary视图,该视图里记录了所有的数据字典视图的名称。所以当我们需要查找某个数据字典而又不知道这个信息在哪个视图里的时候,就可以在dictionary视图里找。该视图还有个同名词dict。下面我们来追踪下dba_synonyms
SQL> desc dict
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(4000) SQL> select * from dict where table_name like '%DICT%';
SQL> select count(*) from dict; COUNT(*)
----------
2553 SQL> select * from dict where table_name like '%SYNONYM%';
TABLE_NAME COMMENTS
------------------------------ -----------------------------------------------------------------
USER_SYNONYMS The user's private synonyms
ALL_SYNONYMS All synonyms for base objects accessible to the user and session
DBA_SYNONYMS All synonyms in the database 在DBA_SYNONYMS验证下dba_synonyms是否为同名词
SQL> select OWNER,SYNONYM_NAME,TABLE_NAME from dba_synonyms;
果然,DBA_SYNONYMS为DBA_SYNONYMS表的同名词。 继续查找dba_objects验证DBA_SYNONYMS为何种对象。
SQL> column object_name format a30
SQL> select OWNER,OBJECT_NAME,OBJECT_TYPE from dba_objects where OBJECT_NAME='DBA_SYNONYMS'; OWNER OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------------------ -------------------
SYS DBA_SYNONYMS VIEW
PUBLIC DBA_SYNONYMS SYNONYM
可以看出,DBA_SYNONYMS为sys用户下的视图,继续查找dba_views查看DBA_SYNONYMS的具体定义。
SQL> select VIEW_NAME,TEXT from dba_views where VIEW_NAME='DBA_SYNONYMS'; VIEW_NAME TEXT
------------------------------ --------------------------------------------------------------------------------
DBA_SYNONYMS select u.name, o.name, s.owner, s.name, s.node
from sys.user$ u, sys.syn$ s, sys
可以看到,DBA_SYNONYMS是基于sys用户下的user$和syn$这两张数据字典表创建的视图。
这里也就验证了,我们前面所说的数据字典组织方式:先基于数据字典创建数据字典视图,然后在基于数据字典视图创建同名词,并将该同名词赋给了PUBLIC,从而使得所有用户都可以通过同名词查看数据字典信息。 下面以v$session为例进行追踪
SQL> select OWNER,SYNONYM_NAME,TABLE_NAME from dba_synonyms where SYNONYM_NAME='V$SESSION'; OWNER SYNONYM_NAME TABLE_NAME
------------------------------ ------------------------------ ------------------------------
PUBLIC V$SESSION V_$SESSION
查看V_$SESSION的对象类型和属主
SQL> select OWNER,OBJECT_NAME,OBJECT_TYPE from dba_objects where OBJECT_NAME='V_$SESSION'; OWNER OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------------------ -------------------
SYS V_$SESSION VIEW
这里可以知道V_$SESSION是视图,查看该视图的具体定义。
SQL> select TEXT from dba_views where VIEW_NAME='V_$SESSION';
可以看到v_$session视图是基于与动态性能视图v$session视图创建的,而动态性能视图的定义信息记录在v$fixed_view_definition里面
select VIEW_DEFINITION from v$fixed_view_definition where VIEW_NAME='V$SESSION';
可以看到动态性能视图v$session是基于动态性能视图gv$session视图创建的,继续追踪
select VIEW_DEFINITION from v$fixed_view_definition where VIEW_NAME='GV$SESSION'
可以看到gv$session是的最终定义信息是来自于x$ksuse s和x$ksle,这些表是动态性能视图的基表。但是这些表都是内存表,表中的数据不会存在数据文件中,只存在内存中。

静态数据字典表和视图

数据字典表不能直接访问,但可以通过数据字典视图来访问

动态性能视图
因为它们持续的更新,只要数据库打开在用的话

select * from dictionary;

select * from v$fixed_table;

select * from dba_synonyms;

#################################################
-------------------------

select * from resource_cost;
select * from resource_map;
select * from resource_view;

-----------------------
select * from dictionary;
select * from dict;
select * from dict_columns where table_name like '%PROFILE%';
select * from dba_profiles;
-----------------------

IND is a synonym for USER_INDEXES
OBJ is a synonym for USER_OBJECTS
SYN is a synonym for USER_SYNONYMS
TABS is a synonym for USER_TABLES
select * from ind;

select * from dba_synonyms
where synonym_name like '%TAB%';

-----------------------
select * from session_privs;
select * from session_roles;

select * from role_role_privs;
select * from role_sys_privs;
select * from role_tab_privs;
-----------------------
select * from dba_sys_privs;

select * from V$OBJECT_PRIVILEGE
where object_type_name='TABLE';

select * from dba_tab_privs;
-----------------------

select * from table_privilege_map;
select * from system_privilege_map;
----------------------

select * from sys_objects;

select * from dba_free_space;
select * from dba_undo_extents;
select * from dba_rollback_segs;
select * from dba_segments where owner like 'KYC%';

select * from dba_temp_free_space;
select * from dba_temp_files;

#############################################

静态数据字典视图

#######################################

select * from database_properties;

select * from user_tables;
select * from user_views;
select * from user_constraints;
select * from SYS.USER_CONS_COLUMNS;

select * from user_ts_quotas
select * from dba_ts_quotas

select * from all_users;
select * from dba_users;
select * from user_users;

select * from session_roles;
select * from session_privs;

constraint pk_mid primary key(mid)
constraint fk_mid foreign key(mid) references member(mid)
drop table member cascade constraint
on delete cascade
on delete set null

view
with check option
with read only

ALL_DIRECTORIES describes all directories accessible to the current user.

DBA_DIRECTORIES describes all directory objects in the database. Its columns are the
same as those in "ALL_DIRECTORIES" on page 2-55.

select username,profile from dba_users;
Select * FROM dba_profiles s Where s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

select * from dba_profiles;

动态性能视图

########################

select * from v$asm_template;

select group_number,count(*) from v$asm_template
group by group_number;

alter diskgroup data1 add template reli attributes (unprotected fine);

select * from v$asm_template
where group_number=2;

########################

select * from v$flash_recovery_area_usage;

########################

下面这两个视图是有关系的
select * from v$sesstat;
select sid,count(*) from v$sesstat group by sid;
select * from v$statname;  记录了statistic#所代表的含义。

select statistic#,count(*) from v$sesstat group by statistic#;

每一个sid出现679次,总共有28个sid,即视图v$sesstat总共有679*28=19012行数据

########################

V$LOGFILE contains information about redo log files.

所有的日志文件信息(包括online log与standby log两种类型)

########################

V$LOG displays log file information from the control file.

online日志文件信息

########################

select * from v$standby_log;

standby日志文件信息

########################

select * from v$archived_log;

不管是online还是standby,查看所有已经归档的日志

########################

V$LOG_HISTORY displays log history information from the control file.

V$LOGHIST 兼容目的,oracle推荐使用上面的

select * from v$log_history
where thread#=1
order by sequence# desc;
select * from v$log_history
where thread#=2
order by sequence# desc;

select * from v$log_history
order by first_time desc;

##########################
V$MANAGED_STANDBY displays current status information for some Oracle Database
processes related to physical standby databases in the Data Guard environment. This
view does not persist after an instance shutdown.

下面是在主库的rac1上查看动态性能视图的结果集

select * from v$managed_standby;

ARCH	9781	CLOSING	ARCH	9781	4280995558	N/A	929463782	1	403	2049	27114	0	0	0
ARCH 32131 CLOSING ARCH 32131 4280995558 N/A 929463782 1 404 2049 13531 0 0 0
ARCH 9786 CLOSING ARCH 9786 4280995558 2 929463782 1 404 14336 1244 0 0 0
ARCH 9788 CLOSING ARCH 9788 4280995558 N/A 929463782 1 402 32769 1388 0 0 0
LNS 9794 WRITING LNS 9794 4280995558 1 929463782 1 405 18787 1 0 0 0

下面是在备库上查看动态性能视图的结果集

下面的mrp0是非实时应用的状态 wait_for_log

如果是实时应用的状态是 apply log

alter database recover managed standby database disconnect from session;
alter database recover managed standby database cancel;
alter database recover managed standby database using current logfile disconnect;

select * from v$managed_standby;

ARCH	6231	CONNECTED	ARCH	6231	4280995558	N/A	0	0	0	0	0	0	0	0
ARCH 6229 CONNECTED ARCH 6229 4280995558 N/A 0 0 0 0 0 0 0 0
ARCH 6233 CLOSING ARCH 6233 4280995558 6 929463782 1 304 10240 1437 0 0 0
ARCH 6235 CLOSING ARCH 6235 4280995558 8 929463782 2 297 18432 61 0 0 0
RFS 6262 IDLE UNKNOWN 9781 4280995558 N/A 0 0 0 0 0 0 0 0
RFS 6244 IDLE UNKNOWN 4825 4280995558 N/A 0 0 0 0 0 0 0 0
RFS 6258 IDLE LGWR 4834 4280995558 3 929463782 2 479 22450 1 0 0 0
RFS 6250 IDLE LGWR 9794 4280995558 1 929463782 1 405 18527 1 0 0 0
RFS 6252 IDLE UNKNOWN 32131 4280995558 N/A 0 0 0 0 0 0 0 0
RFS 6254 IDLE UNKNOWN 4819 4280995558 N/A 0 0 0 0 0 0 0 0
RFS 6256 IDLE UNKNOWN 18922 4280995558 N/A 0 0 0 0 0 0 0 0
RFS 6260 IDLE UNKNOWN 9788 4280995558 N/A 0 0 0 0 0 0 0 0
MRP0 6455 WAIT_FOR_LOG N/A N/A N/A N/A 929463782 1 405 0 0 0 5 5

###############################  

select * from v$hm_check;
select * from v$hm_check_param;
select * from v$hm_run;

select c.name check_name,p.name parameter_name,p.type,p.default_value,p.description
from v$hm_check_param p,v$hm_check c
where p.check_id=c.id and c.internal_check='N'
order by c.name;

##############################

select * from v$sga;
select * from v$sgainfo;
select * from v$sgastat;
select pool,count(*) from v$sgastat
group by pool;
select sum(bytes) from v$sgastat
where pool='java pool';

select * from v$sgastat
where pool='shared pool';
where pool is null;

================================
内存相关的性能视图
select * from v$sga;
select * from v$sgainfo;
select * from v$sgastat;
select pool,count(*) from v$sgastat
group by pool;
select sum(bytes) from v$sgastat
where pool='java pool';

select * from v$sgastat
where pool='shared pool';
where pool is null;

select * from v$sgastat;
select * from v$pgastat;

select * from v$memory_dynamic_components;
select * from v$sga_dynamic_components;

select * from v$memory_current_resize_ops;
select * from v$sga_current_resize_ops;

select * from v$memory_resize_ops;
select * from v$sga_resize_ops;

select * from v$memory_target_advice;
select * from v$sga_target_advice;
select * from v$pga_target_advice;

##############################

V$LOCK lists the locks currently held by the Oracle Database and outstanding requests
for a lock or latch

outstanding   adj. 杰出的;显著的;未解决的;未偿付的

V$LOCKED_OBJECT lists all locks acquired by every transaction on the system. It shows
which sessions are holding DML locks (that is, TM-type enqueues) on what objects
and in what mode

pl/sql source text

select * from user_source;

select * from user_errors;

##############################

初始化参数

##############################

db_name
control_files
--指定下面这个或不指定,默认就是auto,这样就启用了automatic undo management
undo_management=auto
db_create_file_dest
db_recovery_file_dest
db_recovery_file_dest_size
db_create_online_log_dest_n
db_files
db_block_checksum
file_mapping
db_flashback_retention_target=1440
undo_retention=900
audit_trail
audit_file_dest
audit_sys_operations=true
audit_syslog_level

闪回技术涉及的初始化参数与数据字典

undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
db_flashback_retention_target integer 1440
select * from v$restore_point;

parallel_clause涉及的初始化参数

show parameter parallel_degree;

基于parallel_degree_policy初始化参数,如果设置为auto,那么这个子句被忽略,并且优化器来决定所有语句的最佳并行度,如果设置为manual或limited,才起作用

pl/sql涉及的参数

show parameter plsql;

##############################

权限和角色

##############################

dbms_stats
字典
dba_tab_modifications
user_tab_modifications
参数
statistics_level typical,basic
optimizer_mode ALL_ROWS
权限
create user
create session 最小权限
unlimited tablespace
alter user

SELECT * FROM user_tables
WHERE table_name= AND num_rows is not null;

oracle数据字典-权限-角色-参数的更多相关文章

  1. oracle数据字典-权限-角色

    每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统sch ...

  2. Oracle 用户,角色,权限等

    权限管理是 Oracle 系统的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种,如果单独对用户授权,很囧,有一些用户 ...

  3. 转 oracle 学习- 用户权限角色

    创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...

  4. Oracle用户、角色、权限

    一.Oracle权限 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言) 对象权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的) 1.Oracle系统权限 ​ o ...

  5. Oracle命令:授权-收回权限-角色

    Oracle命令:授权-收回权限-角色 oracle grant 不论授予何种权限,每条授权(grant)语句总是由三部分组成: 1) 接受者部分是准备获得权限的一个或多个用户的列表. 2)关键字权限 ...

  6. oracle数据字典和动态性能视图

    数据字典和动态性能视图数据字典是oracle数据库中重要的组成部分,提高了数据库的一些系统信息.(静态信息)动态性能视图记载了例程启动后的信息.(动态信息) 数据字典记录了数据的系统信息,是只读表和动 ...

  7. Oracle数据字典详解

    学习笔记:oracle数据字典详解 --- 本文为TTT学习笔记,首先介绍数据字典及查看方法,然后分类总结各类数据字典的表和视图.然后列出一些附例.   数据字典系统表,保存在system表空间中. ...

  8. oracle 用户 权限

    一. 概述 与权限,角色相关的视图大概有下面这些: DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS:   当前用户所拥有的系统权限 SESSION_PRIVS ...

  9. Oracle管理监控之Oracle用户权限

    数据字典 1.动态数据字典是以v$xxx开始的数据字典,在数据库中约有150个左右,这些数据字典反映数据库动态运行状况,在不同时间查询会得到不同的结果. 2.DBA数据字典是以DBA_xxx表示,该数 ...

随机推荐

  1. 2.19 C++友元函数和友元类

    参考: http://www.weixueyuan.net/view/6350.html 总结: 借助friend关键字将其声明为友元函数,结果,在display函数体内,我们就能访问private属 ...

  2. Eclipse几点常用设置+个人喜好

    1.代码自动提示 在我们忘记方法名或者想偷懒时,代码自动提示很管用.不过Eclipse默认是输入"."后才会出现包或类成员的提示,也就意味着我们必须先输入一个完整的类名,提示才能出 ...

  3. REST easy with kbmMW #17 – Database 6 – Existing databases

    kbmMW已经包含了非常精细的功能来确定和解释数据库中表的元数据. 在下一版本中,这个功能将得到进一步加强,可以导入现有数据库中的表,自动创建与表相匹配的ORM实体类. 这意味着你能够使用kbmMW的 ...

  4. JAVA项目中的常用的异常处理

    1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象 ...

  5. 解析JSON 注意解析数据为一个对象的情况.--加一下说明

    应用场景: 调某接口时, 获取json数据, 需要对数据进行解析 . 第一种: 只判断接口是否调用成功 { "code":"10102000", "d ...

  6. 替换Jar包内的文件

    要替换Jar包内的文件可以用以下命令实现: jar uvf myjar.jar com/test/myclass.class 这里值得注意的是  myclass.class 必须放在com/test ...

  7. python logging 模块的应用

    对一名开发者来说最糟糕的情况,莫过于要弄清楚一个不熟悉的应用为何不工作.有时候,你甚至不知道系统运行,是否跟原始设计一致. 在线运行的应用就是黑盒子,需要被跟踪监控.最简单也最重要的方式就是记录日志. ...

  8. makefile 使用 Tricks

    .phony是表示目标是伪目标,并不生成相应的文件..phony标志的文件总是执行的. 1. 短横(-)与@ @(常用在 echo 之前):make 在执行编译打包等命令前会在命令行输出此命令,称之为 ...

  9. 大一下第2次作业(markdown改)

    一.作业 6-7 删除字符串中数字字符 1.设计思路 (1)主要描述题目算法 第一步:用for循环和if语句,一个一个字符判断,找到数字字符就跳过去判断下一个,否则使指针指向不是(已判断过的)数字字符 ...

  10. each的break

    $.each var arr = [1, 2, 'test', 3, 4, 5, 6] // break $.each(arr, function(index, value) { if (value ...