zoukankan      html  css  js  c++  java
  • 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/LocalPassword@127.0.0.1/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会自动进行相应的创建.
    所以感觉培训是非常重要的, 尤其是原厂的培训. 自己的人理解终归是不全面的
    无法实现快速和正确的的技术传播. 
    希望公司以后能够加强原厂技术培训. 知识无价
    
  • 相关阅读:
    MFC单文档视图设置背景
    原来这就是命令行下的“学生信息管理系统”
    C语言中数组&取地址的问题
    《逐梦旅程-Windows游戏编程之从零开始》 勘误
    杭电ACM 1003 ( 动态规划法 水题)
    《编程之美》
    [蓝桥杯][2014年第五届真题]地宫取宝
    [蓝桥杯][2013年第四届真题]危险系数
    2142: 逛超市(zznuoj)
    2141:2333(zznuoj)
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/15790082.html
Copyright © 2011-2022 走看看