一个普通数据库用户所能查到的"意料之外"的信息(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.

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-09-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Oracle expdp 时遭遇ORA-39125 ORA-04063

    数据库在使用DataPump导出时碰到了ORA-39125与ORA-04063。完整的ORA-39125提示是Worker unexpected fat...

13910
来自专栏乐沙弥的世界

Oracle 联机重做日志文件(ONLINE LOG FILE)

--=========================================

12620
来自专栏杨建荣的学习笔记

一条sql语句“导致”的数据库宕机问题及分析 (38天)

最近测试环境需要做一些变更,把测试环境切分成两套环境,存储空间也需要压缩压缩和整理。 unix组的人已经开始做空间划分了,然后我们需要在此基础上重建一套环境。 ...

36540
来自专栏杨建荣的学习笔记

执行计划变化导致CPU负载高的问题分析 (r8笔记第20天)

前几天碰到一个CPU负载较高的问题。从系统层面来看,情况不是很严重,但是从应用的角度来说,已经感觉到很慢了。因为前端的调用频率还是比较高。所以会把这个问题放大。...

27670
来自专栏杨建荣的学习笔记

SQL*Loader-805的解决(r2笔记36天)

使用sql*loader是大型项目中数据迁移的利器。如果是外部系统,其他数据库到oracle的数据迁移,使用文本式文件是最兼容的方式。 sqlldr的加载效率是...

32380
来自专栏杨建荣的学习笔记

生产环境sql语句调优实战第六篇(r2笔记91天)

生产环境中有大量的sql语句在运行,尽管有awr,ash做数据的收集统计,但是dba的调优工作大多数情况都是在问题已经发生后做排查的,有些sql语句可能执行的时...

28040
来自专栏乐沙弥的世界

Heap size 80869K exceeds notification threshold (51200K)

      前阵子的alert日志获得了所需堆尺寸的大小超出指定阙值的提示,即Heap size 80869K exceeds notification thr...

10830
来自专栏杨建荣的学习笔记

insert中启用错误日志的问题及分析(r2第10天)

在平时的工作中,有时候需要insert一批数据,这些数据可能是临时表,外部表,普通表,子查询等形式,类似下面的格式 insert into xxxx (sele...

33590
来自专栏乐沙弥的世界

使用带dblink方式的datapump迁移Oracle 10g到11g

      对于从Oracle 10g下迁移数据库到Oracle 11g,除了使用RMAN方式之外,我们可以使用带dblink的datapump方式来实现基于逻...

8110
来自专栏cloudskyme

使用oracle的大数据工具ODCH访问HDFS数据文件

软件下载 Oracle Big Data Connectors:ODCH 下载地址: http://www.oracle.com/technetwork/bdc...

39380

扫码关注云+社区

领取腾讯云代金券