【发布时间】:2012-07-19 07:35:23
【问题描述】:
是否可以通过 C# 代码获取或猜测 oracle 的 oradata 文件夹?
例如D:\oracle\product\10.2.0\oradata
我的目的是创建一个自动创建表空间的安装程序,但我们需要询问用户表空间的位置。但是,如果可以在文本字段中预先填充“猜测”值,那就太好了,这样如果猜测正确,用户就不需要做任何事情。
【问题讨论】:
标签: c# .net oracle oracle10g oracleclient
是否可以通过 C# 代码获取或猜测 oracle 的 oradata 文件夹?
例如D:\oracle\product\10.2.0\oradata
我的目的是创建一个自动创建表空间的安装程序,但我们需要询问用户表空间的位置。但是,如果可以在文本字段中预先填充“猜测”值,那就太好了,这样如果猜测正确,用户就不需要做任何事情。
【问题讨论】:
标签: c# .net oracle oracle10g oracleclient
环境变量 ORA_HOME 不可靠(无论如何只在服务器上有效)。
获得确定值的唯一方法是通过 V$PARAMETER 视图:
select value
from v$parameter
where name = 'db_create_file_dest';
虽然我不是 100% 如果这个必须被设置。
V$PARAMETER 通常对普通用户不可读。但是当你要创建一个表空间时,我想授予用户该权限不是问题。
但是您可以在不指定数据文件目录的情况下创建表空间。在这种情况下,表空间将在 db_create_file_dest 指定的位置创建。
来自the manual:
文件名可以包含路径前缀。如果不指定这样的路径前缀,那么数据库会添加默认存储位置的路径前缀,这取决于平台。
(强调我的)
【讨论】:
您可以通过在 Oracle 数据字典中查询数据文件的位置来做到这一点——但不同的表空间可能存储在不同的位置。
还有:
不要忘记,数据库可能配置为使用 ASM 或 Oracle 托管文件(我个人最喜欢),在这种情况下,告诉 Oracle 在哪里创建数据文件变得更加困难或没有必要。
我强烈建议在安装程序之外创建表空间,因为表空间的使用通常受 DBA 政策的约束。
【讨论】: