Oracle遷移記錄
阿新 • • 發佈:2021-07-02
背景說明
自建機房中的所有服務全部遷移至阿里雲伺服器,重中之重-Oracle資料庫遷移,包括之前所有老資料都需要遷移到阿里雲伺服器中。本文假設阿里雲伺服器已成功安裝Oracle進行遷移說明。
準備工作
登入舊資料庫伺服器,以下命令供參考~
這裡所有操作都在舊Oracle資料庫伺服器上進行,建立directory目的用於舊資料庫資料匯出,oracle匯出必須先行建立directory,相當於為物理路徑取一個別名。
切換到Oracle使用者下(包含環境變數)
su – oracle
建立目錄
mkdir -pv /zone/bak
owner,group設為Oracle
chown -R oracle:oinstall /zone/bak/
進入SQLPLUS控制檯
sqlplus /nolog
以dba身份登入SQLPLUS控制檯
conn / as sysdba
conn system/hanley //功能同上
建立目錄,存備份檔案,須保證/zone/bak在OS中物理路徑存在
create or replace directory db_bak as ‘/zone/bak
目錄授權為讀寫
grant read,write on directory db_bak to public
建立使用者
當前操作均在阿里雲新資料庫伺服器中進行,若源資料包括多使用者,需按如下步驟建立所有使用者及對應表空間,為方便後續匯入,新庫資料建立完全比照舊庫進行,儘量保持一致。
建立表空間
create tablespace mtbs_01 logging datafile '/zone/oracle_bak/mtbs_data_01' size 10G autoextend on next 10m maxsize 20G extent management local;
建立臨時表空間
create temporary tablespace mtbs_temp tempfile '/zone/oracle_bak/temp0.dbf' size 50m autoextend on next 50m maxsize 1G extent management local;
建立使用者並指定表空間
create user hanley identified by 123456 default tablespace mtbs_01 temporary tablespace mtbs_temp;
為新使用者授權
grant connect,resource,dba to hanley;
表空間新增資料檔案,若源資料大於40G則需為表空間建立多個數據檔案
alter tablespace mtbs_01 add datafile '/zone/oracle_bak/mtbs_data_02' size 1G autoextend on next 100m maxsize 2G;
修改表空間.資料檔案大小,注意原則上設定的值要比設定前的值要大
alter database datafile '/zone/oracle_bak/mtbs_data_02' resize 2g;
匯入目錄
參考“匯出目錄”,在新伺服器.阿里雲上建立directory(為遷移方便, directory最好與“匯出目錄”保持一致,但不是必須一定要這麼做),後續自舊資料庫下載的資料檔案將上傳到此目錄,以便進行資料遷移(匯入新資料庫)。
資料遷移
開始匯出
這裡所有操作均在舊資料庫伺服器上進行,需要注意expdp 並不是SQL 命令,它屬於$Oracle_home/bin 下的命令,建議在oracle賬戶下進行。
按使用者匯出所有物件資料,包括表及其表資料
資料量比較大時,可指定壓縮引數COMPRESSION=(ALL,DATA_ONLY)
expdp who/enjarwhodb
匯出整個資料庫例項,需要system或擁有dba許可權的賬戶,一般不建議全部匯出
expdp system/hanley
按使用者匯出並排除部分表
expdp hub/hub123qwe@testdb directory=db_bak dumpfile=demo.dmp schemas=hub exclude=table:"in('HUB_SMS_LOG')" logfile=demo.log owner=hub
開始匯入
這裡所有操作均在新資料庫伺服器上進行,開始之前需將上一步匯出的檔案上傳到當前新資料庫伺服器上,並確保新資料庫上表空間及對應使用者已存在。
按使用者匯入
impdp hub/hanley@who directory=db_bak dumpfile=hub.dmp logfile=x.log
全庫匯入,不推薦
impdb system/CI123who
源庫與目標庫instance不一致,scheam不一致情況
impdp hub/hanley@who directory=db_bak dumpfile=hub.dmp logfile=x.log
remap_schema=源使用者名稱:目標使用者名稱 remap_tablespace=源表空間:目標表空間
匯入指定表表空間
impdp system/manager
幫助命令
表空間相關
按使用者查詢表空間
select username,default_tablespace,temporary_tablespace from dba_users where username='WHO';
查詢表空間-資料檔案
select tablespace_name,file_id,bytes/1024/1024 as file_size,file_name from dba_data_files
order by file_id;
查詢臨時表空間
select tablespace_name,tablespace_size,allocated_space,free_space/1024/1024 as "free size(m)" from dba_temp_free_space;
EXPDP,IMPDP引數
https://www.cnblogs.com/champaign/p/7681288.html
連線相關
不連線資料庫instance以sysdba進入控制檯
sqlplus / as sysdba
無日誌方式連線sqlplus,且不連線Instance,進入後使用conn連線
sqlplus /nolog
在sqlplus中使用conn連線資料庫
conn username/password
conn username/password
啟動相關
oracle身份登入資料庫伺服器
su – oracle
資料庫監聽[檢視、啟動、停止]
lsnrctl stat|start|stop
instance啟動
conn /as sysdba
startup
instance關閉
shutdown immediate
程序會話相關
資料庫目前的程序數
select count(*) from v$process;
程序數上限
select value from v$parameter where name = 'processes';
資料庫目前的會話數
select count(*) from v$session;
修改processes和sessions值
alter system set processes=1000 scope=spfile;
alter system set sessions=1000 scope=spfile;
重置使用者密碼
進入sqlplus控制檯修改密碼
sqlplus /nolog
connect / as sysdba
alter user system identified by 新密碼;
作者:Hanley 連結:https://www.jianshu.com/p/9b4e0493a14c 來源:簡書