Oracle数据迁移

简介: Oracle数据迁移

背景:
需要把server 2008 oracel 11g R2的数据迁移到centos6 oracle 11g R2,数据库版本是一样的,如果不一样,导出数据的时候需要加上版本号。
旧数据库的表空间有67个,用户有141个,数据倒不算太大。
本人oracle不熟,只能通过按用户导出导入的方法把数据迁移了。

准备,基本思路:

记录旧数据库用户与表空间的关系,在新库创建用户、表空间,结合起来。导出旧数据库数据的时候,按用户来导出。
--->在新库,按用户来导入

select username,user_id,default_tablespace,temporary_tablespace from  dba_users;--查看表空间与用户的关系

下面例子:
旧数据库:172.16.31.213
新数据库:172.16.28.213

1.批量创建表空间:

参考链接:http://www.51testing.com/html/06/n-3724606.html

create table space_name(
name varchar2(20)
)

...

select 'create tablespace ' || s_name || ' DATAFILE "/oradata/dbfile/' || s_name || '.DBF" SIZE 50M AUTOEXTEND ON ;' from space_name;  --生成执行语句

把导出语句修改一下,写成.sql脚本,在服务器中执行脚本

>@cc.sql

2.批量创建用户:

select 'create user ' || username || ' identified by ' || username || ' ;' from test_user; --生产执行语句,放在脚本中运行
select 'grant resource,connect,dba to ' || username || ' ;' from  test_user; --生产授权用户语句

手动修改用户与表空间对应的关系,可以用工具修改(个人用navicat for oracle)。

3.批量导出导入数据:

1.创建dblink,(我是用pl/sql工具创建的dblink)

GRANT EXP_FULL_DATABASE TO VSOP; --给远程用户exp_full_database的权限

-- Drop existing database link
drop public database link TEST2;
-- Create database link
create public database link TEST2
  connect to VSOP
  using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.31.213)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = idcms)
    )
  )';

2.新建目录

mkdir  /oradata/dumpfile
SQL> create or replace directory data_pump_dir2 as '/oradata/dumpfile';
SQL> grant read,write on directory data_pump_dir2 to public;

建两个简单的导出导入脚本:

#!/usr/bin/env bash
source /home/oracle/.bash_profile
date
for user in `cat /tmp/user.txt`;do
    echo "expdp $user"
    expdp \'/ as sysdba\' network_link=test2 directory=DATA_PUMP_DIR2 SCHEMAS=${user} content=all dumpfile=${user}.dmp logfile=exp_${user}.log &> /dev/null
done
date

#!/usr/bin/env bash
source /home/oracle/.bash_profile
date
for user in `cat /tmp/user.txt`;do
    echo "impdp $user"
    impdp \'/ as sysdba\' directory=DATA_PUMP_DIR2  DUMPFILE=${user}.dmp table_exists_action=skip logfile=imp_${user}.log &> /dev/null
done
date
相关文章
|
7天前
|
SQL 存储 Oracle
Oracle的PL/SQL定义变量和常量:数据的稳定与灵动
【4月更文挑战第19天】在Oracle PL/SQL中,变量和常量扮演着数据存储的关键角色。变量是可变的“魔术盒”,用于存储程序运行时的动态数据,通过`DECLARE`定义,可在循环和条件判断中体现其灵活性。常量则是不可变的“固定牌”,一旦设定值便保持不变,用`CONSTANT`声明,提供程序稳定性和易维护性。通过 `%TYPE`、`NOT NULL`等特性,可以更高效地管理和控制变量与常量,提升代码质量。善用两者,能优化PL/SQL程序的结构和性能。
|
2月前
|
SQL Oracle 关系型数据库
Oracle 将表中的数据查出更改某一字段的值后再插入该表
Oracle 将表中的数据查出更改某一字段的值后再插入该表
32 2
|
2月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
41 2
|
2月前
|
SQL Oracle 关系型数据库
Oracle查询优化-查询只包含数字或字母的数据
【2月更文挑战第4天】【2月更文挑战第10篇】查询只包含数字或字母的数据
90 1
|
3月前
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
51 1
|
1天前
|
SQL Oracle 关系型数据库
不小心删除表或数据后,如何利用Oracle的闪回进行恢复
不小心删除表或数据后,如何利用Oracle的闪回进行恢复
|
7天前
|
Oracle 安全 关系型数据库
Oracle数据守卫(DG):数据的“守护者”与“时光机”
【4月更文挑战第19天】Oracle Data Guard保障数据安全,通过实时维护备库实现故障切换,保证业务连续性。它使用日志传输和应用保持数据同步,如同“时光机”,借助闪回技术能恢复误操作数据。此外,它还提供数据压缩、加密和故障转移等功能,提升数据库安全性与性能。作为数据管理员,理解并善用Data Guard是确保企业数据安全的关键。
|
7天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
7天前
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。
|
7天前
|
存储 Oracle 数据管理
Oracle 12c的自动数据优化(ADO)与热图:数据管理的“瘦身”与“透视”艺术
【4月更文挑战第19天】Oracle 12c的ADO和热图技术革新数据管理。ADO智能清理无用数据,优化存储,提升查询速度,实现数据"瘦身";热图则以直观的视觉表示展示数据分布和状态,助力识别性能瓶颈,犹如数据的"透视"工具。这两项技术结合,强化数据管理,为企业业务发展保驾护航。

推荐镜像

更多