1. 程式人生 > 其它 >Oracle遷移記錄

Oracle遷移記錄

背景說明

自建機房中的所有服務全部遷移至阿里雲伺服器,重中之重-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@testdb schemas=who dumpfile=who.dmp directory=db_bak

匯出整個資料庫例項,需要system或擁有dba許可權的賬戶,一般不建議全部匯出

expdp system/hanley@testdb directory=db_bak dumpfile=full.dmp full=y;

按使用者匯出並排除部分表

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@testdb directory=dump_dir dumpfile=full.dmp full=y;

源庫與目標庫instance不一致,scheam不一致情況

impdp hub/hanley@who directory=db_bak dumpfile=hub.dmp logfile=x.log
remap_schema=源使用者名稱:目標使用者名稱 remap_tablespace=源表空間:目標表空間

匯入指定表表空間

impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example;

幫助命令

表空間相關

按使用者查詢表空間

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@localhost/orcl

啟動相關

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 來源:簡書