今天接到临时任务,将测试维护的正确数据导入到现有库中。
思路:
1、使用expdp导出库
2、删除原用户
3、新建用户
4、使用expdp导入库
实施过程中遇到的问题:
1、删除原用户时提示无法删除当前已连接用户
方法:先锁定用户、然后查询进程号,删除对应的进程、再删除对应的用户
①alter user XXX account lock;//一开始没有锁住用户,发现删了进程后,进程数还一直在变,锁住后就不变了
查看用户的连接情况:
②select username,sid,serial#,status from v$session where username='jeesite';如下结果:
username sid serial#
NETBNEW 513 22974
NETBNEW 514 18183
NETBNEW 516 21573
NETBNEW 531 9
ts 532 4562
③ 找到要删除用户的sid,和serial,并删除alter system kill session'513,22974'
被删掉的进程status为killed,其他的为inactive
④删除用户
drop user jeesite cascade;//开始没加cascade,报错。
drop user xxx必须是这个用户下面没有任何对象;这样才可以使用这个命令,否则就会报错;如果用户下面有对象,就得用drop user xxx cascade来删除这个用户以及这个用户下的所有对象了;
2、使用impdp命令导入时一直报参数不正确
impdp jeesite/jeesite@orcl directory=data_pump_dir dumpfile=jeesite.dmp logfile=jeesite.dmp
回头发现logfile的文件名怎么写成了.dmp,无语了