Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle:配置设置保存在哪里?_Oracle_Plsql - Fatal编程技术网

Oracle:配置设置保存在哪里?

Oracle:配置设置保存在哪里?,oracle,plsql,Oracle,Plsql,我有三个Oracle 11g数据库:开发、测试和生产。假设三个系统上的日志目录不同: dev => \var\log\oracle\ test => e:\logging\ prod => g:\logs\logging\ 我将这些目录与utl_文件一起使用 我在哪里保存这些设置?是否存在某种“ora_config.ini”,我可以在其中存储这些值并使用PL/SQL轻松读取它们?因为至少Oracle 9i,Oracle有一个目录对象。看 您应该在每个系统上创建一个同名的目录

我有三个Oracle 11g数据库:开发、测试和生产。假设三个系统上的日志目录不同:

dev  => \var\log\oracle\
test => e:\logging\
prod => g:\logs\logging\
我将这些目录与utl_文件一起使用


我在哪里保存这些设置?是否存在某种“ora_config.ini”,我可以在其中存储这些值并使用PL/SQL轻松读取它们?

因为至少Oracle 9i,Oracle有一个
目录对象。看

您应该在每个系统上创建一个同名的目录对象,并在对
utl\u文件的调用中按名称引用该目录

例如,关于“开发”:

关于“测试”:

关于“prod”:

您的PL/SQL代码在所有环境中都是相同的,例如:

f := utl_file.fopen('LOGGING_DIR', 'filename.log', 'W');
DBA应该创建目录对象,并向需要使用它们的数据库用户或角色授予权限


不要将创建目录对象的系统权限授予任何数据库用户,因为这会通过允许Oracle以OS用户“Oracle”的身份读取或可能写入文件系统上的任何位置而造成安全漏洞.

在这种情况下,您不应该使用配置文件来处理环境之间的这些差异,而应该使用一个名为目录的真正Oracle对象。看到我的答案了。所以我应该把这三个脚本放在我的风投之外?让其他开发人员也在他们自己的机器上执行脚本?是的。DBA应该只创建这些对象一次,并对其进行授权。让我重复一下我在回答中写的:不要授予任何数据库用户创建目录对象的权限。我的问题不够清楚。我真的很想保留版本控制系统中的所有代码,除了“硬编码”部分。因此,我将以这样的方式结束:创建目录日志记录_dir作为“$some_variable”;哪里是存储$some_变量的最佳位置?安装说明?这些目录对象应该只创建一次,就像物理目录只创建一次一样。
create directory logging_dir as 'e:\logging';
create directory logging_dir as 'g:\logs\logging';
f := utl_file.fopen('LOGGING_DIR', 'filename.log', 'W');