DBLink實現備份文件不落盤的導入其他Oracle數據庫實例的方法

DBLink實現備份文件不落盤的導入其他Oracle數據庫實例的方法


背景

  • 公司內經常有從其他服務器備份數據庫實例的需求
  • 之前的操作一般需要,備份源服務器使用expdp將source導出dump文件.
  • Copy到目標服務器,然後使用imdp將導出的dump文件實現導入.
  • 一般需要有兩臺機器的系統權限. 比較繁瑣一些.
  • 最近看到可以有dblink的方式進行學習與使用,這裏進行簡單總結

  • DBlink的創建方式有很多種,這裏使用最簡單的創建語法.
  • 注意下面所以一句SQL 需要複製到一行裏面執行操作.
create public database link linkToSource  
connect to system identified by passwordOnSourece 
using '//sourceip:1521/sourcesid'
  • 說明一下
創建dblink的方式有很多,感覺這種方式最簡單.
也可以修改tnsname, 但是可能會影響已有的系統

DBlink的簡單驗證

  • 查看數據庫信息
SQL> alter session set container=ora19cpdb01;
Session altered.
SQL> select count(1) from YourSourceDBname.YourBizTable@linkToSource;
  COUNT(1)
----------
       169
  • 驗證數據庫無問題.

進行數據庫的不落盤恢復操作

  • 第一步需要在本地庫創建需要進行恢復的用戶和表空間
  • 注意如果需要進行remap的話 建議設置好用戶信息
  • 注意以下沒一個分號分隔爲一行,需要完整執行
create tablespace SchemasInLocal datafile '/path/to/your/datafile.dbf' 
size 1024m autoextend on next 1024m ; 
create user SchemasInLocal default tablespace SchemasInLocal
identified by LocalPassword;
grant dba,resource,connect to SchemasInLocal;

進行數據庫的不落盤恢復操作

  • 直接給出具體的腳本
  • 同樣,如下是一行命令,需要放到一起進行執行.
impdp system/[email protected]/LocalSid directory=Localdir 
logfile=impdpFromRemote.txt network_link=LinkToSourece schemas=SchemasInSource 
remap_schema=SchemasInSource:SchemasInLocal remap_tablespace=SchemasInSource:SchemasInLocal 
exclude=statistics

備份效果爲:

# 文件大小
Total estimation using BLOCKS method: 6.295 GB
# 執行時間
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) 
at Tue Jan xx xxxxx 2022 elapsed 0 00:46:59
# 6G多的數據庫大約耗時 45分鐘左右完成.

進行數據庫的不落盤恢復操作

  • 參數簡要說明
1. directory 是本地路徑,用於存放導入日誌
2. logfile 指定本地路徑下的導入日誌名稱
3. network_link 指定本地創建的指向source源端的dblink
4. schemas 指定需要從source源端 恢復的數據庫實例編號
5. remap_xxxx 進行remap 更換數據庫實例的編號和表空間
6. exclude 不導入統計信息 提高導入速度

擴展知識

  • 其實可以在創建一個針對本地sid的dblink 可以實現快速的備份恢復自己已有的數據庫實例
  • 其實不需要創建 user和賦權. impdp 的時候會自動進行用戶的創建和grant 權限
  • 但是需要創建表空間, impdp沒有創建表空間的權限(至少我這個命令沒有 )
  • 本地不落盤的備份恢復速度快很多, 6G的數據庫25min左右就可以備份恢復完.

個人感悟

  • 關於培訓感想
自己從2008年開始工作就接觸了Oracle數據庫.
最開始使用imp/exp的備份恢復方式.
在Oracle11g時才使用了impdp/expdp數據泵的模式
最開始記得有11.2.0.1的deferred_segment_creation的bug導致空表導出失敗
但是一直使用create tablespace, create user, grant privileges的方式建初始用戶
今天才發現原來可以不使用user和grant權限,impdp會自動進行相應的創建.
所以感覺培訓是非常重要的, 尤其是原廠的培訓. 自己的人理解終歸是不全面的
無法實現快速和正確的的技術傳播. 
希望公司以後能夠加強原廠技術培訓. 知識無價
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章