我这边环境是WINDOWS2003+ORACLE9.2.0.1.0,想用BAT实现自动恢复备数据库,我有脚本如下,大意是用SYS删除TEST用户,然后新建TEST用户,再执行脚本;为什么我用以下脚本执行时窗口一直停留在sqlplus -s /nolog这个界面上,而不往下执行呢?
sqlplus -s /nolog
spool /sql.log
conn / as sysdba
WHENEVER SQLERROR continue;
WHENEVER OSERROR EXIT 1
select * from dual;
drop user test cascade;
CREATE USER "test"  PROFILE "DEFAULT" IDENTIFIED BY "test" DEFAULT TABLESPACE "TEST" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT SYSDBA TO "test" WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO "test" WITH ADMIN OPTION;
GRANT "CONNECT" TO "test" WITH ADMIN OPTION;
GRANT "DBA" TO "test" WITH ADMIN OPTION;
GRANT "EXP_FULL_DATABASE" TO "test" WITH ADMIN OPTION;
GRANT "IMP_FULL_DATABASE" TO "test" WITH ADMIN OPTION;
GRANT "RESOURCE" TO "test" WITH ADMIN OPTION;
conn test/test
WHENEVER SQLERROR continue;
WHENEVER OSERROR EXIT 1
select * from dual;
@ /sript.sql;
@ /job.sql;
spool off
EXIT 0

解决方案 »

  1.   

    sqlplus有个参数是执行一个sql文件,好像是-f还是-file(不常用,忘了)
    所以要把下面的sql命令写在一个sql文件中
      

  2.   

    我按照其他网友写的
    先将要执行的SQL语句写一个sql脚本文件.例如: star.sql
    BAT文件中加入一句 sqlplus system/admin @star.sql 即可可是执行时报SP2-0310:无法打开文件,不知道是何原因.
      

  3.   

    sqlplus system/admin @'e:\test\star.sql',我用了绝对路径,怎么还是不行哦.郁闷了.
      

  4.   

    sqlplus system/admin @e:\test\star.sql
      

  5.   

    如果路径有空格的话,要用引号"e:\test \ star.sql"
      

  6.   

    呵呵,已经OK了,直接在目录下执行sqlplus system/admin @star.sql就可以了,谢谢各位了。