0

Is it possible to get or guess oracle's oradata folder from a C# code?

e.g. D:\oracle\product\10.2.0\oradata

My purpose is to create an installer that automatically create tablespace, but we need to ask the user where the tablespace location will be. But it would be nice if the text field can be prepopulated with the "guessed" value so that the user won't need to do anything if the guess is correct.

4

2 回答 2

0

环境变量 ORA_HOME 不可靠(无论如何只在服务器上有效)。

获得确定值的唯一方法是通过 V$PARAMETER 视图:

select value
from v$parameter
where name = 'db_create_file_dest';

虽然如果必须设置,我不是 100% 。

V$PARAMETER 通常对普通用户不可读。但是当您要创建一个表空间时,我想授予用户该权限不是问题。

但是您可以在不指定数据文件目录的情况下创建表空间。在这种情况下,表空间将在 db_create_file_dest 指定的位置创建。

手册

文件名可以包含路径前缀。如果您不指定这样的路径前缀,那么数据库会为默认存储位置添加路径前缀,这取决于平台。

(强调我的)

于 2012-07-19T07:43:10.060 回答
0

您可以通过在 Oracle 数据字典中查询数据文件的位置来做到这一点——但不同的表空间可能存储在不同的位置。

还:

不要忘记数据库可能被配置为使用 ASM 或 Oracle Managed Files(我个人最喜欢的),在这种情况下,告诉 Oracle 在哪里创建数据文件变得更加困难或不必要。

我强烈建议在安装程序之外创建表空间,因为表空间的使用通常受 DBA 策略的约束。

于 2012-07-19T07:43:26.660 回答