版本影響當前使用者看到的物件
如果說版本影響當前使用者可以訪問的物件是正常的,但是對於DBA_OBJECTS而言,同一個使用者下,在不同版本下看到的結果也是不一樣的。
看一個簡單的例子:
-bash-3.2$ sqlplus test/test
SQL*Plus: Release 11.2.0.2.0 Production on Thu Sep 15 21:04:58 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set pages 100 lines 120
SQL> create user u1 identified by u1 default tablespace users enable
editions;
User created.
SQL> grant connect, resource, dba to u1;
Grant succeeded.
SQL> conn u1/u1
Connected.
SQL> select sys_context('USERENV', 'CURRENT_EDITION_NAME') from dual;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
------------------------------------------------------------------------
ORA$BASE
SQL> create or replace procedure p1 as
2
begin
3
null;
4
end;
5
/
Procedure created.
SQL> create or replace procedure p2 as
2
begin
3
null;
4
end;
5
/
Procedure created.
SQL> create or replace procedure p3 as
2
begin
3
null;
4
end;
5
/
Procedure created.
SQL> create edition e2;
Edition created.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
13565
SQL> select object_name, edition_name
2
from dba_objects
3
where wner = user
4
and object_name like 'P_';
OBJECT_NAME
EDITION_NAME
------------------------------ ------------------------------
P3 ORA$BASE
P2 ORA$BASE
P1 ORA$BASE
SQL> alter session set edition = e2;
Session altered.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
13565
SQL> drop procedure p2;
Procedure dropped.
SQL> create or replace procedure p1 as
2
begin
3
dbms_output.put_line('e2');
4
end;
5
/
Procedure created.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
13564
SQL> select object_name, edition_name
2
from dba_objects
3
where wner = user
4
and object_name like 'P_';
OBJECT_NAME
EDITION_NAME
------------------------------ ------------------------------
P3 ORA$BASE
P1 E2
SQL> create or replace procedure p4 as
2
begin
3
null;
4
end;
5
/
Procedure created.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
13565
SQL> select object_name, edition_name
2
from dba_objects
3
where wner = user
4
and object_name like 'P_';
OBJECT_NAME
EDITION_NAME
------------------------------ ------------------------------
P3 ORA$BASE
P4 E2
P1 E2
SQL> alter session set edition = ora$base;
Session altered.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
13565
SQL> select object_name, edition_name
2
from dba_objects
3
where wner = user
4 and
object_name like 'P_';
OBJECT_NAME
EDITION_NAME
------------------------------ ------------------------------
P3 ORA$BASE
P2 ORA$BASE
P1 ORA$BASE
SQL> conn test/test
Connected.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
13565
SQL> select object_name, edition_name
2
from dba_objects
3
where wner = 'U1'
4
and object_name like 'P_';
OBJECT_NAME
EDITION_NAME
------------------------------ ------------------------------
P3 ORA$BASE
P2 ORA$BASE
P1 ORA$BASE
可以看到,DBA_OBJECT檢視是版本化的檢視,即使是擁有DBA許可權的使用者在查詢這個檢視的時候也只能看到當前版本可見的檢視,因此DBA_OBJECTS檢視不在包括資料庫中所有的物件,如果想要獲取資料庫中各個版本的所有物件,查詢DBA_OBJECTS_AE檢視:
SQL> select object_name, edition_name
2
from dba_objects_ae
3
where wner = 'U1'
4
and object_name like 'P_';
OBJECT_NAME
EDITION_NAME
------------------------------ ------------------------------
P3 ORA$BASE
P2 ORA$BASE
P1 ORA$BASE
P4 E2
P2 E2
P1 E2
6 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-707810/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用者介面設計--系統的當前物件物件
- 分析依賴物件對當前失敗會話的影響物件會話
- 看到unwrap的,我們也做個自動wrap當前使用者的procedurefunctionpackage指令碼FunctionPackage指令碼
- Oracle查詢當前使用者和當前使用者下的所有表Oracle
- js:當前焦點物件JS物件
- v$session - 你看到的event真的是session當前的等待事件麼?Session事件
- 【指令碼】快速獲得當前使用者下“暫忘”的資料庫物件資訊指令碼資料庫物件
- 【Script】使用PL/SQL快速清理當前使用者下所有資料庫物件SQL資料庫物件
- manjaro 新增當前使用者到kvmJAR
- 使用者查詢當前session IDSession
- sql 查詢當前使用者所有表的容量SQL
- 【轉】檢視Oracle當前使用者下的資訊Oracle
- 呼叫startActivityForResult後onActivityResult立刻響應,返回當前頁onActivityResult不響應的問題
- 檢視當前使用者正在等待事件事件
- oracle 跟蹤當前使用者會話Oracle會話
- git 檢視當前分支指向提交物件SHA值Git物件
- app直播原始碼,當前使用者截止當前時間在本月的連續簽到統計APP原始碼
- $request 請求方法 獲取 API 的當前使用者API
- 檢視當前登入的使用者及其IP地址
- js_原生js獲取當前的使用者ipJS
- 使用當前使用者的資料庫鏈的實現資料庫
- 版本中刪除物件導致當前和子版本中物件不可見物件
- 檢視linux系統當前登陸的使用者Linux
- ORACLE刪除當前使用者下所有的表的方法Oracle
- 我在很多程式當中看到,都有下句存在,可是卻沒有用到這個物件?物件
- 刪除當前資料庫連線使用者資料庫
- Python判斷當前使用者是否是rootPython
- 看看當前某個使用者執行什麼
- php 獲取當前域名和當前協議PHP協議
- 百度地圖JavaScript API獲取使用者當前經緯度並獲取使用者當前詳細地理位置地圖JavaScriptAPI
- @1-MYSQL當前使用者user()與current_user()MySql
- Linux檢視和剔除當前登入使用者Linux
- 檢視當前使用者執行語句等資訊
- 匯出當前域內所有使用者hash的技術整理
- Spring Security - 獲取當前登入使用者的詳細資訊Spring
- Oracle檢視當前登陸使用者的許可權或者角色Oracle
- 判斷當前使用者是否為系統管理員的例項
- ora-01013 使用者請求取消當前的操作