Oracleデータ・ディクショナリ
データ辞書
データ辞書は、ほとんどすべてのシステム情報とオブジェクト情報のデータ辞書に問い合わせることができ、場所に関する情報を格納するためにOracleデータベースです。データ・ディクショナリは、データベーステーブルのセットとビューのセットに関する情報を提供するコアOracleデータベース情報システムは、ビューおよび表が読み取り専用です。データベースは、特定のアクションを実行するとき、それが確立されたデータベースの設立により、データディクショナリが自動的に更新されます。データ・ディクショナリのデータリストは、記録、検証および継続的な操作を管理します。
Oracleは、SYSユーザは、データベーステーブルスペースシステムのすべて、すべてのユーザーがSYSスキーマ行モードまたはデータ・ディクショナリ・オブジェクトを変更する権利を有していることを保証するためにデータ辞書、システム内のデータ・ディクショナリの所有者です。それが唯一のデータ・ディクショナリを照会することができ、手動で変更することはできません。
これは、データ・ディクショナリの使用
オブジェクトとデータ記憶構造辞書にアクセスして、何かのユーザーに関する情報を取得するために、より便利な神託を。システムは、DDL文を実行すると、Oracleは速やかにデータ・ディクショナリを変更します。任意のユーザは、読書の形で情報を取得するためにデータ辞書データベースを使用することができます。
データ・ディクショナリに格納された情報
・ユーザデータの名前
・ユーザー権限とロールを付与します
このようようにテーブル、ビュー、indexex、プロシージャ、ファンクション、パッケージ、トリガーやなどの名前のスキーマオブジェクト。
・特定の情報の整合性制約;
・各フィールドのデフォルト値は、
データベース領域を使用します。
・監査機能は、ORACLE_HOMEの下の\ productdb_l \ RDBMS \管理ディレクトリのファイルcataudit.sqlは、監査のためのデータ・ディクショナリ・ビューのペースを作成するために使用されます。
•(機密性の高い管理のための)ユーザーのオブジェクトと厳格な管理。
・その他、一般的なデータベース情報。
三種類の接頭辞、データ・ディクショナリ・ビューは、
USER_:すべてのユーザーは、ユーザーだけの何か現在のオブジェクトの情報を提供し、それを読むために、ユーザごとに同じ、ビューを読み取ることができません。そのような電流モードでのすべてのオブジェクトを照会するように、USER_OBJECTSからOBJECT_TYPEをOBJECT_NAME選択し;
ALL_:すべてのユーザーは、ユーザーが読み込まれ、ユーザに関連する情報を提供するオブジェクトを表示することができます。例えば、現在のユーザーのようなクエリ内のすべてのオブジェクトにアクセスすることができる
SELECT所有者、object_nameの、ALL_OBJECTSからOBJECT_TYPE;
DBA_:すべてのユーザビューのオブジェクト情報を含む、読み取り専用ことができ、データベース管理者のビューを提供します。選択所有者、object_nameの、sys.dba_objectsからobject_typeに 。
第二に、データ・ディクショナリに関連するクエリ
1、ユーザーのクエリ
SELECTからユーザー名DBA_USERS管理者権限を持つユーザーのみが照会することができます- 。
SELECTからユーザー名ALL_USERS ; -または任意のユーザがこれを使用することができます
-から現在のユーザーのデフォルトのユーザー名のテーブルスペースSELECT、DEFAULT_TABLESPACE見るUSER_USERSを。
-現在のユーザーの役割* SELECTからUSER_ROLE_PRIVS。
-現在のユーザーのシステム権限とテーブルレベルの権限は、SELECT * FROM USER_SYS_PRIVS。
select * from user_tab_privs;
2、查询 表空间 (拥有DBA权限的用户才能查询)
select * from dba_data_files;select * from dba_tablespaces; --表空间
select tablespace_name, sum(bytes), sum(blocks) from dba_free_space group by tablespace_name; --空闲表空间
select * from dba_data_files where tablespace_name='USERS'; -- 表空间对于的数据文件
select * from dba_segments where tablespace_name='USERS';--查询用户模式对象所使用过的正在使用空间大小select name, type, source_size, code_size from user_object_size;
3、查询数据库对象(拥有DBA权限的用户才能查询)
select * from dba_objects
select * from dba_objects where object_type = upper('package body');
select * from dba_objects where OBJECT_TYPE='TABLE' and OWNER='SCOTT'
可根据拥有者查询下列对象类型(object_type)
cluster databaselink
function index
library package
package body procedure
sequence synonym
table trigger
type undefined
view
4、查询表
--表使用的extent的信息。segment_type='ROLLBACK'
select * from dba_tables;select extent_id, bytes from dba_extents where segment_name='CUSTOMERS' and segment_type='TABLE' order by extent_id;
-- 查看回滚段的空间分配信息列信息 SELECT * FROM user_tab_columns;select distinct table_name from user_tab_columns where column_name='ID';
-- 查看当前用户下所有的表select * from user_tables;--查看名称包含log字符的表select object_name, object_id from user_objects where instr(object_name, 'LOG') > 0;-- 查看某表的创建时间select object_name, created from user_objects where object_name = upper('&table_name');-- 查看某表的大小select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name = upper('&table_name');-- 查看放在oracle的内存的表select table_name, cache from user_tables where instr(cache, 'Y') > 0;
5、查询索引
select * from dba_indexes; -- 索引,包括主键索引
select * from all_indexes;select * from dba_ind_columns; -- 索引列
select i.index_name, i.uniqueness, c.column_name from user_indexes i, user_ind_columns c where i.index_name=c.index_name and i.table_name = 'PERSON'; --连接使用
-- 查看索引个数和类别select index_name, index_type, table_name from user_indexes order by table_name;-- 查看索引被索引的字段select * from user_ind_columns where index_name=upper('&index_name');-- 查看索引的大小select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name = upper('&index_name');
6、查询序列
select * from dba_sequences;select * from all_sequences;
查看序列号,last_number是当前值select * from user_sequences;
7、查询视图
select * from dba_views;select * from all_views;
可用目录desc all_views;来查看视图结构
其中,Text列可用于查询视图生产的脚本。
--查询当前用户视图的名称select view_name from user_views;
--查询创建视图的select语句select view_name, text_length from user_views;set long 2000;
--可以根据视图的text_length 值设定set long的大小select text from user_views where view_name = upper('&view_name');
8、查询聚簇
select * from dba_clusters;
9、查询快照
select * from dba_snapshots;
快照、分区应存在相对应的表空间
10、查询同义词
select * from dba_synonyms where table_owner='SCOTT';select * from ALL_synonyms where table_owner='SYSTEM';
如果用户表可以被访问,那么同义词也可以被访问,用户表不能被访问,则同义词也不能被访问。
11、查询数据库链
select * from dba_db_links;
12、查询触发器(12)
select * from dba_triggers;
存储过程,函数从dba_objects查找
查询文本select text from user_source where name = 'PRO_PERSON_FINDBYID';
oracle总是将存储过程,函数放在system表空间。
13、查看函数和过程的状态
select object_name, status from user_objects where object_type='FUNCTION';select object_name, status from user_objects where object_type='PROCEDURE';
--查看源代码select * from all_source where owner='WUXX' and name=upper('&plsql_name');
14、查询约束
约束是和表关联的,可以在create table或alter table table_name add/drop/modify 来建立、修改、删除约束。
可以临时禁止约束,如:
alter table book_example
disable constraint book_example_l;
数据完整性约束
select constraint_name, constraint_type, table_name from dba_constraints;
15、查询回滚段
在所有的修改结果存入磁盘前,回滚段中保持恢复该事务所需的全部信息,必须以数据库发送的事务来相应确定其大小。(DML语句才可回滚,create, drop, truncate等DDL不能回滚)
回滚段数量=并发事务/4,但不能超过50个;是每个回滚段大小足够处理一个完整的事物;
create rollback segment r05 tablespace rbs;create rollback segment rbs_cvt tablespace rbs storage(initial 1M next 500k);
16、查询作业
select job, broken, next_date, interval, what from user_jobs;select job, broken, next_date, interval, what from dba_jobs;
--正在运行的作业select * from dba_jobs_running;
使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60*60))');加入作业。间隔10秒
使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60))');加入作业。间隔11分
使用表exec dbms_job.remove(21)删除21号作业。
其他信息查询
查询优化模式对象使用过的或正在使用的空间大小
select name, type, source_size, code_size from user_object_size;
查询字段的默认值
select table_name, column_name, data_default, low_value, hight_value from dba_tab_columns;