使用“sysdba”从 shell 脚本连接到 Oracle DB

问题描述 投票:0回答:1

我需要使用“sysdba”权限从 shell 脚本连接我的 Oracle 11g DB。为此,我必须将用户从“root”切换到“oracle”。 我尝试了以下方法但没有成功。

su - oracle -c "<< EOF1
    sqlplus -s "/ as sysdba" << EOF2
    whenever sqlerror exit sql.sqlcode;
    set echo off 
    set heading off

    shutdown immediate
    startup mount
    alter database archivelog;
    alter database open;

    exit;
    EOF2
EOF1"

我收到以下错误。

[root@vEMS-23 devel]# ./enableArchiveLogs.sh 错误:ORA-01031: 权限不足

SP2-0306:选项无效。用法:CONN[ECT] [登录] [AS {SYSDBA|SYSOPER|SYSASM}] 其中 ::= [/][@] [版本=值] | / SP2-0306:选项无效。用法:CONN[ECT] [登录] [AS {SYSDBA|SYSOPER|SYSASM}] 其中 ::= [/][@] [版本=值] | / SP2-0157:3 次尝试后无法连接到 ORACLE,正在退出 SQL*Plus [root@vEMS-23 开发]#

据我所知,它无法通过“sysdba”身份验证。如果我最初删除“su - oracle -c”并以 oracle 用户身份运行脚本,则不会发生这种情况。

有什么线索吗?


我已经得到答案了:

答案很简单。我只是语法有点混乱。以下是工作代码:

su - oracle -c 'sqlplus -s / as sysdba <<EOF
   whenever sqlerror exit sql.sqlcode;
   set echo off 
   set heading off

   shutdown immediate
   startup mount
   alter database noarchivelog;
   alter database open;

   exit;
EOF
'
shell oracle11g
1个回答
0
投票

CONNECT 陈/测试 选择 * 来自学生; 退出;

另存为/shell_with_oracledb_test/r_connection2.sql

将 shell 文件编写为 回显“sqlplus /nolog @/shell_with_oracledb_test/r_connection2.sql”| su - 甲骨文

命名此文件 -> filename.sh

执行filename.sh文件

这是示例代码。

© www.soinside.com 2019 - 2024. All rights reserved.