![我可以更改正在运行的 Oracle 数据库上的 SHELL 吗?](https://linux22.com/image/136589/%E6%88%91%E5%8F%AF%E4%BB%A5%E6%9B%B4%E6%94%B9%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%20Oracle%20%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8A%E7%9A%84%20SHELL%20%E5%90%97%EF%BC%9F.png)
我刚刚开始签订新合同,遇到了以前从未遇到过的问题。
他们的 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 使用什么解释器来运行脚本,这可以是bash
orksh
或python
orperl
或任何适合特定脚本的内容。
唯一不同的是,当您以用户身份登录时,登录 shell 是什么oracle
,以及在其他任何地方可能会使用登录 shell(您应该阅读 Oracle 数据库的手册,看看它可能在哪里,但是据我所知、ksh
、bash
和csh
均受支持)。
就个人而言,我会避免更改登录 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
在交互工作时只需键入即可。