当前位置:首页 » 操作系统 » oracle数据库迁移

oracle数据库迁移

发布时间: 2022-07-01 18:11:42

① 如何将oracle的数据迁移到mysql

OGG全称为Oracle GoldenGate,是由Oracle官方提供的用于解决异构数据环境中数据复制的一个商业工具。相比于其它迁移工具OGG的优势在于可以直接解析源端Oracle的redo log,因此能够实现在不需要对原表结构做太多调整的前提下完成数据增量部分的迁移。本篇文章将重点介绍如何使用OGG实现Oracle到MySQL数据的平滑迁移,以及讲述个人在迁移过程中所碰到问题的解决方案。


(一)OGG逻辑架构

参照上图简单给大家介绍下OGG逻辑架构,让大家对OGG数据同步过程有个简单了解,后面章节会详细演示相关进程的配置方式,在OGG使用过程中主要涉及以下进程及文件:

  • Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等

  • Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量、增量数据的抽取

  • Trails文件:临时存放在磁盘上的数据文件

  • Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程,如果不配置Data Pump,Extract进程会将抽取的数据直接发送到目标端的Trail文件,如果配置了Data Pump,Extract进程会将数据抽取到本地Trail文件,然后通过Data Pump进程发送到目标端,配置Data Pump进程的主要好处是即使源端到目标端发生网络中断,Extract进程依然不会终止

  • Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中

  • Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放

  • 二、迁移方案

    (一)环境信息

    OGG版本 OGG 12.2.0.2.2 For Oracle OGG 12.2.0.2.2 For MySQL

    数据库版本 Oracle 11.2.0.4 MySQL 5.7.21

    OGG_HOME /home/oracle/ogg /opt/ogg

    (二)表结构迁移

    表结构迁移属于难度不高但内容比较繁琐的一步,我们在迁移表结构时使用了一个叫sqlines的开源工具,对于sqlines工具在MySQL端创建失败及不符合预期的表结构再进行特殊处理,以此来提高表结构转换的效率。

    注意:OGG在Oracle迁移MySQL的场景下不支持DDL语句同步,因此表结构迁移完成后到数据库切换前尽量不要再修改表结构。

    (三)数据迁移

    数据同步的操作均采用OGG工具进行,考虑数据全量和增量的衔接,OGG需要先将增量同步的抽取进程启动,抓取数据库的redo log,待全量抽取结束后开启增量数据回放,应用全量和增量这段期间产生的日志数据,OGG可基于参数配置进行重复数据处理,所以使用OGG时优先将增量进行配置并启用。此外,为了避免本章节篇幅过长,OGG参数将不再解释,有需要的朋友可以查看官方提供的Reference文档查询任何你不理解的参数。

    1.源端OGG配置

    (1)Oracle数据库配置

    针对Oracle数据库,OGG需要数据库开启归档模式及增加辅助补充日志、强制记录日志等来保障OGG可抓取到完整的日志信息

    查看当前环境是否满足要求,输出结果如下图所示:

    (2)Oracle数据库OGG用户创建

    OGG需要有一个用户有权限对数据库的相关对象做操作,以下为涉及的权限,该示例将创建一个用户名和密码均为ogg的Oracle数据库用户并授予以下权限

    (3)源端OGG 管理进程(MGR)配置

    (4)源端OGG 表级补全日志(trandata)配置

    表级补全日志需要在最小补全日志打开的情况下才起作用,之前只在数据库级开启了最小补全日志(alter database add supplemental log data;),redolog记录的信息还不够全面,必须再使用add trandata开启表级的补全日志以获得必要的信息。

    (5)源端OGG 抽取进程(extract)配置

    Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,我们重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

    (6)源端OGG 传输进程(pump)配置

    pump进程运行在数据库源端,其作用非常简单。如果源端的Extract抽取进程使用了本地trail文件,那么pump进程就会把trail文件以数据块的形式通过TCP/IP协议发送到目标端,Pump进程本质上是Extract进程的一种特殊形式,如果不使用trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。

    补充:pump进程启动时需要与目标端的mgr进程进行连接,所以需要优先将目标端的mgr提前配置好,否则会报错连接被拒绝,无法传输抽取的日志文件到目标端对应目录下

    (7)源端OGG 异构mapping文件(defgen)生成

    该文件记录了源库需要复制的表的表结构定义信息,在源库生成该文件后需要拷贝到目标库的dirdef目录,当目标库的replica进程将传输过来的数据apply到目标库时需要读写该文件,同构的数据库不需要进行该操作。

    2.目标端OGG配置

    (1)目标端MySQL数据库配置

  • 确认MySQL端表结构已经存在

  • MySQL数据库OGG用户创建

  • mysql> create user 'ogg'@'%' identified by 'ogg';

  • mysql> grant all on *.* to 'ogg'@'%';

  • #### 提前创建好ogg存放checkpoint表的数据库

  • mysql> create database ogg;

  • (2)目标端OGG 管理进程(MGR)配置

    目标端的MGR进程和源端配置一样,可直接将源端配置方式在目标端重复执行一次即可,该部分不在赘述

    (3)目标端OGG 检查点日志表(checkpoint)配置

    checkpoint表用来保障一个事务执行完成后,在MySQL数据库从有一张表记录当前的日志回放点,与MySQL复制记录binlog的GTID或position点类似。

    #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • ggsci> edit param ./GLOBALS

  • checkpointtable ogg.ggs_checkpoint

  • ggsci> dblogin sourcedb [email protected]:3306 userid ogg

  • ggsci> add checkpointtable ogg.ggs_checkpoint

  • (4)目标端OGG 回放线程(replicat)配置

    Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML语句,然后应用到目标数据库中。

  • #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • #### 添加一个回放线程并与源端pump进程传输过来的trail文件关联,并使用checkpoint表确保数据不丢失

  • ggsci> add replicat r_cms,exttrail /opt/ogg/dirdat/ms,checkpointtable ogg.ggs_checkpoint

  • #### 增加/编辑回放进程配置文件

  • ggsci> edit params r_cms

  • replicat r_cms

  • targetdb [email protected]:3306,userid ogg,password ogg

  • sourcedefs /opt/ogg/dirdef/cms.def

  • discardfile /opt/ogg/dirrpt/r_cms.dsc,append,megabytes 1024

  • HANDLECOLLISIONS

  • MAP cms.*,target cms.*;

  • 注意:replicat进程只需配置完成,无需启动,待全量抽取完成后再启动。

    至此源端环境配置完成

    待全量数据抽取完毕后启动目标端回放进程即可完成数据准实时同步。

    3.全量同步配置

    全量数据同步为一次性操作,当OGG软件部署完成及增量抽取进程配置并启动后,可配置1个特殊的extract进程从表中抽取数据,将抽取的数据保存到目标端生成文件,目标端同时启动一个单次运行的replicat回放进程将数据解析并回放至目标数据库中。

    (1)源端OGG 全量抽取进程(extract)配置

  • #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • #### 增加/编辑全量抽取进程配置文件

  • #### 其中RMTFILE指定抽取的数据直接传送到远端对应目录下

  • #### 注意:RMTFILE参数指定的文件只支持2位字符,如果超过replicat则无法识别

  • ggsci> edit params ei_cms

  • SOURCEISTABLE

  • SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")

  • SETENV (ORACLE_SID=cms)

  • SETENV (ORACLE_HOME=/data/oracle/11.2/db_1)

  • USERID ogg@appdb,PASSWORD ogg

  • RMTHOST 17X.1X.84.121,MGRPORT 7809

  • RMTFILE /opt/ogg/dirdat/ms,maxfiles 100,megabytes 1024,purge

  • TABLE cms.*;

  • #### 启动并查看抽取进程正常

  • shell> nohup ./extract paramfile ./dirprm/ei_cms.prm reportfile ./dirrpt/ei_cms.rpt &

  • ## 查看日志是否正常进行全量抽取

  • shell> tail -f ./dirrpt/ei_cms.rpt

  • (2)目标端OGG 全量回放进程(replicat)配置

  • #### 切换至ogg软件目录并执行ggsci进入命令行终端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • ggsci> edit params ri_cms

  • SPECIALRUN

  • END RUNTIME

  • TARGETDB [email protected]:3306,USERID ogg,PASSWORD ogg

  • EXTFILE /opt/ogg/dirdat/ms

  • DISCARDFILE ./dirrpt/ri_cms.dsc,purge

  • MAP cms.*,TARGET cms.*;

  • #### 启动并查看回放进程正常

  • shell> nohup ./replicat paramfile ./dirprm/ri_cms.prm reportfile ./dirrpt/ri_cms.rpt &

  • #### 查看日志是否正常进行全量回放

  • shell> tail -f ./dirrpt/ri_cms.rpt

  • 三、数据校验

    数据校验是数据迁移过程中必不可少的环节,本章节提供给几个数据校验的思路共大家参数,校验方式可以由以下几个角度去实现:

    1.通过OGG日志查看全量、增量过程中discards记录是否为0来判断是否丢失数据;

    2.通过对源端、目标端的表执行count判断数据量是否一致;

    3.编写类似于pt-table-checksum校验原理的程序,实现行级别一致性校验,这种方式优缺点特别明显,优点是能够完全准确对数据内容进行校验,缺点是需要遍历每一行数据,校验成本较高;

    4.相对折中的数据校验方式是通过业务角度,提前编写好数十个返回结果较快的SQL,从业务角度抽样校验。

    四、迁移问题处理

    本章节将讲述迁移过程中碰到的一些问题及相应的解决方式。

    (一)MySQL限制

    在Oracle到MySQL的表结构迁移过程中主要碰到以下两个限制:

    1. Oracle端的表结构因为最初设计不严谨,存在大量的列使用varchar(4000)数据类型,导致迁移到MySQL后超出行限制,表结构无法创建。由于MySQL本身数据结构的限制,一个16K的数据页最少要存储两行数据,因此单行数据不能超过65,535 bytes,因此针对这种情况有两种解决方式:

  • 根据实际存储数据的长度,对超长的varchar列进行收缩;

  • 对于无法收缩的列转换数据类型为text,但这在使用过程中可能导致一些性能问题;

  • 2. 与第一点类似,在Innodb存储引擎中,索引前缀长度限制是767 bytes,若使用DYNAMIC、COMPRESSED行格式且开启innodblargeprefix的场景下,这个限制是3072 bytes,即使用utf8mb4字符集时,最多只能对varchar(768)的列创建索引;

    3. 使用ogg全量初始化同步时,若存在外键约束,批量导入时由于各表的插入顺序不唯一,可能子表先插入数据而主表还未插入,导致报错子表依赖的记录不存在,因此建议数据迁移阶段禁用主外键约束,待迁移结束后再打开。

  • mysql>set global foreign_key_checks=off;

  • (二)全量与增量衔接

    HANDLECOLLISIONS参数是实现OGG全量数据与增量数据衔接的关键,其实现原理是在全量抽取前先开启增量抽取进程,抓去全量应用期间产生的redo log,当全量应用完成后,开启增量回放进程,应用全量期间的增量数据。使用该参数后增量回放DML语句时主要有以下场景及处理逻辑:

  • 目标端不存在delete语句的记录,忽略该问题并不记录到discardfile

  • 目标端丢失update记录

    - 更新的是主键值,update转换成insert

    - 更新的键值是非主键,忽略该问题并不记录到discardfile

  • 目标端重复insert已存在的主键值,这将被replicat进程转换为UPDATE现有主键值的行

  • (三)OGG版本选择

    在OGG版本选择上我们也根据用户的场景多次更换了OGG版本,最初因为客户的Oracle 数据库版本为11.2.0.4,因此我们在选择OGG版本时优先选择使用了11版本,但是使用过程中发现,每次数据抽取生成的trail文件达到2G左右时,OGG报错连接中断,查看RMTFILE参数详细说明了解到trail文件默认限制为2G,后来我们替换OGG版本为12.3,使用MAXFILES参数控制生成多个指定大小的trail文件,回放时Replicat进程也能自动轮转读取Trail文件,最终解决该问题。但是如果不幸Oracle环境使用了Linux 5版本的系统,那么你的OGG需要再降一个小版本,最高只能使用OGG 12.2。

    (四)无主键表处理

    在迁移过程中还碰到一个比较难搞的问题就是当前Oracle端存在大量表没有主键。在MySQL中的表没有主键这几乎是不被允许的,因为很容易导致性能问题和主从延迟。同时在OGG迁移过程中表没有主键也会产生一些隐患,比如对于没有主键的表,OGG默认是将这个一行数据中所有的列拼凑起来作为唯一键,但实际还是可能存在重复数据导致数据同步异常,Oracle官方对此也提供了一个解决方案,通过对无主键表添加GUID列来作为行唯一标示,具体操作方式可以搜索MOS文档ID 1271578.1进行查看。

    (五)OGG安全规则

  • 报错信息

  • 2019-03-08 06:15:22 ERROR OGG-01201 Error reported by MGR : Access denied.

  • 错误信息含义源端报错表示为该抽取进程需要和目标端的mgr进程通讯,但是被拒绝,具体操作为:源端的extract进程需要与目标端mgr进行沟通,远程将目标的replicat进行启动,由于安全性现在而被拒绝连接。

  • 报错原因

  • 在Oracle OGG 11版本后,增加了新特性安全性要求,如果需要远程启动目标端的replicat进程,需要在mgr节点增加访问控制参数允许远程调用

  • 解决办法

  • 在源端和目标端的mgr节点上分别增加访问控制规则并重启

  • ## 表示该mgr节点允许(ALLOW)10.186网段(IPADDR)的所有类型程序(PROG *)进行连接访问ACCESSRULE, PROG *, IPADDR 10.186.*.*, ALLOW

  • (六)数据抽取方式

  • 报错信息

  • 2019-03-15 14:49:04 ERROR OGG-01192 Trying to use RMTTASK on data types which may be written as LOB chunks (Table: 'UNIONPAYCMS.CMS_OT_CONTENT_RTF').

  • 报错原因

  • 根据官方文档说明,当前直接通过Oracle数据库抽取数据写到MySQL这种initial-load方式,不支持LOBs数据类型,而表 UNIONPAYCMS.CMSOTCONTENT_RTF 则包含了CLOB字段,无法进行传输,并且该方式不支持超过4k的字段数据类型

  • 解决方法

  • 将抽取进程中的RMTTASK改为RMTFILE参数
    官方建议将数据先抽取成文件,再基于文件数据解析进行初始化导入

② oracle数据迁移怎么做

简单到不能再简单。
1先弄个DBLINK
2.通关select into from 直接创建并写入表到要迁移的数据库中

③ oracle数据库迁移到另一个oracle数据库

这个就简单了,备份库1,还原到库2即可;或者将库1的表结构和insert语句分别导出,放到库2执行一次就行了,或者借助三方工具,比如kettle

④ oracle数据库迁移

如果:原库的system表空间和undo表空间的数据文件、及归档日志 都在的话,是没有多大问题的。 这个恢复过程,就是恢复过程有点复杂,就类似:数据库复制过程 (与data guard 不是一回事的)。一般出现这样的问题都会找专门的数据恢复公司或数据库维护工作了(因为这个恢复过程,本来就不简单,不是直接把以前的离线文件,直接拷过去,就行了的)。下面给一个简易的方法:你试试

方法如下:

1、在新服务器上,安装安装数据库软件,不建立数据库!(你要使用以前的数据文件等,所以不能建立库)。

2、在操作系统中,建立相应的操作系统目录。

(若你仍使用原库中参数文件(spfile),那么你可以按照参数文件的标注,建立相应的目录。你要重新建立新的文件存放目录的话,你还得修改参数文件呢,如果你对spfile文件修改不熟悉,就采用原来的spfile,根据参数文件建立相应的目录)你根据你的参数文件进行建立,下面只是为了说明进行举例。
一般建立(假设实例名为:standby1):
c:\> mkdir F:\oracle\proct\10.2.0\oradata\standby1 (用于存放数据文件、控制文件等)
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\bmp (跟踪文件)
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\ump (用户文件)
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\cmp
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\amp

3、建立例程服务

c:\> oradim -new -sid standby1 -intpwd cs -startmode a

4、将你的参数文件(spfile) 复制到目录: x:\oracle\proct\10.2.0\db_1\database 下

提示:在新服务器上存放数据文件、控制文件、跟踪文件等的位置与源库的位置相同的话,就可以直接复制到database目录下,不用修改参数文件的。不同的话,你得修改参数文件的。

5、将你原库的:数据文件、归档日志 复制到新服务器中.(具体位置,你参考Spfile文件中,所标注的,不用弄错了,不然会报错的)

6、 配置 standby1 的监听和网络服务

提示:监听配置好后,需要重启!对了:你可以将原来的:x:\oracle\proct\10.2.0\db_1\NETWORK\ADMIN 中的:listener.ora 和 tnsnames.ora 直接拷贝到新服务中的:x:\oracle\proct\10.2.0\db_1\NETWORK\ADMIN 目录下。替换的话:你需要修改 listener.ora 和 tnsnames.ora 这两个文件中的 IP 地址或主机名称,因为新服务器,有不同的名称和不同的IP。如果IP和主机名称和原来一样,就可以不用修改。
记得:重新启动监听啊 方法:
c:\>lsnrctl stop
c:\>lnsrctl start

7、启动例程,并建立控制文件 (控制文件必须重新建立,原来的控制文件记载的当前日志序列号、检查点信息、日志历史信息等,与新库的都不一样的,原来的用不了)

c:\>sqlplussys/oracle@standby1 as sysdba;
sql> startup nomount spfile='x:\oracle\proct\10.2.0\db_1\database\spfileSTANDBY1'
sql> CREATE CONTROLFILE REUSE DATABASE "standby1" NORESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO01.LOG' SIZE 50M,
GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO02.LOG' SIZE 50M,
GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO03.LOG' SIZE 50M
DATAFILE
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\SYSTEM01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\UNDOTBS01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\SYSAUX01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\USERS01.DBF'
CHARACTER SET ZHS16GBK;

提醒:上面的SQL语句中,相应参数文件的位置,你需要根据实际情况进行修改,实例名称你也需要根据实际情况进行修改。

8、恢复原库

假如你将原库的归档日志存放在新库:f:\archive 中
sql> set logsource 'f:\archive'
sql> recover database using backup controlfile until cancel

根据提示输入:canel

9、打开数据库:

sql> alter database open resetlogs;

10、新增临时文件(不然排序操作时,会报错)

sql > alter tablespace temp add tempfile 'f:\standby1\temp.dbf' size 5M reuse;

其他:如果你对原库进行了全库备份,不管是通过RMAN还是用户管理等,那么恢复的方法可以不采用此方法的。有全库的备份及归档日志, 恢复起来要简单些。

;

⑤ oracle数据库怎么从一个磁盘迁移到另一个磁盘

简单步骤:
1、正常关闭数据库;
2、迁移所有数据文件到新的盘;
3、启动实例到mount阶段,修改数据文件的路径;
4、启动实例到open阶段,正常使用数据库。
5、另外,如果想要迁移日志文件,比较好办,在新盘新目录下创建新的redo,删除原来盘上的redo。
6、如果想要迁移控制文件,那么:
6.1、正常关闭数据库;
6.2、迁移控制文件到新盘新目录;
6.3、启动实例到nomount阶段;
6.4、修改实例参数control_files指向新的目录;
6.4、alter database mount;
6.5、alter databse open;

如果要迁移数据库软件,那就另说了,可以先安装一套DB软件到新盘新目录,然后修改环境变量指向新的环境,重要的变量包括ORACLE_BASE、ORACLE_HOME、PATH等。

⑥ oracle数据库项目数据迁移

1.create
directory
exp_dp
as
'/opt/yy'
yy是自己创建的文件夹
2.grant
read,wirte
on
exp_dp
to
icd(用户名)
3.expdp
icd/icd@数据库连接字符
schemas=icd
mpfile=expdp1.dmp
logfile=export.log
directory=exp_dp
上面是导出操作,前两个在数据库命令窗口执行,最后一个在操作系统下运行

⑦ 如何将正在运行的 Oracle 数据库迁移到另一个系统

在本文提供的示例中,源服务器配置有控制域和一个托管 Oracle 数据库的来宾域(名为 ldg1)。控制域名为
primary,也是一个 I/O 域。此外,控制域还用作服务域,为来宾域提供虚拟设备服务(虚拟磁盘和虚拟网络)。
作为服务域,控制域提供以下虚拟设备服务:
一个虚拟磁盘服务 (primary-vds0),将物理磁盘作为虚拟磁盘导出到来宾域。
一个虚拟控制台集中器服务 (primary-vcc0),提供对来宾域虚拟控制台的访问。此服务使用端口范围 5000–5100
来访问虚拟控制台。
一个虚拟交换机服务 (primary-vsw0),与主网络接口 (nxge0)
关联。
软件安装和配置
按照以下步骤配置您的环境以便进行实时迁移。
安装 Oracle Solaris 操作系统
新的 SPARC 服务器上预先安装了 Oracle Solaris。对于这些系统,应确保安装了相应的 Oracle Solaris
版本,并验证打了所需的补丁。
要在 SPARC 系统上重新安装 Oracle
Solaris,请参见 Oracle
Solaris 10 文档或 Oracle
Solaris 11 文档。在本文的示例中,操作系统安装在服务器的第一个内部磁盘上。
安装 Oracle Solaris 之后,可以配置并启用系统以使用 Oracle VM Server for SPARC 2.1 软件。
安装 Oracle VM
Server for SPARC 软件
新的 SPARC 服务器上也预先安装了 Oracle VM Server for SPARC 软件。对于这些系统,应确保安装了相应的 Oracle VM
Server for SPARC 版本,并验证打了所有需要的补丁。
如果在服务器上重新安装了 Oracle
Solaris,您可能必须重新安装 Oracle VM Server for SPARC 软件。参见 Oracle
VM 下载页面。
以下示例显示了在每台物理服务器上执行的操作。每台服务器已经安装了 Oracle Solaris 和所需的补丁。
应确保系统固件与您计划安装的 Oracle VM
Server for SPARC 版本匹配。参见文档的 Oracle VM
Server for SPARC 2.1 版本说明 中的“所需软件和补丁”以及 Oracle VM Server for SPARC 2.1
管理指南 中的“升级系统固件”。
从 Oracle
VM 下载页面下载 Oracle VM Server for SPARC 2.1 软件。
压缩存档文件。
安装 SUNWldm.v
程序包。参见 Oracle VM Server for SPARC 2.1 管理指南 中的“在新系统上安装 Oracle VM Server
for SPARC 软件”。
primary# pkgadd -d OVM_Server_SPARC-2_1/Proct SUNWldm.v
配置存储阵列
Sun Storage 2540-M2 存储阵列连接到控制域,控制域将两个 LUN(LUN 0 和 LUN 1)作为虚拟磁盘导出到来宾域。
来宾域使用第一个 LUN (LUN 0) 作为操作系统的系统磁盘,使用第二个 LUN (LUN 1) 作为存储 Oracle 数据库数据文件的磁盘。
配置控制域
安装 Oracle VM Server for SPARC 软件之后,重新配置当前系统使其成为控制域。在每台物理服务器上执行以下操作:
创建一个虚拟控制台集中器 (vcc)
服务以供虚拟网络终端服务器后台程序 (vntsd) 使用,并作为所有逻辑域控制台的集中器。
primary# ldm add-vcc port-range=5000-5100 primary-vcc0 primary
创建虚拟磁盘服务器
(vds)。
primary# ldm add-vds primary-vds0 primary
创建一个虚拟交换机服务 (vsw)
以便在逻辑域中的虚拟网络 (vnet) 设备之间实现联网。
primary# ldm add-vsw net-dev=igb0 primary-vsw0 primary
使用 ldm
list-services 命令验证已经创建了这些服务,如清单 1 所示。
清单 1. 验证服务
primary# ldm list-services primary
VDS
NAME VOLUME OPTIONS DEVICE
primary-vds0
VCC
NAME PORT-RANGE
primary-vcc0 5000-5100
VSW
NAME MAC NET-DEV DEVICE MODE
primary-vsw0 02:04:4f:fb:9f:0d nxge0 switch@0 prog,promisc
VCC
NAME LDOM PORT-RANGE
primary-vcc0 primary 5000-5100
VSW
NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID ...
primary-vsw0 primary 00:14:4f:f8:28:c2 igb0 0 switch@0 1 1 1500 on
VDS
NAME LDOM VOLUME OPTIONS MPGROUP DEVICE
primary-vds0 primary
Oracle VM Server for SPARC 使用 SSL
对迁移流量进行加密,以保护敏感数据免受利用,并消除了对额外硬件和专用网络的需求;
当源计算机和目标计算机上的主域具有分配的加密单元时,迁移操作的速度会增加。速度增加的原因在于可以将 SSL 操作分流到加密单元。
注:SPARC T4 CPU
具有内置的加密指令,因此您不需要为 CPU 分配这些指令。
确定控制域中是否有加密设备。
primary# ldm list -o crypto primary
为控制域分配加密资源。
primary# ldm set-crypto 1 primary
为控制域分配 CPU 和内存。
您可以通过向源计算机上的主域中添加更多 CPU 来减少整体迁移时间。最好为每个主域至少分配 8 个 CPU。例如,以下命令为控制域分配 8 个 CPU 和
4 GB 内存。
primary# ldm start-reconf primary
primary# ldm set-vcpu 8 primary
primary# ldm set-memory 4G primary
重新启动系统。
primary# init 6
重新启动系统之后,启用 Oracle VM Server for SPARC 并为系统配置一个域:控制域
primary。在控制域中,您可以创建和配置其他域。
确保启用 Logical Domains Manager
(ldmd) 和虚拟网络终端服务器 (vntsd) 服务。
primary# svcadm enable ldmd
primary# svcadm enable vntsd
向服务处理器 (SP)
添加逻辑域计算机配置。例如,以下命令添加名为 initial 的配置。
primary# ldm add-config initial
验证该配置可以使用。
primary# ldm list-config
factory-default
initial [current]
配置来宾域
配置控制域之后,创建来宾域以用作 Oracle 数据库节点。在作为源计算机的物理服务器上,仅创建一个来宾域。另一台物理服务器最终将成为目标计算机。
最初使用以下资源创建来宾域 ldg1:
8 GB 内存。
24 个 CPU。
一个虚拟网络接口 (vnet0),它连接到虚拟交换机 primary-vsw0。
一个虚拟磁盘,它在来宾域中显示为 c0d0 并且是存储阵列中的一个 LUN。域 ldg1
使用存储阵列的 LUN 0 (c2t6d0)。
另一个虚拟磁盘,它在来宾域中显示为 c0d1 并且是存储阵列中的一个 LUN。域 ldg1
使用存储阵列的 LUN 1 (c2t6d1)。此虚拟磁盘用于存储 Oracle 数据库文件。
执行以下步骤创建每个来宾域:
在源计算机上,从控制域创建
ldg1 来宾域。
注:如果您的服务器不是基于
SPARC T4 的系统,则仅执行 ldm set-crypto 命令。
primary# ldm create ldg1
primary# ldm set-vcpu 24 ldg1
primary# ldm set-memory 8G ldg1
primary# ldm set-crypto 3 ldg1
primary# ldm add-vnet vnet0 primary-vsw0 ldg1
primary# ldm add-vdsdev /dev/dsk/c2t6d0s2 vol1@primary-vds0
primary# ldm add-vdisk vol1 vol1@primary-vds0 ldg1
primary# ldm add-vdsdev /dev/dsk/c2t6d1s2 oradata@primary-vds0
primary# ldm add-vdisk oradata oradata@primary-vds0 ldg1
创建域之后,在源计算机上使用以下命令从控制域绑定并启动来宾域。
primary# ldm bind ldg1
primary# ldm start ldg1
确定域的控制台端口。
primary# ldm ls ldg1
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
ldg1 active -n---- 5000 24 8G 0.0% 1h 1m
使用 telnet 命令访问
ldg1 域的控制台。
primary# telnet localhost 5000
启动来宾域之后,确保在来宾域中安装了相应的 Oracle Solaris 操作系统和补丁。您可以通过网络、从 DVD 或使用 DVD ISO
映像来执行安装。参见 Oracle VM Server for SPARC 2.1 管理指南。
注:LUN
通常在不同服务器上以不同名称显示。控制域中的 LUN 名称不需要相同。但是,两个系统上的控制域必须使用相同的卷名(vol1 和
oradata)对相同的 LUN(LUN 0 和 LUN 1)进行虚拟化。
清单 2 的示例显示了如何为名为 ldg1 的域配置 8 个 CPU、24 GB 内存以及 Sun Storage
2540-M2 存储阵列中的两个 LUN。
清单 2. 域配置示例 primary# ldm ls -l ldg1
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
ldg1 active -n---- 5000 24 8G 0.0% 1h 1m
SOFTSTATE
Solaris running
MAC
00:14:4f:fb:96:89
HOSTID
0x84fb9689
CONTROL
failure-policy=ignore
DEPENDENCY
master=
VCPU
VID PID UTIL STRAND
0 16 0.2% 100%
1 17 0.0% 100%
2 18 0.5% 100%
3 19 0.0% 100%
4 20 0.0% 100%
5 21 0.0% 100%
6 22 0.1% 100%
7 23 0.0% 100%
8 24 0.1% 100%
9 25 0.0% 100%
10 26 0.0% 100%
11 27 0.0% 100%
12 28 0.0% 100%
13 29 0.0% 100%
14 30 0.0% 100%
15 31 0.0% 100%
16 32 0.0% 100%
17 33 0.0% 100%
18 34 0.0% 100%
19 35 0.0% 100%
20 36 0.0% 100%
21 37 0.0% 100%
22 38 0.0% 100%
23 39 0.1% 100%
MEMORY
RA PA SIZE
0x8000000 0x408000000 8G
VARIABLES
boot-device=vdisk1
keyboard-layout=US-English
NETWORK
NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP
vnet1 primary-vsw0@primary 0 network@0 00:14:4f:f9:c0:62 1 1500
DISK
NAME VOLUME TOUT ID DEVICE SERVER MPGROUP
vdisk1 vol1@primary-vds0 0 disk@0 primary
oradata oradata@primary-vds0 1 disk@1 primary
VCONS
NAME SERVICE PORT
ldg1 primary-vcc0@primary 5000
清单 3 的示例显示了控制域的配置。使用 ldm list-services
命令验证已经创建了这些服务。
清单 3. 控制域配置示例 primary# ldm ls-services primary
VCC
NAME LDOM PORT-RANGE
primary-vcc0 primary 5000-5100
VSW
NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID ...
primary-vsw0 primary 00:14:4f:f9:32:b0 nxgeg0 0 switch@0 1 1 ...
VDS
NAME LDOM VOLUME OPTIONS MPGROUP DEVICE
primary-vds0 primary vol1 /dev/dsk/c2t6d0s2
oradata /dev/dsk/c2t6d1s2
在来宾域中安装 Oracle Solaris
确保在来宾域中安装了相应的 Oracle Solaris 版本,并验证打了所需的补丁。
在来宾域中安装 Oracle Solaris 之后,可以配置并启用系统使其使用 Oracle 数据库。
安装 Oracle Database
Oracle Database 软件的安装类似于标准 Oracle Database 安装。首先安装 Oracle
Database,然后应用最新补丁集。使用第二个 LUN 创建 UFS 或 ZFS 文件系统用于存储 Oracle 数据库数据文件。
有关针对 Oracle 数据库使用 ZFS
的更多信息,请参见针对
Oracle 数据库配置 Oracle Solaris ZFS。
准备目标服务器
按如下方式准备目标服务器。
执行以下各节中所述的步骤来准备目标计算机:
安装 Oracle VM
Server for SPARC 软件
配置控制域
确保在目标服务器上提供了供待迁移域使用的所有虚拟 I/O 服务。
确保目标服务器有权访问同一存储中的 LUN 0 和 LUN
1。
要将第一个 LUN (LUN 0) 和第二个 LUN (LUN 1) 添加到目标计算机,从目标服务器的控制域执行以下命令:
# ldm add-vdsdev /dev/dsk/c2t6d0s2 vol1@primary-vds0
# ldm add-vdsdev /dev/dsk/c2t6d1s2 oradata@primary-vds0
注:LUN
通常在不同服务器上以不同名称显示。控制域中的 LUN 名称不需要相同。但是,两个系统上的控制域必须使用相同的卷名(vol1 和
oradata)对相同的 LUN(LUN 0 和 LUN 1)进行虚拟化。
确保待迁移域中的每个虚拟网络设备在目标计算机上都有一个对应的虚拟网络交换机:
# ldm add-vsw net-dev=nxge0 primary-vsw0 primary

⑧ oracle数据迁移有几种方法

数据量小的话一般直接用数据泵或者exp/imp就ok了,也可以用rman备份,这些都是比较常规的,偏门点的可以用传输表空间,dblink直接复制等,反正看情况。

⑨ oracle数据库迁移redo log的方式有哪些

1.最简单的是,先删除1个日志,然后在新的路径下创建一个日志,直到所有的日志都重新创建完成即可完成迁移。删除前先备份。
2.再有一个方法,先关闭数据库,把日志拷贝新的位置,然后修改初始化参数,再启动数据库。(推荐这种方法,因为能保留重做信息)
第二种方法的实施步骤(仅供参考)
1.
关闭数据库,shutdown
immediate;
2.
把日志拷贝到新的位置
3.
启动数据库到mount状态,startup
mount;
4.
修改初始化参数,Alter
database
rename
file
‘c:\test\redo01.log’
to
‘d:\test\redo01.log’;
5.
启动数据库,alter
database
open;

热点内容
python浮点数取整 发布:2024-05-08 07:15:07 浏览:137
二手汽车解压程序 发布:2024-05-08 07:14:13 浏览:513
android和php最佳实践 发布:2024-05-08 07:10:07 浏览:852
安卓手机屏幕变了颜色怎么回事 发布:2024-05-08 07:09:56 浏览:450
安卓手机怎么拍人物和场景 发布:2024-05-08 06:55:39 浏览:281
phpurl中文乱码 发布:2024-05-08 06:25:34 浏览:53
社保账户及密码忘了怎么办 发布:2024-05-08 06:25:32 浏览:750
个人热点的密码怎么改 发布:2024-05-08 06:19:13 浏览:639
传递加密 发布:2024-05-08 06:19:02 浏览:682
c语言是啥意思啊 发布:2024-05-08 06:01:09 浏览:696