从c#代码获取Oracle oradata文件夹?

时间:2012-07-19 07:35:24

标签: c# .net oracle oracle10g oracleclient

是否可以从C#代码中获取或猜测oracle的oradata文件夹?

e.g。 d:\ ORACLE \产品\ 10.2.0 \ ORADATA

我的目的是创建一个自动创建表空间的安装程序,但我们需要询问用户表空间位置的位置。但如果文本字段可以预先填充“猜测”值,那将是很好的,这样如果猜测正确,用户将不需要做任何事情。

2 个答案:

答案 0 :(得分:0)

环境变量ORA_HOME不可靠(并且只在服务器上有效)。

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

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

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

普通用户通常无法读取V $ PARAMETER。但是当你要创建一个表空间时,我想让用户认为权限不是问题。

但是您可以创建表空间而无需为数据文件指定目录。在这种情况下,表空间将在db_create_file_dest。

指定的位置创建

来自the manual

  

文件名可以包含路径前缀。如果未指定此类路径前缀,则数据库会添加默认存储位置的路径前缀,该位置取决于平台。

(强调我的)

答案 1 :(得分:0)

您可以通过查询Oracle数据字典获取数据文件的位置来实现此目的 - 但不同的表空间可能存储在不同的位置。

此外:

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

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