一个普通数据库用户所能查到的"意料之外"的信息

简介: 有时候限于工作环境的情况,大多数开发人员只得到了一个权限收到限制的数据库用户。 可能你都不知道你所拥有的数据库用户都能查到哪些你想象不到的数据库信息,其实你知道还是不知道,哪些东西就在那儿:) 假定现在给你一台机器,让你在一个已经登录的sqlplus环境下自己探索一把,在短时间内完成下面的工作,你心里有底吗? 得到当前的用户名和所用的os账户名称 得到当前的用户创建的时间,默认的表空间是哪一个,是否是dba账户 查看当前数据库的表空间大体情况。

有时候限于工作环境的情况,大多数开发人员只得到了一个权限收到限制的数据库用户。
可能你都不知道你所拥有的数据库用户都能查到哪些你想象不到的数据库信息,其实你知道还是不知道,哪些东西就在那儿:)
假定现在给你一台机器,让你在一个已经登录的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.

目录
相关文章
|
1月前
|
XML Java 数据库连接
WebGIS 信息系统-数据库设计
WebGIS 信息系统-数据库设计
40 0
|
6月前
|
数据库 OceanBase
OceanBase 数据库的版本信息
OceanBase 数据库的版本信息
933 1
|
2月前
|
存储 监控 安全
内网屏幕监控软件的数据存储与管理:使用SQLite数据库保存监控记录和配置信息
在当今数字化时代,安全和监控在企业和组织中变得至关重要。内网屏幕监控软件作为一种关键工具,帮助组织监视员工的活动并确保信息安全。这种软件不仅需要高效地记录和管理监控数据,还需要能够方便地进行配置和调整。本文将讨论如何使用SQLite数据库来保存监控记录和配置信息,并介绍如何通过自动化机制将监控到的数据提交到指定网站。
154 2
|
14天前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
26天前
|
SQL 关系型数据库 MySQL
Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中
Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中
10 0
|
1月前
|
SQL 存储 数据管理
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
36 1
|
6月前
|
前端开发 Java 数据库
JSp城市生活信息收集发布网myeclipse开发sqlserver2008数据库BS模式java编程网页结构struts2
JSP城市生活信息收集发布网是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 struts2 dao+bean mvc模式,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为sqlserver2008,使用java语言开发,系统主要采用B/S模式开发。
24 0
|
2月前
|
数据库 Android开发 数据库管理
【Android】使用android studio查看内置数据库信息
【Android】使用android studio查看内置数据库信息
70 0
|
4月前
|
存储 SQL 定位技术
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
|
4月前
|
存储 SQL 数据挖掘
某工商信息商业查询平台基于阿里云数据库 SelectDB 版内核 Apache Doris 的湖仓一体建设实践
从传统 Lambda 架构到基于 Doris Multi-Catalog 的湖仓一体架构实践,保证了数据的准确性和实时性、高效处理和分析了大规模数据,推动信息服务行业发展创新!
某工商信息商业查询平台基于阿里云数据库 SelectDB 版内核 Apache Doris 的湖仓一体建设实践