是否可以从C#代码中获取或猜测oracle的oradata文件夹?
e.g。 d:\ ORACLE \产品\ 10.2.0 \ ORADATA
我的目的是创建一个自动创建表空间的安装程序,但我们需要询问用户表空间位置的位置。但如果文本字段可以预先填充“猜测”值,那将是很好的,这样如果猜测正确,用户将不需要做任何事情。
答案 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策略控制。