• Oracle逻辑迁移某业务用户及数据


    1.确定基本信息

    确定基本信息: ``` 源数据库所在系统类型:________ 源数据库地址:__.__.__.__ 源数据库版本:________ 数据库高可用/灾备:{单机|RHCS|RAC|DataGuard|其他} 迁移导出业务用户:________

    目的数据库所在系统类型:________
    目的数据库地址:...
    目的数据库版本:________
    数据库高可用/灾备:{单机|RHCS|RAC|DataGuard|其他}
    迁移导入业务用户:________

    按上面模板填好必要信息,示例如下:
    

    源数据库所在系统类型:RHEL 6.4
    源数据库地址:192.168.XX.XX
    源数据库版本:9.2.0.8.0
    数据库高可用/灾备:单机
    迁移导出业务用户:jingyu

    目的数据库所在系统类型:RHEL 6.4
    目的数据库地址:192.168.XX.XX
    目的数据库版本:11.2.0.4.0
    数据库高可用/灾备:RAC
    迁移导入业务用户:jingyu

    <h1 id="2">2.源数据库导出</h1>
    ## 2.1 业务用户相关信息 ##
    

    --用户默认数据表空间,临时表空间
    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;

    ## 2.2  用户用到的表空间 ##
    

    --连接到业务用户
    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;

    ## 2.3 查询对应表空间数据文件情况 ##
    

    --数据表空间对应数据文件信息
    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';

    ## 2.4 选择合适的导出方案 ##
    

    --导出方案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详细内容可参考:
    - 《[Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)](http://www.cnblogs.com/jyzhao/p/4522868.html)》
    
    <h1 id="3">3.目的数据库导入</h1>
    ## 3.1 目的数据库当前相关信息 ##
    

    --确定目的数据库基本信息
    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');

    ## 3.2 导入前准备 ##
    

    --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;

    ## 3.3 导入方案 ##
    

    --导入方案的选择由之前导出方案决定: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详细内容可参考:
    - 《[Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)](http://www.cnblogs.com/jyzhao/p/4530575.html)》
    
    <h1 id="4">4.逻辑迁移注意事项</h1>
    **4.1 如果需要保证业务数据前后一致性**
    
    那么在导出开始前,需要停止源数据库业务,直到成功导入到目标数据库时,应用修改新的连接方式完毕,才可以再次启动业务;
    
    **4.2 如果之前表空间管理不规范**
    
    早期imp导入工具还没有显示指定重定向表空间的功能,建议整改后迁移;后来impdp才引入重定向表空间的功能,导入时直接使用REMAP_TABLESPACE参数。
    
    **对于更复杂的逻辑迁移场景可参考:**
    - 《[Oracle数据逻辑迁移综合实战篇](http://www.cnblogs.com/jyzhao/p/4583722.html)》
  • 相关阅读:
    .Net 6+项目使用Husky.Net在项目提交时格式化代码
    maven 之将项目打包压缩。
    netty ChannelPipeline流处理源码详细分析
    maven 之 将资源文件 copy到classes目录中
    maven 之 根据不同环境,选择不同的配置文件。
    flex+spring+blazds 数据推送,client自动断开问题。
    C#如何读写xml文件
    序列化 与 反序列化
    DataSet与List的转换
    Python基础入门
  • 原文地址:https://www.cnblogs.com/jyzhao/p/5032070.html
Copyright © 2020-2023  润新知