當前位置:成語大全網 - 書法字典 - SQL中創建或替換視圖的應用

SQL中創建或替換視圖的應用

SQL中創建或替換視圖的應用

首先,Oracle的字典表和視圖基本上可以分為三個層次。

1.X$表格

這部分表是Oracle數據庫的運行基礎,它是由Oracle應用程序在數據庫啟動時動態創建的。

表的這壹部分對數據庫非常重要,因此Oracle不允許SYSDBA以外的用戶直接訪問它,並且不允許顯示授權。

如果顯示授權,您將收到以下錯誤:

SQL & gt將x$ksppi上的select授權給eygle

將x$ksppi上的select授權給eygle

*

第1行出錯:

ORA-02030:只能從固定表/視圖中選擇

2.GV$和V$視圖

從Oracle8開始,引入了GV$ view,這意味著全局V$。

除了壹些特殊情況,每個V$視圖都有壹個對應的GV$視圖。

GV$ view是為了滿足OPS環境的需求而生成的。在OPS環境中,查詢GV$ view將返回所有實例信息,每個V$ view都基於添加INST ID列後建立的GV$ view,並且只包含當前連接實例信息。

請註意,每個V$視圖都包含類似以下內容的語句:

其中inst _ id = USERENV(‘實例‘)

用於限制當前實例信息的返回。

讓我們從GV$FIXED_TABLE和V$FIXED_TABLE開始。

SQL & gt從v_$fixed_view_definition選擇view_definition

其中view _ name =‘V $ FIXED _ TABLE‘;

視圖_定義

-

從GV$FIXED_TABLE中選擇名稱、對象標識、類型和表格編號

其中inst _ id = USERENV(‘實例‘)

這裏我們看到V$FIXED_TABLE是基於GV$FIXED_TABLE創建的。

SQL & gt從v_$fixed_view_definition選擇view_definition

其中view _ name =‘GV $ FIXED _ TABLE‘;

視圖_定義

-

select inst_id,kqftanam,kqftaobj,TABLE,indx from x$kqfta

聯合所有

select inst_id,kqfvinam,kqfviobj,VIEW,65537 from x$kqfvi

聯合所有

select inst_id,kqfdtnam,kqfdtobj,TABLE,65537 from x$kqfdt

這樣,我們找到了基於X$ table創建的GV$FIXED_TABLE視圖的創建語句。

3.GV_$,V_$視圖和V$,GV$同義詞

這些視圖是通過catalog.ql創建的。

catalog.sql運行時:

將視圖v_$fixed_table創建或替換為select * from v $ fixed _ table

為v_$fixed_table創建或替換公共同義詞v $ fixed _ table

將視圖gv_$fixed_table創建或替換為select * from gv $ fixed _ table

為gv_$fixed_table創建或替換公共同義詞gv $ fixed _ table

我們註意到首先創建了第壹個視圖V_$和GV_$並且創建了兩個視圖V_$和gv_$。

然後創建基於V_$ view的同義詞。

所以,事實上,我們通常訪問的V$視圖實際上是V_$視圖的同義詞。

V_$視圖基於真實的V$視圖(該視圖基於X$表)。

v$fixed_view_definition視圖是我們研究Oracle對象關系的壹個切入點。仔細了解Oracle的數據字典機制有助於我們深入理解和學習Oracle數據庫知識。

更進壹步

1).X$表格

關於X$表,我們也可以從數據字典中壹窺其創建信息。

首先,我們檢查bootstrap$ table,它記錄了數據庫啟動的基本信息和驅動信息。

SQL & gtselect * from bootstrap $;

行# OBJ# SQL_TEXT