一个普通数据库用户所能查到的"意料之外"的信息(r2笔记98天)
有时候限于工作环境的情况,大多数开发人员只得到了一个权限收到限制的数据库用户。
可能你都不知道你所拥有的数据库用户都能查到哪些你想象不到的数据库信息,其实你知道还是不知道,哪些东西就在那儿:)
假定现在给你一台机器,让你在一个已经登录的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 oracle@rac1 (PMON)
rac1 ora11g oracle@rac1 (VKTM)
rac1 ora11g oracle@rac1 (DIAG)
rac1 ora11g oracle@rac1 (DIA0)
rac1 ora11g oracle@rac1 (DBW0)
rac1 ora11g oracle@rac1 (CKPT)
rac1 ora11g oracle@rac1 (RECO)
rac1 ora11g oracle@rac1 (MMNL)
rac1 ora11g oracle@rac1 (ARC0)
rac1 ora11g oracle@rac1 (ARC2)
rac1 ora11g oracle@rac1 (QMNC)
MACHINE OSUSER USERNAME PROGRAM
-------------------- ------------------------------ ---------- ------------------------------------------------
rac1 ora11g oracle@rac1 (Q002)
rac1 ora11g N1 sqlplus@rac1 (TNS V1-V3)
rac1 ora11g oracle@rac1 (W000)
rac1 ora11g oracle@rac1 (SMCO)
rac1 ora11g oracle@rac1 (PSP0)
rac1 ora11g oracle@rac1 (GEN0)
rac1 ora11g oracle@rac1 (DBRM)
rac1 ora11g oracle@rac1 (MMAN)
rac1 ora11g oracle@rac1 (LGWR)
rac1 ora11g oracle@rac1 (SMON)
rac1 ora11g oracle@rac1 (MMON)
MACHINE OSUSER USERNAME PROGRAM
-------------------- ------------------------------ ---------- ------------------------------------------------
rac1 ora11g oracle@rac1 (ARC1)
rac1 ora11g oracle@rac1 (ARC3)
rac1 ora11g oracle@rac1 (Q001)
rac1 ora11g TEST sqlplus@rac1 (TNS V1-V3)
26 rows selected.
最后一个问题抛砖引玉,怎么查看数据库是否处于归档状态。一般命令archive log list连普通dba都没权限查看。dba倒是可以根据其他的数据字典来查看。普通用户也能完成。
答案就是:
MACHINE OSUSER USERNAME PROGRAM
-------------------- ------------------------------ ---------- ------------------------------------------------
rac1 ora11g oracle@rac1 (ARC1)
rac1 ora11g oracle@rac1 (ARC3)
rac1 ora11g oracle@rac1 (Q001)
rac1 ora11g TEST sqlplus@rac1 (TNS V1-V3)
26 rows selected.
- 如何安装SAS并配置连接Hive/Impala
- Entity Framework——记录执行的命令信息
- 【BlackHat 2017 议题剖析】连接的力量:GitHub 企业版漏洞攻击链构造之旅
- CVE-2015-1641 Word 利用样本分析
- Cloudera Navigator介绍与安装
- [LeetCode]String主题系列{第5,6题}
- CDH内存调拨过度警告分析
- Ztorg:从 root 到 SMS
- [LeetCode]Math主题系列{第7,9,13,273题}
- 被忽视的攻击面:Python package 钓鱼
- [LeetCode]LinkedList主题系列{第2题}
- [LeetCode]HashTable主题系列{第3题}
- 如何使用Oozie API接口向Kerberos集群提交Java程序
- [LeetCode]Array主题系列{35,39,40,48题}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 两分钟真能搞懂桶排序
- SpringMVC文件上传下载
- 学弟不懂原码反码补码,气的我给女朋友讲了一夜
- 使用 HanLP 统计二元语法中的频次
- 算法集锦(13)|自然语言处理| Python代码的语义搜索引擎创建
- 特征锦囊:彻底了解一下WOE和IV
- Nginx专辑|05 -如何使用Nginx配置正向代理
- 详解 SIGHAN05 的目录结构
- 工业数据分析之数据归一化 | 冰水数据智能专题 | 2nd
- python写的小程序
- 不求甚解之 Spanning Tree
- C语言常用的一些转换工具函数收集
- OpenAI Gym入门级导游 | 附PDF手册下载 | 山人刷强化 | 4th
- python中常见关于Excel表格读写操作
- 2行代码搞定一个定时器!