我有以下批处理脚本:
copy \\remotehost.ip\c$\dumps\TEST_%date%.dmp C:\dumps\TEST_%date%.dmp
sqlplus sys/password as SYSDBA @C:\dumps\recreate_test.sql > C:\dumps\recreate_test.log
timeout /t 10
impdp system/password@sid schemas=TEST,TEST_VIEW directory=dumps_dir dumpfile=TEST_%date%.dmp logfile=impdpTEST_%date%.log
它从同一网络中的远程主机复制 sql dmp 文件。然后运行在数据库中重新创建用户的脚本:
shutdown immediate;
startup restrict;
drop user TEST cascade;
drop user TEST_VIEW cascade;
create user TEST identified by password;
create user TEST_VIEW identified by password;
grant all privileges to TEST;
grant all privileges to TEST_VIEW;
EXEC DBMS_UTILITY.compile_schema(schema => 'TEST');
EXEC DBMS_UTILITY.compile_schema(schema => 'TEST_VIEW');
shutdown immediate;
startup;
exit;
然后运行导入脚本。所有这些 SQL 都有日志文件,似乎一切运行良好。导入过程中我遇到了一些错误,但他们只是告诉我用户已经存在(ORA-31684
)并导入此现有用户的所有内容,并得到ORA-39082
错误,本来是应该稍后修复的DBMS_UTILITY
(是的,我在这里看到了我的错误,但这不是重点)。
我以最高权限运行它。系统管理员允许我检查选项Run whether user is logged on or not
和选项Do not store password
。即使我Run
从任务计划程序的下拉菜单中选择手动运行任务,它也有 0x5 代码。
如果一切运行正常,为什么我的任务会以 0x5 错误代码结束?我看过日志,它们很好。