Oracle/PLSQL: Oracle System Tables

Oracle uses a Data Dictionary to store details of all the Tables, Columns etc.. (check out the associated Data Model). You will normally be interested only in your own Tables, which are provided by the 'USER' views, which are for the User who is currently logged in.
The System Administrator or DBA will usually be interested in the 'ALL' Views, which show data for all Users.


These details can be confirmed in SQL*PLus
ViewDescription
ALL_CATALOGContains every Tables, View and Synonym.
ALL_OBJECT_TABLESAll Object-Oriented Tables.
ALL_TAB_COMMENTScomments for every Table, which are usually a short description of the Table.
ALL_TAB_GRANTSAll owner Privileges, including PUBLIC('everyone').
ALL_TAB_GRANTS_RECDPrivileges granted by others to others.
ALL_TYPESAll Object Types.
ALL_TYPES_METHODSAll Object Types that are Methods.
ALL_USERSNames and Create Dates for all Users.
DATA_DICT ('DICT')This item is in bold because it is very important. If you know nothing, you can start with 'SELECT * FROM DATA_DICT'. It is a top-level record of everything in the Data Dictionary.
DBA_FREE_SPACERemaining Free Space in each Tablespace. A DBA typically spends a lot of time increasing Free Space as Databases have to hold more data than originally planned.
USER_CATALOGAll Tables, Views and Synonynms that the currently logged-in User can see.
USER_INDEXESDetails of User-specific Indexes.
USER_TABLESDetails of User-specific Tables, with some statistics, such as record counts.
USER_TAB_COLUMNSDetails of Columns within each User Table, which is very useful when you want to find the structure of your Tables.
USER_TAB_GRANTSDetails of User-specific Privileges for Table access.
USER_VIEWSDetails of User-specific Views, and the SQL for each View,(which is essential).

 

 

Here's a List of Oracle System Tables, and Oracle's list of their Data Dictionary Views.

 

 

 

Oracle/PLSQL: Oracle System Tables


Below is an alphabetical listing of the Oracle system tables that are commonly used.

System TableDescription
ALL_ARGUMENTSArguments in object accessible to the user
ALL_CATALOGAll tables, views, synonyms, sequences accessible to the user
ALL_COL_COMMENTSComments on columns of accessible tables and views
ALL_CONSTRAINTSConstraint definitions on accessible tables
ALL_CONS_COLUMNSInformation about accessible columns in constraint definitions
ALL_DB_LINKSDatabase links accessible to the user
ALL_ERRORSCurrent errors on stored objects that user is allowed to create
ALL_INDEXESDescriptions of indexes on tables accessible to the user
ALL_IND_COLUMNSCOLUMNs comprising INDEXes on accessible TABLES
ALL_LOBSDescription of LOBs contained in tables accessible to the user
ALL_OBJECTSObjects accessible to the user
ALL_OBJECT_TABLESDescription of all object tables accessible to the user
ALL_SEQUENCESDescription of SEQUENCEs accessible to the user
ALL_SNAPSHOTSSnapshots the user can access
ALL_SOURCECurrent source on stored objects that user is allowed to create
ALL_SYNONYMSAll synonyms accessible to the user
ALL_TABLESDescription of relational tables accessible to the user
ALL_TAB_COLUMNSColumns of user's tables, views and clusters
ALL_TAB_COL_STATISTICSColumns of user's tables, views and clusters
ALL_TAB_COMMENTSComments on tables and views accessible to the user
ALL_TRIGGERSTriggers accessible to the current user
ALL_TRIGGER_COLSColumn usage in user's triggers or in triggers on user's tables
ALL_TYPESDescription of types accessible to the user
ALL_UPDATABLE_COLUMNSDescription of all updatable columns
ALL_USERSInformation about all users of the database
ALL_VIEWSDescription of views accessible to the user
DATABASE_COMPATIBLE_LEVELDatabase compatible parameter set via init.ora
DBA_DB_LINKSAll database links in the database
DBA_ERRORSCurrent errors on all stored objects in the database
DBA_OBJECTSAll objects in the database
DBA_ROLESAll Roles which exist in the database
DBA_ROLE_PRIVSRoles granted to users and roles
DBA_SOURCESource of all stored objects in the database
DBA_TABLESPACESDescription of all tablespaces
DBA_TAB_PRIVSAll grants on objects in the database
DBA_TRIGGERSAll triggers in the database
DBA_TS_QUOTASTablespace quotas for all users
DBA_USERSInformation about all users of the database
DBA_VIEWSDescription of all views in the database
DICTIONARYDescription of data dictionary tables and views
DICT_COLUMNSDescription of columns in data dictionary tables and views
GLOBAL_NAMEglobal database name
NLS_DATABASE_PARAMETERSPermanent NLS parameters of the database
NLS_INSTANCE_PARAMETERSNLS parameters of the instance
NLS_SESSION_PARAMETERSNLS parameters of the user session
PRODUCT_COMPONENT_VERSIONversion and status information for component products
ROLE_TAB_PRIVSTable privileges granted to roles
SESSION_PRIVSPrivileges which the user currently has set
SESSION_ROLESRoles which the user currently has enabled.
SYSTEM_PRIVILEGE_MAPDescription table for privilege type codes. Maps privilege type numbers to type names
TABLE_PRIVILEGESGrants on objects for which the user is the grantor, grantee, owner, or an enabled role or PUBLIC is the grantee
TABLE_PRIVILEGE_MAPDescription table for privilege (auditing option) type codes. Maps privilege (auditing option) type numbers to type names

 

 

例子

 

ORACLE系统表处理

1.取得指定用户的所有表名: 

  1. SELECT OWNER  AS "对象所有者",OBJECT_NAME AS "表名",OBJECT_ID AS "对象编号" from dba_objects where owner = 'RAXNYB' AND OBJECT_TYPE = 'TABLE' ORDER BY OWNER,OBJECT_TYPE;  
  2. 或  
  3. OWNER  AS "对象所有者",TABLE_NAME AS "表名" from DBA_TABLES where owner = 'RAXNYB'  ORDER BY OWNER,TABLE_NAME;  
SELECT OWNER  AS "对象所有者",OBJECT_NAME AS "表名",OBJECT_ID AS "对象编号" from dba_objects where owner = 'RAXNYB' AND OBJECT_TYPE = 'TABLE' ORDER BY OWNER,OBJECT_TYPE;
或
OWNER  AS "对象所有者",TABLE_NAME AS "表名" from DBA_TABLES where owner = 'RAXNYB'  ORDER BY OWNER,TABLE_NAME;



2.取得指定用户的所有视图名称: 

  1. SELECT OWNER  AS "对象所有者",VIEW_NAME AS "视图名称" from DBA_VIEWS  where owner = 'RAXNYB'  ORDER BY OWNER,VIEW_NAME;  
SELECT OWNER  AS "对象所有者",VIEW_NAME AS "视图名称" from DBA_VIEWS  where owner = 'RAXNYB'  ORDER BY OWNER,VIEW_NAME;



oracle系统表查询

1.用户:

  1. select username from dba_users;  
select username from dba_users;


改口令

  1. alter user spgroup identified by spgtest;   
alter user spgroup identified by spgtest; 



2.表空间:

  1. select * from dba_data_files;   
  2. select * from dba_tablespaces;//表空间   
  3. select tablespace_name,sum(bytes), sum(blocks) from dba_free_space group by tablespace_name;//空闲表空间   
  4. select * from dba_data_files where tablespace_name='RBS';//表空间对应的数据文件   
  5. select * from dba_segments where tablespace_name='INDEXS';   
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='RBS';//表空间对应的数据文件 
select * from dba_segments where tablespace_name='INDEXS'; 



3.数据库对象

  1. select * from dba_objects;   
  2.   
  3. CLUSTER、 DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、 SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。  
select * from dba_objects; 

CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。



4.表

  1. select * from dba_tables;   
  2.   
  3. select extent_id,bytes from dba_extents where segment_name='CUSTOMERS' and segment_type='TABLE' order by extent_id;//表使用的extent的信息。segment_type='ROLLBACK'查看回滚段的空间分配信息  
  4.   
  5. select distinct table_name from user_tab_columns where column_name='SO_TYPE_ID';   
select * from dba_tables; 

select extent_id,bytes from dba_extents where segment_name='CUSTOMERS' and segment_type='TABLE' order by extent_id;//表使用的extent的信息。segment_type='ROLLBACK'查看回滚段的空间分配信息

select distinct table_name from user_tab_columns where column_name='SO_TYPE_ID'; 



5.索引

  1. select * from dba_indexes;//索引,包括主键索引  
  2. select * from dba_ind_columns;//索引列  
  3. select i.index_name,i.uniqueness,c.column_name  
  4. from user_indexes i,user_ind_columns c  
  5. where i.index_name=c.index_name  
  6. and i.table_name ='ACC_NBR';//联接使用  
select * from dba_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 ='ACC_NBR';//联接使用



6.序列

  1. select * from dba_sequences;  
select * from dba_sequences;



7.视图

  1. select * from dba_views  
  2. select * from all_views  
  3. text字段 可用于查询视图生成的脚本  
select * from dba_views
select * from all_views
text字段 可用于查询视图生成的脚本



8.聚簇

  1. select * from dba_clusters  
select * from dba_clusters



9.快照

  1. select * from dba_snapshots  
select * from dba_snapshots


快照、分区应存在相应的表空间

10.同义词

  1. select * from dba_synonyms  
select * from dba_synonyms


//if owner is PUBLIC,then the synonyms is a public synonym.
//if owner is one of users,then the synonyms is a private synonym

11.数据库链

  1. select * from dba_db_links  
select * from dba_db_links


在spbase下建数据库链:

  1. create database link dbl_spnew   
  2. connect to spnew identified by spnew using 'jhhx';  
  3.   
  4. insert into acc_nbr@dbl_spnew select * from acc_nbr where nxx_nbr='237' and line_nbr='8888';   
create database link dbl_spnew 
connect to spnew identified by spnew using 'jhhx';

insert into acc_nbr@dbl_spnew select * from acc_nbr where nxx_nbr='237' and line_nbr='8888'; 



12.触发器 

  1. select * from dba_trigers;  
select * from dba_trigers;


存储过程,函数从dba_objects查找
其文本:select text from user_source where name='BOOK_SP_EXAMPLE';
建立出错:select * from user_errors
oracle总是将存储过程,函数等软件放在SYSTEM表空间。

13.约束
(1)约束是和表关联的,可在create table或alter table table_name add/drop/modify来建立、修改、删除约束.
  可以临时禁止约束,如:

  1. alter table book_example disable constraint book_example_1;  
  2. alter table book_example enable constraint book_example_1;   
alter table book_example disable constraint book_example_1;
alter table book_example enable constraint book_example_1; 


(2)主键和外键被称为表约束,而not null和unique之类的约束被称为列约束。通常将主键和外键作为单独的命名约束放在字段列表下面,而列约束可放在列定义的同一行,这样更具有可读性
(3)列约束可从表定义看出,即describe;表约束即主键和外键,可从dba_constraints和dba_cons_columns 查。

  1. select * from user_constraints where table_name='BOOK_EXAMPLE';   
  2. select owner,CONSTRAINT_NAME,TABLE_NAME from user_constraints where constraint_type='R' order by table_name;   
select * from user_constraints where table_name='BOOK_EXAMPLE'; 
select owner,CONSTRAINT_NAME,TABLE_NAME from user_constraints where constraint_type='R' order by table_name; 


(4)定义约束可以无名(系统自动生成约束名)和自己定义约束名(特别是主键、外键) 如:

  1. create table book_example (identifier number not null);   
  2. create table book_example (identifier number constranit book_example_1 not null);   
create table book_example (identifier number not null); 
create table book_example (identifier number constranit book_example_1 not null); 



14、回滚段:
在所有的修改结果存入磁盘前,回滚段中保持恢复该事务所需的全部信息,必须以数据库发生的事务来相应确定其大小(DML语句才可回滚,create,drop,truncate等DDL不能回滚)。
回滚段数量=并发事务/4,但不能超过50;使每个回滚段大小足够处理一个完整的事务;

  1. create rollback segment r05  tablespace rbs;   
  2. create rollback segment rbs_cvt tablespace rbs storage(initial 1M next 500k);  
create rollback segment r05  tablespace rbs; 
create rollback segment rbs_cvt tablespace rbs storage(initial 1M next 500k);



使回滚段在线

  1. alter rollback segment r04 online;  
alter rollback segment r04 online;


用dba_extents,v$rollback_segs监测回滚段的大小和动态增长。

回滚段的区间信息

  1. select * from dba_extents where segment_type='ROLLBACK' and segment_name='RB1';   
select * from dba_extents where segment_type='ROLLBACK' and segment_name='RB1'; 



回滚段的段信息,其中bytes显示目前回滚段的字节数

  1. select * from dba_segments where segment_type='ROLLBACK' and segment_name='RB1';   
select * from dba_segments where segment_type='ROLLBACK' and segment_name='RB1'; 



为事物指定回归段

  1. set transaction use rollback segment rbs_cvt   
set transaction use rollback segment rbs_cvt 



针对bytes可以使用回滚段回缩。

  1.    
  2. alter rollback segment rbs_cvt shrink;  
  3. select bytes,extents,max_extents from dba_segments where segment_type='ROLLBACK' and segment_name='RBS_CVT';   
 
alter rollback segment rbs_cvt shrink;
select bytes,extents,max_extents from dba_segments where segment_type='ROLLBACK' and segment_name='RBS_CVT'; 



回滚段的当前状态信息:

  1. select * from dba_rollback_segs where segment_name='RB1';  
select * from dba_rollback_segs where segment_name='RB1';


比多回滚段状态status,回滚段所属实例instance_num
查优化值optimal

  1. select n.name,s.optsize from v$rollname n,v$rollstat s where n.usn=s.usn;   
select n.name,s.optsize from v$rollname n,v$rollstat s where n.usn=s.usn; 



回滚段中的数据

  1. set transaction use rollback segment rb1;/*回滚段名*/   
  2. select n.name,s.writes from v$rollname n,v$rollstat s where n.usn=s.usn;   
set transaction use rollback segment rb1;/*回滚段名*/ 
select n.name,s.writes from v$rollname n,v$rollstat s where n.usn=s.usn; 



当事务处理完毕,再次查询$rollstat,比较writes(回滚段条目字节数)差值,可确定事务的大小。
查询回滚段中的事务

  1. column rr heading 'RB Segment' format a18   
  2. column us heading 'Username' format a15   
  3. column os heading 'Os User' format a10   
  4. column te heading 'Terminal' format a10   
  5. select r.name rr,nvl(s.username,'no transaction') us,s.osuser os,s.terminal te from v$lock l,v$session s,v$rollname r   
  6. where l.sid=s.sid(+)  
  7. and trunc(l.id1/65536)=R.USN and l.type='TX' and l.lmode=6 order by r.name;  
column rr heading 'RB Segment' format a18 
column us heading 'Username' format a15 
column os heading 'Os User' format a10 
column te heading 'Terminal' format a10 
select r.name rr,nvl(s.username,'no transaction') us,s.osuser os,s.terminal te from v$lock l,v$session s,v$rollname r 
where l.sid=s.sid(+)
and trunc(l.id1/65536)=R.USN and l.type='TX' and l.lmode=6 order by r.name;



15、作业
  查询作业信息

  1. select job,broken,next_date,interval,what from user_jobs;   
  2. select job,broken,next_date,interval,what from dba_jobs;  
select job,broken,next_date,interval,what from user_jobs; 
select job,broken,next_date,interval,what from dba_jobs;


查询正在运行的作业

  1. select * from dba_jobs_running;  
select * from dba_jobs_running;


使用包

  1. exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (10/(24*60*60))')加入作业。间隔10秒钟   
  2. exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (11/(24*60))')加入作业。间隔11分钟使用包exec dbms_job.remove(21)删除21号作业。  
exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (10/(24*60*60))')加入作业。间隔10秒钟 
exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (11/(24*60))')加入作业。间隔11分钟使用包exec dbms_job.remove(21)删除21号作业。

 




16.批注:
ALL_COL_COMMENTS

 

 

references:

英文:


http://www.databaseanswers.org/data_models/oracle_data_dictionary/index.htm

 

http://www.databaseanswers.org/oracle_system_tables.htm

 

http://techonthenet.com/oracle/sys_tables/index.php

 

中文:

 

http://daniel-wuz.javaeye.com/blog/145925

 

http://blog.csdn.net/tianlesoftware/archive/2011/01/28/6168314.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值