最近公司将原数据库服务器切换。之前没整过这块,也是一堆的度娘。经过不停的摸索,终于成功了。现在将这份艰辛记录下来,方便自己以后查阅的同时,方便有类似需求的同学参考。
我们此次切换共分:ERP、LOS、WMS三个系统。
因前期搭建,这三个系统均在同一实例。以不同的表空间、用户区分。
此次切换思路:
1)以实例的方式备份、还原。命令 Exp/imp (命令不再叙述)
优点:省事、可整体导出还原、内网之间切换,可远程备份(如:将 192.168.1.1 备份至 192.168.1.2);
结果:失败;提示表空间、用户、实例、索引已存在,无法继续还原;
2)以表空间的方式备份、还原。命令 Exp/Imp
较前一种方式,将同一实例拆解成三个表空间的形式备份、还原
结果:失败; 原因:同一表空间下多个用户,以表空间的形式导入,部分用户未建立的原因(这个原因纯属个人猜测,有机会再验证一下)
3)按用户的方式备份、还原。命令 Expdp/Impdp(Oracle 10G以后版本支持)
优点:该方式备份速度快。(与第一种方式相比,该方式为本地备份,再将备份文件拷贝至新服务器还原。我们这次是内网间切换,这种方式是比较适合的)
结果:成功!
错误提示:
a)空表索引创建失败(忽略)
b)带dbLink 的视图创建失败(还原方式:先还原存储过程->索引->视图->DbLink) 。在创建视图时,Dblink还未创建,所以失败。因涉及到DbLink 的视图较少,按照还原日志,从老库将其还原
思路如上,具体流程如下:
迁移流程
1、建立实例
2、设置备份文件夹:create directory backup as ‘文件夹地址‘;
查看设置的文件夹select * from dba_directories;
3、在新服务器建立源服务器相同表单空间(注意表单空间大小,表单空间数据文件可多个,一个最大数据为32G)
查看实例里面表单空间:select tablespace_name from dba_tablespaces;
建立表单空间两种方式:
第一种在EM里面建立
第二种在sqlplus里面用DBA权限建立
命令建立表空间文件
create tablespace erpsys (erpsys为你要建立表单名称)
logging
datafile ‘d:\oracle data\erp\erpsys.dbf‘ (数据库文件存放地址)
size 32m (32M为你表单文件初始大小)
autoextend on
next 32m maxsize 30000m (32M数据文件满后自动扩展大小 30000M文件最大值)
extent management local
增加表空间的数据文件
ALTER TABLESPACE erpsys ADD DATAFILE(erpsys为你要增加文件的表单)
‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF‘(数据库文件存放地址)
SIZE
32M(32M为你表单文件初始大小)
AUTOEXTEND ON
NEXT 32M MAXSIZE 30000M; (32M数据文件满后自动扩展大小 30000M文件最大值)
4、建立用户
1)创建用户: create user losuser identified by sys2012;
2)分配空间:alter user losuser default tablespace los;
3)授予dba权限:grant connect,resource,dba to losuser;
5、导出
C:\Users\Administrator>Expdp fxwmsuser/[email protected] schemas=wmsuser dumpfile=wmsu
ser.dmp directory=backup logfile=wmsuser.log
6、导入
impdp system/[email protected] DIRECTORY=backup DUMPFILE=wmsuser.dmp SCHEMAS=wmsuser logfile=wmsuser.log