動態

詳情 返回 返回

Oracle數據庫遷移 - 動態 詳情

目錄
  • 記一次Oracle數據庫遷移的整個過程
    • 第一步:將原始數據庫導出
      • 方式1(推薦):使用Data Pump
      • 方式2(數據庫較大時速度慢):使用exp命令
    • 第二步:創建一個數據庫實例(也可以使用原有的實例,只需要創建表空間)
      • 1.1 創建實例
      • 1.2 創建表空間(與原數據庫表空間名稱保持一致)\刪除表空間
      • 1.3 創建用户並關聯表空間
      • 1.4 設置用户權限\撤銷用户權限
    • 第三步:導入
      • 方式1(推薦):使用Data Pump
      • 方式2(數據庫較大時速度慢):使用imp命令
    • 總結:

記一次Oracle數據庫遷移的整個過程

簡單談談本人對Oracle數據庫的理解

數據庫實例 表空間 用户
一台服務器上可存在一個或多個實例,可以理解為一個個小區 只存在於數據庫實例當中,可以包含表、視圖、索引等。可以理解為小區中的每棟樓,其中包含房子、傢俱等 只存在與實例當中,操作表空間中的內容如表、視圖、索引等也可操作實例。可以理解為買樓的人。一個用户可以綁定多個實例同時也可以設置不同的權限,可以理解為是否可以對屬於你的某棟樓進行裝修、開門等動作

話不多説直接開始

第一步:將原始數據庫導出

方式1(推薦):使用Data Pump
--創建文件路徑
create or replace directory 路徑名 as 'C:\backup' --根據情況自定義

--執行導出命令
expdp 用户名/密碼@IP地址:端口/實例名 directory=路徑名 dumpfile=backupDemo.dmp

directory:等於創建的路徑名稱
執行成功後文件保存在 C:\backup 路徑下,文件名為 backupDemo.dmp

方式2(數據庫較大時速度慢):使用exp命令
--基本用法1:導出全部庫
exp 用户名/密碼@IP地址:端口/實例名 file=C:\backup\backupDemo.dmp full=y
--基本用法2:導出某個用户的某個庫
exp 用户名/密碼@IP地址:端口/實例名 file=C:\backup\backupDemo.dmp owner=users
--基本用法3:導出某個用户的某個表
exp 用户名/密碼@IP地址:端口/實例名 file=C:\backup\backupDemo.dmp tables=(table1,table2)

file=C:\backup\backupDemo.dmp 表示文件存放位置
full=y 表示導出整個庫
owner=users 表示要導出的用户
tables=(table1,table2) 表示導出的表名

第二步:創建一個數據庫實例(也可以使用原有的實例,只需要創建表空間)

1.1 創建實例

在服務器上找到 Database Configuration Assistant 工具,打開後如沒有特殊需求一直點擊下一步即可
5a2f7109-47a9-4abe-b2e4-f2b13573c248
輸入數據庫名稱(數據庫鏈接時的實例名稱),這個要記好
7e82fd41-7b5e-455f-bb81-3033a1e363b2
注意在設置密碼時為方便可用統一管理
e2613ea0-519b-4bc4-8ce9-a78c4bf632d6
創建完成可能會有警告信息,退出即可
使用 sqlplus 進行連接

//管理員賬號進行登錄
sqlplus system/密碼@IP地址:端口/實例名

df954142-733d-47b5-963a-61d1f88b73cf
能打通表示創建成功!

1.2 創建表空間(與原數據庫表空間名稱保持一致)\刪除表空間
--創建臨時表空間(用於存儲數據庫操作過程中的臨時數據)
CREATE TEMPORARY TABLESPACE temp --臨時表空間名稱
TEMPFILE 'C:\app\Administrator\oradata\temp.DBF' -- 找到自己的存放位置
SIZE 50M -- 初始大小為50M
AUTOEXTEND ON -- 自動擴展
NEXT 50M MAXSIZE 20480M -- 每次增量為50M ,最大2048M
EXTENT MANAGEMENT LOCAL;

--創建表空間
CREATE TABLESPACE demo --臨時表空間名稱
LOGGING
DATAFILE 'C:\app\Administrator\oradata\demo.DBF' -- 找到自己的存放位置
SIZE 50M -- 初始大小為50M
AUTOEXTEND ON -- 自動擴展
NEXT 50M MAXSIZE 20480M -- 每次增量為50M ,最大2048M
EXTENT MANAGEMENT LOCAL;
--刪除表空間
DROP TABLESPACE 表空間名 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS
1.3 創建用户並關聯表空間
CREATE USER 用户名 IDENTIFIED BY 密碼
DEFAULT TABLESPACE demo  -- 表空間
TEMPORARY TABLESPACE temp; -- 臨時表空間

--修改用户表空間(分配錯誤或調整用户權限時使用)
ALTER USER 用户名 DEFAULT TABLESPACE demo01;
1.4 設置用户權限\撤銷用户權限

Oracle提供多種系統預定義角色

--給用户授權
--CONNECT角色:連接權限
--RESOURCE角色:創建一些特定的數據庫對象等
--DBA角色:所有系統權限
GRANT CONNECT,RESOURCE,DBA TO userName;

--撤銷用户權限(分配錯誤或調整用户權限時使用)
REVOKE CONNECT,RESOURCE FROM userName;

第三步:導入

這裏要注意的是由於exp和expdp導出的原文件格式有區別,使用exp導出的文件只能用imp導入,expdb同理

方式1(推薦):使用Data Pump
--創建文件路徑
create or replace directory 路徑名 as 'C:\backup' --根據情況自定義

--執行導入命令
impdp 用户名/密碼@IP地址:端口/實例名 
remap_schema=原模式名:目標模式名 
directory=路徑名 
dumpfile=backupDemo.dmp 
logfile=export.log 
TABLE_EXISTS_ACTION=REPLACE

remap_schema=原模式名:目標模式名:表示將數據還原到同名的模式中,如果目標庫沒有這個用户,需要先創建
logfile=export.log:導入過程日誌文件的名稱。該日誌文件也會被寫入到 directory參數指定的目錄中
TABLE_EXISTS_ACTION=REPLACE:當要導入的表在目標模式中已經存在時,指定如何處理
常用參數
REPLACE:刪除目標數據庫中已存在的表,然後重新創建並導入數據
APPEND:向現有表追加數據
SKIP:跳過已存在的表
TRUNCATE:截斷現有表的數據再導入

方式2(數據庫較大時速度慢):使用imp命令
imp 用户名/密碼@IP地址:端口/實例名 
FILE=c:\backup\backupDemo.dmp 
FULL=Y 
ignore=y

FULL=Y:導入轉儲文件中的全部內容
ignore=y:遇到“對象已經存在”的創建錯誤(ORA-00955)時,忽略這個錯誤並繼續處理

總結:

按照步驟即可實現基本的數據庫複製以及還原,再導入過程中可能會遇到內存不足、主鍵衝突等問題。查看日誌定位到有問題的地方解決即可。

Add a new 評論

Some HTML is okay.