最近公司將原數據庫服務器切換。之前沒整過這塊,也是一堆的度娘。經過不停的摸索,終於成功了。現在將這份艱辛記錄下來,方便自己以后查閱的同時,方便有類似需求的同學參考。
我們此次切換共分: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/sys2016@wms schemas=wmsuser dumpfile=wmsu
ser.dmp directory=backup logfile=wmsuser.log
6、導入
impdp system/sys2017@erp DIRECTORY=backup DUMPFILE=wmsuser.dmp SCHEMAS=wmsuser logfile=wmsuser.log
