只知道SID,我能找到Oracle模式用户名和密码吗?

时间:2014-05-14 04:47:41

标签: oracle

我在Linux机器上运行了一个应用程序。该应用程序使用Oracle作为后端。

我不知道用户名和密码或oracle用于运行应用程序的任何架构。我所知道的只是Oracle SID。我能否知道运行应用程序所需的oracle用户名和密码?

2 个答案:

答案 0 :(得分:2)

不是没有更多信息,没有。

想象一下,只有了解SID,并且可能是运行数据库的服务器的IP地址,才能获得用户名和密码。那将是一个令人难以置信的微不足道的闯入世界上任何数据库。 SID是12 character string that is case-insensitive on some platforms and is limited to letters and numbers。这将是一个相当不敏感的密码。但是,连接到数据库也需要SID,因此必须广泛分发。如果这是闯入数据库所必需的,那么没有人会将Oracle用于任何远程重要的事情。

答案 1 :(得分:1)

不,你可以远程使用机器的SID和地址来连接到TNS监听器并查询服务(取决于监听器配置)。

否则,出于安全考虑,我会出售我的Oracle许可证。 :)

如果您自己在计算机上,除非您在数据库上拥有用户帐户,或者属于dba或osoper组等,否则您将无法连接到数据库。不是为了黑客兴趣,但出于信息目的,如果你有一个操作系统帐户,你唯一可能看到的是sqlplus,sqlldr或在命令字符串中带有凭​​据的导出会话(这就是为什么在非私人机器上你应该总是以提示模式登录这些实用程序,而不是通过在命令行上传递凭据。)

OP更新了问题:

从操作系统帐户以sysdba身份登录Oracle,并在应用处于活动状态时查询 v $ session 视图。如果应用程序正在登录,它将显示在v $ session中。如果您遇到麻烦,但您碰巧知道了表名,请查询SYS.DBA_TABLES作为表名,并记下OWNER列。或者查看V $ SQLAREA或显示系统上当前或最近SQL查询的其他动态视图之一。

示例:

root# su - oracle
oracle@linuxdb ~]$ sqlplus / as sysdba
SQL> select username, status, program from v$session where username is not null;  

一旦您知道哪个架构没有应用密码,您就可以查看或导出架构。重置密码后,您将无法恢复密码。相反,我会设置SYSTEM密码,然后运行expdp(或exp)并导出架构。类似的东西:

oracle@linuxdb ~]$ expdp system/manager schemas=appschema <other parameters here...>