使用'sysdba'从shell脚本连接到Oracle数据库

omvjsjqw  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(262)

我需要使用'sysdba'权限从shell脚本连接Oracle 11 g数据库。为此,我必须将用户从'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错误enableArchiveLogs.sh:ORA-01031:权限不足
SP2-0306:选项无效。用法:连接器[ECT] [登录] [作为{系统数据库管理员|系统|SYSASM}]其中::= [/][@] [版本=值]|第二次选项无效。用法:CONN[ECT] [登录] [AS {系统数据库管理员|系统|SYSASM}]其中::= [/][@] [版本=值]|第二个参数:尝试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
'
k2arahey

k2arahey1#

CONNECT更改/测试SELECT * FROM学生;出口;
保存为/shell_带有Oracle数据库b_测试/r_连接2.sql
将shell文件写入回显“sqlplus /nolog @/shell_with_oracledb_test/r_连接2.sql”|苏-甲骨文
将此文件命名为-〉filename.sh
执行filename.sh文件
这是示例代码。

相关问题