一個普通資料庫使用者所能查到的"意料之外"的資訊
有時候限於工作環境的情況,大多數開發人員只得到了一個許可權收到限制的資料庫使用者。
可能你都不知道你所擁有的資料庫使用者都能查到哪些你想象不到的資料庫資訊,其實你知道還是不知道,哪些東西就在那兒:)
假定現在給你一臺機器,讓你在一個已經登入的sqlplus環境下自己探索一把,在短時間內完成下面的工作,你心裡有底嗎?
得到當前的使用者名稱和所用的os賬戶名稱
得到當前的使用者建立的時間,預設的表空間是哪一個,是否是dba賬戶
檢視當前資料庫的表空間大體情況。
檢視當前資料庫的例項名稱,所在伺服器名稱和字符集
檢視以PROFILE為關鍵字的相關資料字典名稱
檢視當前資料庫是否處於歸檔模式
答案並非固定的,可以根據自己的思路來自己分析,以下是我的分析。以上問題的答案都在分析裡面。
首先,我可以使用 show user來檢視當前的使用者名稱。使用define得到一些簡單的資訊
SQL> show user
USER is "TEST"
SQL> define
DEFINE _DATE = "17-SEP-14" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "TEST01" (CHAR)
DEFINE _USER = "TEST" (CHAR)
DEFINE _PRIVILEGE = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1102000300" (CHAR)
DEFINE _EDITOR = "ed" (CHAR)
DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR)
DEFINE _O_RELEASE = "1102000300" (CHAR)
檢視當前使用者的一些更為詳細的資訊。
1* select *from user_users
SQL> /
USERNAME USER_ID ACCOUNT_ST LOCK_DATE EXPIRY_DA DEFAULT_TA TEMPORARY_TABLESPACE CREATED INITIAL_RSRC_CONSUMER_GROUP EXTERNAL_NAME
---------- ---------- ---------- --------- --------- ---------- ------------------------------ --------- ------------------------------ ------------------------------
TEST 280 OPEN 16-MAR-15 SYSTEM TEMPTS1 17-SEP-14 DEFAULT_CONSUMER_GROUP
然後使用下面的sql來檢視當前的資料庫例項的一些資訊。
col isdba format a10
col language format a25
col current_user format a15
col os_user format a15
col host format a15
col ip_address format a15
col db_name format a15
檢視資料庫的全域性名。
SQL> select *from global_name;
GLOBAL_NAME
----------------------------------------------------------------------------------------------------
TEST01
得到一些更為詳盡的資訊
SQL> select SYS_CONTEXT('USERENV','ISDBA') isdba,SYS_CONTEXT('USERENV','LANGUAGE') language,SYS_CONTEXT('USERENV','CURRENT_USER') current_user,SYS_CONTEXT('USERENV','DB_NAME') db_name,SYS_CONTEXT('USERENV','HOST') host,SYS_CONTEXT('USERENV','OS_USER') os_user,SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address from dual
/
ISDBA LANGUAGE CURRENT_USER DB_NAME HOST OS_USER IP_ADDRESS
---------- ------------------------- --------------- --------------- --------------- --------------- ---------------
FALSE AMERICAN_AMERICA.AL32UTF8 TEST TEST01 rac1 ora11g
當前使用者所擁有的許可權。
SQL> select *from session_roles;
ROLE
------------------------------
CONNECT
RESOURCE
當前使用者下的物件情況。
SQL> select *from cat;
no rows selected
雖然當前的使用者下沒有任何表和其他資料庫物件,但是你還能查到一些其他的資訊。使用all_objects
PRODUCT_PRIVS SYSTEM
PRODUCT_PROFILE PUBLIC
OBJECT_NAME OWNER
------------------------------ ------------------------------
PRODUCT_USER_PROFILE PUBLIC
5656 rows selected.
SQL> l
1* select object_name,owner from all_objects
檢視當前資料庫中所有的使用者。
select object_name,owner from all_users
.....
TEST2 33 31-JAN-14
APPQOSSYS 31 23-JAN-14
DBSNMP 30 23-JAN-14
ORACLE_OCM 21 23-JAN-14
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
PRDCONN 264 03-JUN-14
DIP 14 23-JAN-14
OUTLN 9 23-JAN-14
SYSTEM 5 23-JAN-14
SYS 0 23-JAN-14
27 rows selected.
檢視能不能訪問到一些其他的資料字典表。
SQL> select owner,object_name from all_objects where object_name like '%INSTANCE';
OWNER OBJECT_NAME
------------------------------ ------------------------------
SYS EXU81PROCOBJINSTANCE
PUBLIC V$INSTANCE
PUBLIC GV$INSTANCE
PUBLIC DBA_HIST_DATABASE_INSTANCE
SQL> desc V$INSTANCE
ERROR:
ORA-04043: object "SYS"."V_$INSTANCE" does not exist
檢視錶空間的資訊。
SQL> select tablespace_name from user_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS
TEMPTS1
TEST_DATA1
POOL_DATA
透過dict能夠查到所有你知道不知道的資料字典名稱。
SQL> desc dict
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(4000)
檢視當前的一些session情況。
1* select machine ,osuser,username ,program from v$session
SQL> /
MACHINE OSUSER USERNAME PROGRAM
-------------------- ------------------------------ ---------- ------------------------------------------------
rac1 ora11g (PMON)
rac1 ora11g (VKTM)
rac1 ora11g (DIAG)
rac1 ora11g (DIA0)
rac1 ora11g (DBW0)
rac1 ora11g (CKPT)
rac1 ora11g (RECO)
rac1 ora11g (MMNL)
rac1 ora11g (ARC0)
rac1 ora11g (ARC2)
rac1 ora11g (QMNC)
MACHINE OSUSER USERNAME PROGRAM
-------------------- ------------------------------ ---------- ------------------------------------------------
rac1 ora11g (Q002)
rac1 ora11g N1 (TNS V1-V3)
rac1 ora11g (W000)
rac1 ora11g (SMCO)
rac1 ora11g (PSP0)
rac1 ora11g (GEN0)
rac1 ora11g (DBRM)
rac1 ora11g (MMAN)
rac1 ora11g (LGWR)
rac1 ora11g (SMON)
rac1 ora11g (MMON)
MACHINE OSUSER USERNAME PROGRAM
-------------------- ------------------------------ ---------- ------------------------------------------------
rac1 ora11g (ARC1)
rac1 ora11g (ARC3)
rac1 ora11g (Q001)
rac1 ora11g TEST (TNS V1-V3)
26 rows selected.
最後一個問題拋磚引玉,怎麼檢視資料庫是否處於歸檔狀態。一般命令archive log list連普通dba都沒許可權檢視。dba倒是可以根據其他的資料字典來檢視。普通使用者也能完成。
答案就是:
MACHINE OSUSER USERNAME PROGRAM
-------------------- ------------------------------ ---------- ------------------------------------------------
rac1 ora11g (ARC1)
rac1 ora11g (ARC3)
rac1 ora11g (Q001)
rac1 ora11g TEST (TNS V1-V3)
26 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347023/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中對使用者所能使用的資料庫資源進行限制Oracle資料庫
- 查詢資料庫中的所有的普通使用者資料庫
- 一個好用的免費IP離線地理資訊資料庫資料庫
- 在一個資料庫中模擬兩個資料庫(每個資料庫中使用者都建立表的同義詞)資料庫
- 在另一個資料庫中建立一個與原來資料庫中許可權一樣的使用者資料庫
- 僅僅丟失一個普通使用者資料檔案的恢復A(聯機恢復)
- SQL Server資料庫怎麼找出一個表包含的頁資訊(Page)SQLServer資料庫
- 通過IP地址如何查到使用者真實個人資訊!!
- 【ASM學習】普通資料庫向ASM例項的遷移(一)ASM資料庫
- 當我接到一個新的mysql資料庫時,需要搞清楚的資訊MySql資料庫
- 資料庫的資訊保安管理資料庫
- 兩個資料庫結構相同,但使用者、表空間名稱都不同,如何把一個資料庫中的使用者導到另一個資料庫
- 兩個資料庫結構相同,但使用者、表空間名稱都不同,如何把一個資料庫中的使用者導到另一個使用者中(zt)資料庫
- impdp在同一個資料庫中將一個使用者下的物件複製到另一個使用者下資料庫物件
- 【DIRECTORY】普通使用者建立Oracle DIRECTORY資料庫物件的許可權需求及探索Oracle資料庫物件
- 建一個使用者來備份另外一個使用者的資料
- ASM資料庫的一個測試ASM資料庫
- zblog的資料庫配置檔案是哪個?怎樣修改資料庫配置資訊?資料庫
- 查詢資料庫中表的資訊資料庫
- 資料庫會話記錄使用者登陸的密碼資訊資料庫會話密碼
- 將asm上的資料庫移動到普通的filesystem上ASM資料庫
- 控制普通使用者訪問資料字典
- 單一資料庫拆分成幾十個資料庫的意義資料庫
- Oracle 如何快速的 duplicate 一個資料庫Oracle資料庫
- PouchDB:一個開源的 JS 資料庫JS資料庫
- 批量的遷移一個資料庫上某使用者所有表的同義詞資料庫
- 通過shell指令碼得到資料庫的基本資訊(一)指令碼資料庫
- 定時從一個資料庫表中的資料儲存到另外一個資料庫中的表,而且怎麼處理重複的資料?...資料庫
- 管理叢集資料庫的兩個使用者與兩個命令資料庫
- SqlServer將資料庫中的表複製到另一個資料庫SQLServer資料庫
- 如何匯出11.2.0.4的某個資料庫使用者許可權及角色並快速複製到另一個同版本的資料庫資料庫
- 使用RMAN恢復一個資料庫到另一個目錄結構不同的資料庫中資料庫
- MySQL NOT NULL列用 WHERE IS NULL 也能查到資料的原因MySqlNull
- 資料庫及使用者的建立資料庫
- 一個通過rms寫成的小型資料庫引擎,簡單的資料庫引擎資料庫
- 一個Oracle soft 啟用2個Clone 的資料庫Oracle資料庫
- 怎樣設計一個好的資料庫資料庫
- 一個比 Redis 效能更強的資料庫Redis資料庫