工作内容
- 将21地址下的oracle数据中的用户全部迁移到35数据库中。
- 保证jbpm和其余业务可以正常使用。
工作中使用到的技能
oracle
- expdp impdp的使用
- 用户管理
- 表空间拓展设置
- 数据库链接查询与关闭
- 创建路径并赋予权限
linux
- 用户切换
- ftp命令
- 空间查看命令
java程序配置
- 数据库文件配置
思路
- 根据实际业务程序,整理出需要迁移的数据库用户,并使用expdp命令全部导出(不仅仅是表,包括其他所有object)
expdp test/123456@orcl schemas=test dumpfile=test20181110.dmp directory=dir_dp logfile=test20181110.log
- 第一个参数为数据库用户名/密码@实例名,需要拥有管理员权限,因需多次使用,最好是利用一个管理员账号,把多个用户导出。
- schemas 用户名
- dumpfile 导出文件名
- direcotry 导出路径,这个路径需要在数据库中进行配置并给导出操作的用户赋予权限
create directory dir_dp as 'D:\oracle\dir_dp';
Grant read,write on directory dir_dp to test;
查看目录和操作权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
- logfile 日志文件
- 在35机器上,通过ftp获取21上导出的数据文件
ftp 192.168.1.35
get /oradata/test20181110.dmp
- 在35的数据库上进行数据导入,需要注意必须存在相应的test用户才能导入
impdp test/123456@orcl schemas=test dumpfile=test20181110.dmp directory=dir_dp logfile=test20181110.log
导入命令的参数与导出相同,注意应先创建路径。
因为之前的同事做过一次迁移,所以35的数据库中存在数据,因为不确定impdp导入是否为全部覆盖,故先删除对应的用户在重新创建
create user lrt identified by test
grant connect, resource, dba to test
grant read, write on directory dir_dp to test
- 完成所有导入后,修改对应程序中的配置文件即可(java程序中多为xml或properties(中文译为属性))
遇到的问题
- 导出时报告没有权限错误
在导出的时候,如果系统oracle用户对创建的dir没有写权限,则会导致dmp文件无法写入,需要手动赋予权限。 - ftp获取时提示没有权限
错误原因是在获取是使用的oracle用户,没有home路径权限,切换为root,或转移到对应的目录即可。 - 删除用户时提示用户已连接
原因很明显,只需要查询出对应的连接关闭掉即可
SELECT s.Sid, s.Serial#,p.spid, s.USERNAME,s.OSUser,s.Program FROM V$Process p,V$session s WHERE p.addr=s.paddr(+) and s.username = 'test' ORDER BY s.Sid
alter system kill session 'spid,serial#'
如果实在无法关闭连接,可以强行重启数据库
sqlplu as / sysdba
SHUTDOWN IMMEDIATE
startup
- 11月1日登陆时发现某用户被锁定
原因暂时没有找到,直接使用Toad工具,进入用户设置,取消锁定选项并重新设置密码即可