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
相关文章
|
15天前
|
数据采集 SQL Oracle
从ORACLE源进行批量数据迁移到GBase8a参考示例
从ORACLE源进行批量数据迁移到GBase8a参考示例
从ORACLE源进行批量数据迁移到GBase8a参考示例
|
4月前
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
81 0
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的还原数据
Oracle数据库中的还原数据(也称为undo数据或撤销数据)存储在还原表空间中,主要用于支持查询的一致性读取、实现闪回技术和恢复失败的事务。文章通过示例详细介绍了还原数据的工作原理和应用场景。
【赵渝强老师】Oracle的还原数据
|
4月前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
2月前
|
Oracle 关系型数据库 数据库
oracle数据创建同义词
oracle数据创建同义词
58 0
|
5月前
|
开发框架 Oracle 关系型数据库
ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
|
4月前
|
SQL 监控 Oracle
Oracle数据误删不用怕,跟我来学日志挖掘
Oracle数据误删不用怕,跟我来学日志挖掘
80 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle误删数据怎么恢复?
Oracle误删数据怎么恢复?
56 0

推荐镜像

更多