1. 程式人生 > >Oracle系統表大全

Oracle系統表大全

 

ORACLE系統表處理 

1.取得指定使用者的所有表名:
Java程式碼 
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;  
[java] view plain copy
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.取得指定使用者的所有檢視名稱:
Java程式碼 
SELECT OWNER  AS "物件所有者",VIEW_NAME AS "檢視名稱" from DBA_VIEWS  where owner = 'RAXNYB'  ORDER BY OWNER,VIEW_NAME;  
[java] view plain copy
SELECT OWNER  AS "物件所有者",VIEW_NAME AS "檢視名稱" from DBA_VIEWS  where owner = 'RAXNYB'  ORDER BY OWNER,VIEW_NAME;  


oracle系統表查詢 

1.使用者:
Java程式碼 
select username from dba_users;  
[java] view plain copy
select username from dba_users;  

改口令
Java程式碼 
alter user spgroup identified by spgtest;   
[java] view plain copy
alter user spgroup identified by spgtest;   


2.表空間:
Java程式碼 
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';   
[java] view plain copy
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.資料庫物件
Java程式碼 
select * from dba_objects;    
  
CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。  
[java] view plain copy
select * from dba_objects;   
  
CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。  


4.表
Java程式碼 
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';   
[java] view plain copy
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.索引
Java程式碼 
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';//聯接使用  
[java] view plain copy
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.序列
Java程式碼 
select * from dba_sequences;  
[java] view plain copy
select * from dba_sequences;  


7.檢視
Java程式碼 
select * from dba_views   
select * from all_views   
text欄位 可用於查詢檢視生成的指令碼  
[java] view plain copy
select * from dba_views  
select * from all_views  
text欄位 可用於查詢檢視生成的指令碼  


8.聚簇
Java程式碼 
select * from dba_clusters  
[java] view plain copy
select * from dba_clusters  


9.快照
Java程式碼 
select * from dba_snapshots  
[java] view plain copy
select * from dba_snapshots  

快照、分割槽應存在相應的表空間 

10.同義詞
Java程式碼 
select * from dba_synonyms  
[java] view plain copy
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.資料庫鏈
Java程式碼 
select * from dba_db_links  
[java] view plain copy
select * from dba_db_links  

在spbase下建資料庫鏈:
Java程式碼 
create database link dbl_spnew    
connect to spnew identified by spnew using 'jhhx';   
  
insert into [email protected]_spnew select * from acc_nbr where nxx_nbr='237' and line_nbr='8888';   
[java] view plain copy
create database link dbl_spnew   
connect to spnew identified by spnew using 'jhhx';  
  
insert into [email protected]_spnew select * from acc_nbr where nxx_nbr='237' and line_nbr='8888';   


12.觸發器
Java程式碼 
select * from dba_trigers;  
[java] view plain copy
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來建立、修改、刪除約束. 
  可以臨時禁止約束,如:
Java程式碼 
alter table book_example disable constraint book_example_1;   
alter table book_example enable constraint book_example_1;   
[java] view plain copy
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 查。
Java程式碼 
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;   
[java] view plain copy
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)定義約束可以無名(系統自動生成約束名)和自己定義約束名(特別是主鍵、外來鍵) 如:
Java程式碼 
create table book_example (identifier number not null);    
create table book_example (identifier number constranit book_example_1 not null);   
[java] view plain copy
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;使每個回滾段大小足夠處理一個完整的事務;

Java程式碼 
create rollback segment r05  tablespace rbs;    
create rollback segment rbs_cvt tablespace rbs storage(initial 1M next 500k);  
[java] view plain copy
create rollback segment r05  tablespace rbs;   
create rollback segment rbs_cvt tablespace rbs storage(initial 1M next 500k);  


使回滾段線上

Java程式碼 
alter rollback segment r04 online;  
[java] view plain copy
alter rollback segment r04 online;  

用dba_extents,v$rollback_segs監測回滾段的大小和動態增長。 

回滾段的區間資訊

Java程式碼 
select * from dba_extents where segment_type='ROLLBACK' and segment_name='RB1';   
[java] view plain copy
select * from dba_extents where segment_type='ROLLBACK' and segment_name='RB1';   


回滾段的段資訊,其中bytes顯示目前回滾段的位元組數

Java程式碼 
select * from dba_segments where segment_type='ROLLBACK' and segment_name='RB1';   
[java] view plain copy
select * from dba_segments where segment_type='ROLLBACK' and segment_name='RB1';   


為事物指定迴歸段

Java程式碼 
set transaction use rollback segment rbs_cvt   
[java] view plain copy
set transaction use rollback segment rbs_cvt   


針對bytes可以使用回滾段回縮。

Java程式碼 
    
alter rollback segment rbs_cvt shrink;   
select bytes,extents,max_extents from dba_segments where segment_type='ROLLBACK' and segment_name='RBS_CVT';   
[java] view plain copy
   
alter rollback segment rbs_cvt shrink;  
select bytes,extents,max_extents from dba_segments where segment_type='ROLLBACK' and segment_name='RBS_CVT';   


回滾段的當前狀態資訊:

Java程式碼 
select * from dba_rollback_segs where segment_name='RB1';  
[java] view plain copy
select * from dba_rollback_segs where segment_name='RB1';  

比多回滾段狀態status,回滾段所屬例項instance_num 
查優化值optimal

Java程式碼 
select n.name,s.optsize from v$rollname n,v$rollstat s where n.usn=s.usn;   
[java] view plain copy
select n.name,s.optsize from v$rollname n,v$rollstat s where n.usn=s.usn;   


回滾段中的資料

Java程式碼 
set transaction use rollback segment rb1;/*回滾段名*/    
select n.name,s.writes from v$rollname n,v$rollstat s where n.usn=s.usn;   
[java] view plain copy
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(回滾段條目位元組數)差值,可確定事務的大小。 
查詢回滾段中的事務

Java程式碼 
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;  
[java] view plain copy
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、作業 
  查詢作業資訊

Java程式碼 
select job,broken,next_date,interval,what from user_jobs;    
select job,broken,next_date,interval,what from dba_jobs;  
[java] view plain copy
select job,broken,next_date,interval,what from user_jobs;   
select job,broken,next_date,interval,what from dba_jobs;  

查詢正在執行的作業

Java程式碼 
select * from dba_jobs_running;  
[java] view plain copy
select * from dba_jobs_running;  

使用包

Java程式碼 
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號作業。  
[java] view plain copy
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