我可以更改正在运行的 Oracle 数据库上的 SHELL 吗?

我可以更改正在运行的 Oracle 数据库上的 SHELL 吗?

我刚刚开始签订新合同,遇到了以前从未遇到过的问题。

他们的 Oracle 数据库是在 korn shell 下启动的。

oracle:x:500:100:Oracle user:/home/oracle:/usr/bin/ksh

我有所有的 bash 脚本,没有测试环境,只是喜欢日常使用 bash。

我尝试过从 .profile 调用 bash,但是当脚本需要环境变量并且另一个 shell 启动时,这会变得混乱。

我可以简单地编辑 /etc/passwd 并在登录时启动 bash shell,而不影响正在运行的进程吗?

答案1

数据库本身可能不会经常使用登录 shell。

登录 shell 不限制您使用它bash来编写脚本。脚本中的 -行#!告诉 shell 使用什么解释器来运行脚本,这可以是bashorkshpythonorperl或任何适合特定脚本的内容。

唯一不同的是,当您以用户身份登录时,登录 shell 是什么oracle,以及在其他任何地方可能会使用登录 shell(您应该阅读 Oracle 数据库的手册,看看它可能在哪里,但是据我所知kshbashcsh均受支持)。

就个人而言,我会避免更改登录 shell,而是bash从命令行手动启动交互式 shell(如果这是您希望作为用户用于交互式工作的 shell)oracle

答案2

我建议创建一个个人 unix 帐户以供常规使用(可以使用 bash),并且仅在需要时使用 oracle 帐户;这将帮助您避免因更改帐户(或使 Oracle 可能向您发送的有关如何操作的文档无效)而可能出现的任何意外。如果您更改外壳,它可能不会破坏正在运行的进程,它只是可能会导致意外。

对于您可能想要执行的大多数 DDL/DML 工作,您不需要成为 Oracle 用户;您只需成为 Oracle 用户即可。您可以使用您的个人帐户。

答案3

准确回答这个问题:当然,你可以更改oracle的shell而不影响当前的流程。不过,我建议chsh不要编辑 /etc/passwd 。

考虑期望在 ksh 中作为 oracle 运行的 cron(或以其他方式安排的)作业。还要考虑从现有进程生成的任何希望将 ksh 作为其登录 shell 运行的作业。

快速浏览一下适用于 Linux x86-64 的 Oracle® 数据库快速安装指南 11g 第 1 版 (11.1)表示对除 ksh 之外的 shell 的一些支持,但您需要相应地设置所需的 shell 配置文件。

在进行这样的更改后,我会回收该应用程序,以确保您获得一切。

设置 ~/.bashrc 和/或 ~/.bash_profile 可能会更容易,然后exec bash在交互工作时只需键入即可。

相关内容