Oracle邏輯遷移某業務使用者及資料

2021-09-07 04:13:07 字數 3841 閱讀 5846

確定基本資訊:

源資料庫所在系統型別:________

源資料庫版本:________

資料庫高可用/災備:

遷移匯出業務使用者:________

目的資料庫所在系統型別:________

目的資料庫版本:________

資料庫高可用/災備:

遷移匯入業務使用者:________

按上面模板填好必要資訊,示例如下:

源資料庫所在系統型別:rhel 6.4

源資料庫版本:9.2.0.8.0

資料庫高可用/災備:單機

遷移匯出業務使用者:jingyu

目的資料庫所在系統型別:rhel 6.4

目的資料庫版本:11.2.0.4.0

資料庫高可用/災備:rac

遷移匯入業務使用者:jingyu

--使用者預設資料表空間,臨時表空間

select * from dba_users where username='jingyu';

--連線到業務使用者

conn jingyu/jingyu

--使用者角色許可權

select * from user_role_privs;

--使用者總的物件數量

select count(1) from user_objects;

--使用者總的表數量

select count(1) from user_tables;

--連線到業務使用者

conn jingyu/jingyu

--使用者用到的表空間

select tablespace_name from user_tables union

select tablespace_name from user_tab_partitions union

select tablespace_name from user_indexes union

select tablespace_name from user_ind_partitions;

--資料表空間對應資料檔案資訊

select file_id, file_name, tablespace_name, bytes/1024/1024 "mb", maxbytes/1024/1024/1024 "gb", autoextensible, status from dba_data_files where tablespace_name in ('system', 'users', 'dbs_d_jingyu', 'dbs_i_jingyu');

--資料表空間對應資料檔案按表空間分組統計總大小

select tablespace_name, sum(bytes/1024/1024) "mb" from dba_data_files where tablespace_name in ('system', 'users', 'dbs_d_jingyu', 'dbs_i_jingyu') group by tablespace_name;

--臨時表空間對應臨時檔案資訊

select file_id, file_name, tablespace_name, bytes/1024/1024 "mb", maxbytes/1024/1024/1024 "gb", autoextensible, status from dba_temp_files where tablespace_name='temp_jingyu';

--臨時表空間對應臨時檔案統計總大小

select sum(bytes/1024/1024) "mb" from dba_temp_files where tablespace_name='temp_jingyu';

--匯出方案exp示例(10g之前版本使用)

nohup exp jingyu/jingyu owner=jingyu buffer=10240000 statistics=none resumable=y file=jingyu_exp.dmp log=jingyu_exp.log &

--匯出方案expdp示例(10g及以後版本建議使用資料幫浦expdp)

nohup expdp system directory=jy schemas=jingyu dumpfile=jingyu_all%u.dmp logfile=jingyu_all.log parallel=2 &

有關expdp詳細內容可參考:

--確定目的資料庫基本資訊

select instance_name, status from v$instance;

select dbid, open_mode from v$database;

--確定asm磁碟組剩餘空間

select group_number, name, type, total_mb, free_mb, usable_file_mb from v$asm_diskgroup;

--如果是檔案系統管理,直接df -g檢視資料檔案存放目錄的空間

--確定已有表空間資料檔案情況

select file_id, file_name, tablespace_name, bytes/1024/1024 "mb", maxbytes/1024/1024/1024 "gb", autoextensible, status from dba_data_files where tablespace_name in ('system', 'users', 'dbs_d_jingyu', 'dbs_i_jingyu');

--1. 建立新錶空間

create tablespace dbs_d_jingyu datafile '+data01';

create temporary tablespace temp_jingyu tempfile '+data01';

--此步驟還需要確定是否需要建立其他表空間,確定是否需要建多個資料檔案

--2. 建立使用者

create user jingyu identified by jingyu temporary tablespace temp_jingyu default tablespace dbs_d_jingyu;

--3. 賦予使用者許可權

grant resource, connect, dba to jingyu;

--匯入方案的選擇由之前匯出方案決定:exp/imp,expdp/impdp。

--匯入方案imp示例

nohup imp jingyu/jingyu buffer=10240000 resumable=y file=jingyu_exp.dmp log=imp_jingyu_exp.log ignore=y full=y &

--匯入方案impdp示例

nohup impdp system directory=jy schemas=jingyu table_exists_action=replace dumpfile=jingyu_all%u.dmp logfile=impdp_jingyu_all.log parallel=2 &

有關impdp詳細內容可參考:

4.1 如果需要保證業務資料前後一致性

那麼在匯出開始前,需要停止源資料庫業務,直到成功匯入到目標資料庫時,應用修改新的連線方式完畢,才可以再次啟動業務;

4.2 如果之前表空間管理不規範

早期imp匯入工具還沒有顯示指定重定向表空間的功能,建議整改後遷移;後來impdp才引入重定向表空間的功能,匯入時直接使用remap_tablespace引數。

對於更複雜的邏輯遷移場景可參考:

ORACLE刪除某使用者下所有物件

sql指令碼 唯一注意的是下面的f dropobj.sql 為操作的.sql 你的電腦沒有f盤,請換為d或者e其他存在的碟符 用於刪除當前使用者的所有物件 use for drop all objects in current user set heading off set feedback of...

ORACLE刪除某使用者下所有物件

sql指令碼 唯一注意的是下面的f dropobj.sql 為操作的.sql 你的電腦沒有f盤,請換為d或者e其他存在的碟符 用於刪除當前使用者的所有物件 use for drop all objects in current user set heading off set feedback of...

oracle下匯出某使用者下的表

scott tiger是使用者名稱和密碼,handson是匯出的例項名 按使用者方式匯出資料 owner當中寫的是使用者名稱 exp scott tiger handson file scott back owner scott 按表方式匯出資料 talbes當中寫的是全部表的名稱 exp scot...