獲取oracle 系統資料的sql
ORACLE
特殊
Ø ORACLE只能連線特定資料庫,不能自動掃描資料庫物件。
Ø ORACLE表必須用使用者來區別,否則表可能重名。
Ø ORACLE不能區別系統表或者是使用者表,因此只能由管理員選擇掃描某些特定使用者的表。
取得資料庫名的方法
只能由使用者指定資料庫,不能自動掃描到特定資料庫伺服器上的所有資料庫。
取得表的方法
儲存資料庫表的系統表檢視主要有:
DBA_ALL_TABLES
描述資料庫中所有的物件以及相關的表。
ALL_ALL_TABLES
描述資料庫中所有的使用者可以訪問的物件以及相關的表。
USER_ALL_TABLES
描述資料庫中當前使用者擁有的物件以及相關的表。
DBA_ TABLES
描述資料庫中所有相關的表。
ALL_ TABLES
描述資料庫中所有的使用者可以訪問的相關的表。
USER_ TABLES
描述資料庫中當前使用者擁有的相關的表。
因此,可以從ALL_TABLES中取得隸屬於指定使用者的表:
SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER = 'DBAUDIT';
取得隸屬於指定表空間的表:
SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE TABLESPACE_NAME = 'DBAUDIT';
也可以不指定使用者名稱,從而取得所有的表。
SELECT TABLE_NAME FROM SYS.ALL_TABLES;
取得列的方法
儲存資料庫表的列屬性的系統表檢視主要有:
DBA_TAB_COLUMNS
描述資料庫中所有的表的列屬性。
ALL_TAB_COLUMNS
描述資料庫中所有的使用者可以訪問的表的列屬性。
USER_TAB_COLUMNS
描述資料庫中當前使用者擁有的表的列屬性。
ALL_TAB_COLS
描述資料庫中所有的使用者可以訪問的表的列屬性。
因此,可以從ALL_TAB_COLUMNS中取得隸屬於指定使用者的表:
SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TASK' AND OWNER = 'DBAUDIT';
取得檢視的方法
儲存資料庫檢視的系統表檢視主要有:
DBA_VIEWS
描述資料庫中所有的檢視的屬性。
ALL_VIEWS
描述資料庫中所有的使用者可以訪問的檢視的屬性。
USER_VIEWS
描述資料庫中所有的當前使用者擁有檢視的屬性。
因此,可以從ALL_VIEWS中取得隸屬於指定使用者的檢視:
SELECT VIEW_NAME FROM SYS.ALL_VIEWS WHERE OWNER = 'DBAUDIT';
取得儲存過程的方法
儲存系統物件的系統表檢視有:
DBA_OBJECTS
描述資料庫中所有的物件。
ALL_OBJECTS
描述資料庫中所有的可以訪問的物件。
USER_OBJECTS
描述資料庫中所有的當前使用者擁有的物件。
SYS_OBJECTS
描述資料庫中所有的系統物件。?
物件型別有:
CONSUMER GROUP
CONTEXT
DIRECTORY
FUNCTION
INDEX
INDEX PARTITION
INDEXTYPE
JAVA CLASS
JAVA DATA
JAVA RESOURCE
JAVA SOURCE
LIBRARY
LOB
MATERIALIZED VIEW
OPERATOR
PACKAGE
PACKAGE BODY
PROCEDURE
QUEUE
SEQUENCE
SYNONYM
TABLE
TABLE PARTITION
TRIGGER
TYPE
TYPE BODY
VIEW
因此,取得儲存過程可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE';
取得隸屬於某個使用者的儲存過程可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE' AND OWNER = ‘DBAUDIT';
同樣,取得其他的物件也可以用這個方法,包括表,檢視等。
取得儲存過程內容的方法
物件型別為型別、型別體、過程、函式、包、包體,JAVA原始碼的所有物件的原始碼都儲存在幾個系統表檢視中:
DBA_SOURCE
儲存所有資料庫物件的原始碼。
ALL_SOURCE
儲存所有可以訪問的資料庫物件的原始碼。
USER_SOURCE
儲存所有當前使用者擁有的資料庫物件的原始碼。
因此,取得儲存過程原始碼的方法:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = ‘XXX' AND TYPE = ‘PROCEDURE';
取得函式的方法
同上,取得函式可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';
取得隸屬於某個使用者的函式可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'DBAUDIT';
取得函式內容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'FUNCTION';
取得觸發器的方法
儲存資料庫觸發器的系統表檢視主要有:
DBA_TRIGGERS
描述資料庫中所有的觸發器的屬性。
ALL_ TRIGGERS
描述資料庫中所有的使用者可以訪問的觸發器的屬性。
USER_ TRIGGERS
描述資料庫中所有的當前使用者擁有觸發器的屬性。
因此,可以從ALL_ TRIGGERS中取得隸屬於指定使用者的觸發器:
SELECT TRIGGER_NAME FROM SYS.ALL_TRIGGERS WHERE OWNER = 'DBAUDIT';
取得觸發器內容的方法:
SELECT TRIGGER_BODY FROM SYS.ALL_TRIGGERS WHERE TRIGGER_NAME = 'XXX';
取得索引的方法
儲存資料庫索引的系統表檢視主要有:
DBA_INDEXES
描述資料庫中所有的索引的屬性。
ALL_ INDEXES
描述資料庫中所有的使用者可以訪問的索引的屬性。
USER_ INDEXES
描述資料庫中所有的當前使用者擁有索引的屬性。
因此,可以從ALL_ INDEXES中取得隸屬於指定使用者的索引:
SELECT INDEX_NAME,TABLE_NAME FROM SYS.ALL_INDEXES WHERE OWNER = 'DBAUDIT';
取得索引相關的列的方法:
SELECT COLUMN_NAME FROM SYS.ALL_IND_COLUMNS WHERE INDEX_NAME = 'XXX' AND TABLE_OWNER = 'DBAUDIT';
使用者
儲存資料庫使用者的系統表檢視主要有:
DBA_USERS
描述資料庫中所有的使用者的屬性。
ALL_USERS
描述資料庫中所有的使用者的屬性。
USER_USERS
描述資料庫中當前使用者的屬性。
因此,可以從ALL_USERS中取得使用者:
SELECT USER_ID, USERNAME FROM SYS.ALL_USERS;
角色
儲存角色的表檢視有:
DBA_ROLES
描述資料庫中所有角色。
取得角色方法:
SELECT ROLE FROM SYS.DBA_ROLES;
表空間
SELECT TABLESPACE_NAME FROM SYS.DBA_TABLESPACES;
資料檔案
SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME FROM SYS.DBA_DATA_FILES;
資料庫連線
儲存資料庫連線的系統表檢視主要有:
DBA_LINKS
描述資料庫中所有的連線的屬性。
ALL_LINKS
描述資料庫中所有的使用者可訪問的連線的屬性。
USER_LINKS
描述資料庫中當前使用者的連線屬性。
因此,可以從DBA_DB_LINKS中取得連線:
SELECT FROM SYS.DBA_DB_LINKS;
同義詞
SELECT FROM SYS.ALL_SYNONYMS WHERE TABLE_OWNER = 'DBAUDIT';
程式包
取得程式包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE';
取得隸屬於某個使用者的程式包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'DBAUDIT';
取得程式包內容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE';
程式包體
取得程式包體可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY';
取得隸屬於某個使用者的程式包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY ' AND OWNER = 'DBAUDIT';
取得程式包內容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE BODY ';
特殊
Ø ORACLE只能連線特定資料庫,不能自動掃描資料庫物件。
Ø ORACLE表必須用使用者來區別,否則表可能重名。
Ø ORACLE不能區別系統表或者是使用者表,因此只能由管理員選擇掃描某些特定使用者的表。
取得資料庫名的方法
只能由使用者指定資料庫,不能自動掃描到特定資料庫伺服器上的所有資料庫。
取得表的方法
儲存資料庫表的系統表檢視主要有:
DBA_ALL_TABLES
描述資料庫中所有的物件以及相關的表。
ALL_ALL_TABLES
描述資料庫中所有的使用者可以訪問的物件以及相關的表。
USER_ALL_TABLES
描述資料庫中當前使用者擁有的物件以及相關的表。
DBA_ TABLES
描述資料庫中所有相關的表。
ALL_ TABLES
描述資料庫中所有的使用者可以訪問的相關的表。
USER_ TABLES
描述資料庫中當前使用者擁有的相關的表。
因此,可以從ALL_TABLES中取得隸屬於指定使用者的表:
SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER = 'DBAUDIT';
取得隸屬於指定表空間的表:
SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE TABLESPACE_NAME = 'DBAUDIT';
也可以不指定使用者名稱,從而取得所有的表。
SELECT TABLE_NAME FROM SYS.ALL_TABLES;
取得列的方法
儲存資料庫表的列屬性的系統表檢視主要有:
DBA_TAB_COLUMNS
描述資料庫中所有的表的列屬性。
ALL_TAB_COLUMNS
描述資料庫中所有的使用者可以訪問的表的列屬性。
USER_TAB_COLUMNS
描述資料庫中當前使用者擁有的表的列屬性。
ALL_TAB_COLS
描述資料庫中所有的使用者可以訪問的表的列屬性。
因此,可以從ALL_TAB_COLUMNS中取得隸屬於指定使用者的表:
SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TASK' AND OWNER = 'DBAUDIT';
取得檢視的方法
儲存資料庫檢視的系統表檢視主要有:
DBA_VIEWS
描述資料庫中所有的檢視的屬性。
ALL_VIEWS
描述資料庫中所有的使用者可以訪問的檢視的屬性。
USER_VIEWS
描述資料庫中所有的當前使用者擁有檢視的屬性。
因此,可以從ALL_VIEWS中取得隸屬於指定使用者的檢視:
SELECT VIEW_NAME FROM SYS.ALL_VIEWS WHERE OWNER = 'DBAUDIT';
取得儲存過程的方法
儲存系統物件的系統表檢視有:
DBA_OBJECTS
描述資料庫中所有的物件。
ALL_OBJECTS
描述資料庫中所有的可以訪問的物件。
USER_OBJECTS
描述資料庫中所有的當前使用者擁有的物件。
SYS_OBJECTS
描述資料庫中所有的系統物件。?
物件型別有:
CONSUMER GROUP
CONTEXT
DIRECTORY
FUNCTION
INDEX
INDEX PARTITION
INDEXTYPE
JAVA CLASS
JAVA DATA
JAVA RESOURCE
JAVA SOURCE
LIBRARY
LOB
MATERIALIZED VIEW
OPERATOR
PACKAGE
PACKAGE BODY
PROCEDURE
QUEUE
SEQUENCE
SYNONYM
TABLE
TABLE PARTITION
TRIGGER
TYPE
TYPE BODY
VIEW
因此,取得儲存過程可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE';
取得隸屬於某個使用者的儲存過程可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE' AND OWNER = ‘DBAUDIT';
同樣,取得其他的物件也可以用這個方法,包括表,檢視等。
取得儲存過程內容的方法
物件型別為型別、型別體、過程、函式、包、包體,JAVA原始碼的所有物件的原始碼都儲存在幾個系統表檢視中:
DBA_SOURCE
儲存所有資料庫物件的原始碼。
ALL_SOURCE
儲存所有可以訪問的資料庫物件的原始碼。
USER_SOURCE
儲存所有當前使用者擁有的資料庫物件的原始碼。
因此,取得儲存過程原始碼的方法:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = ‘XXX' AND TYPE = ‘PROCEDURE';
取得函式的方法
同上,取得函式可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';
取得隸屬於某個使用者的函式可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'DBAUDIT';
取得函式內容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'FUNCTION';
取得觸發器的方法
儲存資料庫觸發器的系統表檢視主要有:
DBA_TRIGGERS
描述資料庫中所有的觸發器的屬性。
ALL_ TRIGGERS
描述資料庫中所有的使用者可以訪問的觸發器的屬性。
USER_ TRIGGERS
描述資料庫中所有的當前使用者擁有觸發器的屬性。
因此,可以從ALL_ TRIGGERS中取得隸屬於指定使用者的觸發器:
SELECT TRIGGER_NAME FROM SYS.ALL_TRIGGERS WHERE OWNER = 'DBAUDIT';
取得觸發器內容的方法:
SELECT TRIGGER_BODY FROM SYS.ALL_TRIGGERS WHERE TRIGGER_NAME = 'XXX';
取得索引的方法
儲存資料庫索引的系統表檢視主要有:
DBA_INDEXES
描述資料庫中所有的索引的屬性。
ALL_ INDEXES
描述資料庫中所有的使用者可以訪問的索引的屬性。
USER_ INDEXES
描述資料庫中所有的當前使用者擁有索引的屬性。
因此,可以從ALL_ INDEXES中取得隸屬於指定使用者的索引:
SELECT INDEX_NAME,TABLE_NAME FROM SYS.ALL_INDEXES WHERE OWNER = 'DBAUDIT';
取得索引相關的列的方法:
SELECT COLUMN_NAME FROM SYS.ALL_IND_COLUMNS WHERE INDEX_NAME = 'XXX' AND TABLE_OWNER = 'DBAUDIT';
使用者
儲存資料庫使用者的系統表檢視主要有:
DBA_USERS
描述資料庫中所有的使用者的屬性。
ALL_USERS
描述資料庫中所有的使用者的屬性。
USER_USERS
描述資料庫中當前使用者的屬性。
因此,可以從ALL_USERS中取得使用者:
SELECT USER_ID, USERNAME FROM SYS.ALL_USERS;
角色
儲存角色的表檢視有:
DBA_ROLES
描述資料庫中所有角色。
取得角色方法:
SELECT ROLE FROM SYS.DBA_ROLES;
表空間
SELECT TABLESPACE_NAME FROM SYS.DBA_TABLESPACES;
資料檔案
SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME FROM SYS.DBA_DATA_FILES;
資料庫連線
儲存資料庫連線的系統表檢視主要有:
DBA_LINKS
描述資料庫中所有的連線的屬性。
ALL_LINKS
描述資料庫中所有的使用者可訪問的連線的屬性。
USER_LINKS
描述資料庫中當前使用者的連線屬性。
因此,可以從DBA_DB_LINKS中取得連線:
SELECT FROM SYS.DBA_DB_LINKS;
同義詞
SELECT FROM SYS.ALL_SYNONYMS WHERE TABLE_OWNER = 'DBAUDIT';
程式包
取得程式包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE';
取得隸屬於某個使用者的程式包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'DBAUDIT';
取得程式包內容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE';
程式包體
取得程式包體可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY';
取得隸屬於某個使用者的程式包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY ' AND OWNER = 'DBAUDIT';
取得程式包內容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE BODY ';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-691265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql 獲取系統時間的函式。SQL函式
- 在Grails使用Sql獲取資料AISQL
- 獲取系統字型,獲取系統預設字型
- 獲取資料庫空閒空間的SQL資料庫SQL
- java連線Oracle資料庫獲取資料JavaOracle資料庫
- VC 獲取系統特殊資料夾的路徑如:系統目錄,桌面等
- 第十四篇:獲取系統資料檔案資訊
- Python量化交易系統實戰--獲取股票資料Python
- 獲取系統版本
- SSIS中Sql任務中獲取系統變數的方式SQL變數
- Sql server2000獲取系統時間SQLServer
- 異構資料庫系統遷移到Oracle 工具 - Oracle SQL Developer資料庫OracleSQLDeveloper
- 【原】獲取SQLServer的最完整資料字典的SQL語句SQLServer
- HGDB怎麼獲取資料庫中關鍵系統資訊資料庫
- Oracle獲取資料庫中的物件建立語句Oracle資料庫物件
- 透過cx_Oracle模組獲取資料Oracle
- 獲取Oracle資料庫awr報告方法Oracle資料庫
- 讀資料工程之道:設計和構建健壯的資料系統21資料獲取
- 獲取系統時間
- Oracle 獲取SQL執行計劃方法OracleSQL
- 【轉】通過sql語句獲取資料庫的基本資訊SQL資料庫
- 讀資料工程之道:設計和構建健壯的資料系統24獲取資料的方式
- 如何獲取想要的資料?
- Python訪問Oracle的兩種資料獲取方式PythonOracle
- 獲取oracle資料庫連線出現的問題Oracle資料庫
- ckeditor獲取資料
- oracle資料庫獲取指定表的列的相關資訊Oracle資料庫
- Flutter 中的資料的獲取Flutter
- 獲取系統時間的DOS命令
- 達夢資料庫獲取SQL真實的執行計劃資料庫SQL
- SQL Server中獲取一個資料庫的所有表的列數SQLServer資料庫
- 在Oracle資料庫中使用XML資料獲取業務資訊XHOracle資料庫XML
- Android系統資訊獲取Android
- 在SQL隱碼攻擊中使用DNS獲取資料SQLDNS
- 如何獲取sql server資料庫版本初識之一SQLServer資料庫
- 如獲取獲取關聯資料的文件跟模型的關聯資料集呢模型
- oracle資料庫獲取繫結變數的各種方法Oracle資料庫變數
- 【SCN】Oracle資料庫SCN號的四種獲取途徑Oracle資料庫