0

我需要使用“sysdba”权限从 shell 脚本连接我的 Oracle 11g 数据库。为此,我必须将用户从“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] [logon] [AS {SYSDBA|SYSOPER|SYSASM}] 其​​中 ::= [/][@] [edition=value] | /SP2-0306:无效选项。用法:CONN[ECT] [logon] [AS {SYSDBA|SYSOPER|SYSASM}] 其​​中 ::= [/][@] [edition=value] | / SP2-0157: 3 次尝试后无法连接到 ORACLE,退出 SQL*Plus [root@vEMS-23 devel]#

据我所知,它无法验证为“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
'
4

1 回答 1

0

CONNECT chan/testing SELECT * FROM student; 出口;

另存为 /shell_with_oracledb_test/r_connection2.sql

将 shell 文件写为 echo "sqlplus /nolog @/shell_with_oracledb_test/r_connection2.sql" | 甲骨文

命名这个文件-> filename.sh

执行文件名.sh 文件

这是示例代码。

于 2013-05-07T11:45:42.083 回答