问题描述:
exp迁移库时,发现各用户的job建到了system用户里!!!
问题测试:
--在源数据库创建JOB(LINUX平台)
--查询版本号
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
--创建exptest用户
SQL> create user exptest identified by exptest default tablespace users;
User created.
--给该用户授权
SQL> grant dba,resource,connect to exptest;
Grant succeeded.
--用exptest用户登录
SQL> conn exptest/exptest
Connected.
--创建一个测试JOB
variable job number;
begin
sys.dbms_job.submit(job=>:job,what => 'dbms_output.put_line(''haha''); ',next_date=>sysdate,interval=>'sysdate+1 ');
commit;
end;
/
--导出exptest下的对象
exp system/admin wner=exptest file=/home/oracle/oracle/admin/orcl/udump/exptest.dmp log=/home/oracle/oracle/admin/orcl/udump/exptestx.log
--登录到迁出数据库服务器
(本测试用WINDOWS XP,ORACLE已经安装并配置完毕)
--在CMD命令行执行下面的导入语句,导入exptest所有对象
imp system/admin fromuser=exptest touser=exptest file=F:\ora_exp\exptest.dmp buffer=256000
--用exptest用户登录,查询版本号
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
--查询user_jobs
select * from user_jobs;
没有查到源数据库exptest用户建立的JOB。
--用SYSTEM用户登录,查询user_jobs,可以查到该JOB
select * from user_jobs;
为何exptest用户创建的JOB跑到SYSTEM用户下了呢?
问题解决方法
--查询JOB$表,找到EXPTEST用户建立的JOB,更改lowner,powner两个属性
update job$ set lowner='EXPTEST',powner='EXPTEST' WHERE JOB=21;
--用exptest用户登录,查询user_jobs
select * from user_jobs;
发现可以查询到相应的JOB了,JOB也可以执行成功。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11088128/viewspace-692489/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11088128/viewspace-692489/