Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接到数据库并运行一些查询的shell脚本_Sql_Oracle_Shell - Fatal编程技术网

Sql 连接到数据库并运行一些查询的shell脚本

Sql 连接到数据库并运行一些查询的shell脚本,sql,oracle,shell,Sql,Oracle,Shell,我正在尝试编写一个脚本,在这个脚本中,我可以作为dba用户连接到db,并计算用户数。最后,我想更新我的脚本以检查用户是否存在;杀死他们的会话;然后删除用户。但目前我想从计算用户开始,只是为了确保我的脚本正在运行 但看起来它没有连接到DB echo echo "3> Resetting databases..." read -p "Enter Database Server Hostname: " db_host read -p "Enter Databas

我正在尝试编写一个脚本,在这个脚本中,我可以作为dba用户连接到db,并计算用户数。最后,我想更新我的脚本以检查用户是否存在;杀死他们的会话;然后删除用户。但目前我想从计算用户开始,只是为了确保我的脚本正在运行

但看起来它没有连接到DB

    echo
    echo "3> Resetting databases..."

    read -p "Enter Database Server Hostname: " db_host
    read -p "Enter Database SID: " db_sid
    read -p "Enter DBA User: " dba_usr
    read -p "Enter DBA password: " dba_pwd

    read -p "Enter Schema1 owner: " usr1
    read -p "Enter alternate user1 " usr2
    read -p "Enter alternate user2 " usr3

    sqlplus -s $dba_usr/$dba_pwd@$db_sid << EOF

            set timing off
            set feedback off
            set serveroutput off

            DECLARE
                    usr1 varchar2(10) := '$usr1';
                    usr2 varchar2(10) := '$usr2';
                    usr3 varchar2(10) := '$usr3';
                    total INTEGER;

                    TYPE user_arr IS VARRAY(3) OF VARCHAR2(20);
                    users user_arr;

            BEGIN
                    dbms_output.put_line('Entered inside this block...');

                    users := user_arr( upper(usr1),
                                       upper(usr2),
                                       upper(usr3) );

                    total := users.count;

                    FOR i in 1 .. total LOOP
                            dbms_output.put_line('Usernames are: '|| users(i));
                    END LOOP;

            END;
/
EOF

在获取输入值之后,它什么也不做。我不知道出了什么问题。试图修复它,但无法修复。有人能解决这个问题吗?谢谢大家!

只需删除
关闭设置服务器输出


您正在指示SQL*Plus不要输出任何内容。

猜测:
$dba_usr/$dba_pwd@$db_sid
中是否有需要引号的字符?不,不需要引号。缺少其他内容…嗯,你能用
-l
连接吗?(可能暂时没有
-s
)?
3> Resetting databases...
Enter Database Server Hostname: HOSTNAME
Enter Database SID: SID
Enter DBA User: DBA
Enter DBA password: pwd
Enter Schema1 owner: user1
Enter alternate user1 user2
Enter alternate user2 user3