찾다
데이터 베이스MySQL 튜토리얼oracle10g 数据库跨平台迁移(表空间传输)

oracle10g 数据库跨平台迁移(表空间传输)

Jun 07, 2016 pm 03:44 PM
전염데이터 베이스공간크로스 플랫폼이주하다프로젝트

1 项目概述 由于客户现有的这套windows2003平台上的oracle10g数据库在性能和可维护性上不能满足需要,客户决定将数据库从windows平台迁移到Linux平台。综合停机时间等方面因素后决定使用表空间传输的方法来实施本次数据库迁移。 · aspectratio=t v:ext=edit

1      项目概述

由于客户现有的这套windows2003平台上的oracle10g数据库在性能和可维护性上不能满足需要,客户决定将数据库从windows平台迁移到Linux平台。综合停机时间等方面因素后决定使用表空间传输的方法来实施本次数据库迁移。

·         aspectratio="t" v:ext="edit">

a.本文的背景是Linux平台上的数据库已经安装完成,安装过程并不在本文的讨论范围。

b.本次是在模拟的实验环境下进行的,实际始终需要停止掉listener.

 

2      表空间传输概述

2.1   关于表空间

可传输表空间的特性主要用于进行库对库的表空间复制,要进行传输的表空间必须置于 read-only模式。如果生产库不允许表空间置为只读模式,没关系,方法还是有的,通过 RMAN 备份也可以创建可传输表空间集。要使用 可传输表空间的 特性,oracle 至少是 8i 企业版或更高版本。如果是相同操作系统平台相互导入,则8i及以上 版本均可支持,但如果是不同操作系统平台,数据库版本至少 10g 。被传输的表空间即可以是字典管理,也可以是本地管理。并且自 oracle9i 开始,被传输表空间的 block size 可以与目标数据库的 block size 不同.可传输表空间(还有个集)最大的优势是其速度比 export/import 或 unload/load 要快的多。因为可传输表空间主要是复制数据文件到目标路径,然后再使用 export/import或 Data Pump export/import 等应用仅导出/导入表空间对象的元数据到新数据库。

通常有两种方式传输表空间:

1)        手工操作。

按本节中的步骤操作,含 SQL*Plus, RMAN, IMP/EXP 或 Data Pump 等各种指令操作。

2)        使用 OEM 中的传送表空间向导。

要运行传送表空间向导:

?        使用具有 EXP_FULL_DATABASE 角色的用户登陆到 OEM 中 ;

?        点击维护 (Maintenance) 链接 ;

?        点击标题下方的 "Transport Tablespaces" 。

2.2   跨平台表空间传输

从oracle10g开始,可以实现跨平台传输表空间。有很多平台可以支持跨平台的传送.可以通过查询V$TRANSPORTABLE_PLATFORM视图来确认哪些平台可以支持,该视图同时也可以获取各平台的ENDIAN_FORMAT( 字节顺序 byte ordering)

SQL>SELECT*FROMV$TRANSPORTABLE_PLATFORM ORDER BY PLATFORM_ID;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT

----------- ---------------------------------------- --------------

1 Solaris[tm] OE (32-bit) Big

2 Solaris[tm] OE (64-bit) Big

3 HP-UX (64-bit) Big

4 HP-UX IA (64-bit) Big

5 HP Tru64 UNIX Little

6 AIX-Based Systems (64-bit) Big

7 Microsoft Windows IA (32-bit) Little

8 Microsoft Windows IA (64-bit) Little

9 IBM zSeries Based Linux Big

10 Linux IA (32-bit) Little

11 Linux IA (64-bit) Little

12 Microsoft Windows 64-bit for AMD Little

13 Linux 64-bit for AMD Little

15 HP Open VMS Little

16 Apple Mac OS Big

17 Solaris Operating System (x86) Little

18 IBM Power Based Linux Big

提示:关于字节顺序 (byte ordering)

一些操作系统(包括 Windows )在低位内存地址中用最低有效字节存储多字节二进制数据;因此这种系统被称为低地址低字节序。相反,其它的操作系统(包括 Solaris )将最高有效字节存储在低位内存地址中,因此这种系统被称为低地址高字节序。当一个低地址高字节序的系统试图从一个低地址低字节序的系统中读取数据时,需要一个转换过程 — 否则,字节顺序将导致不能正确解释读取的数据。不过,当在相同字节顺序的平台之间传输表空间时,不需要任何转换。

如果平台间的 endian不同,那么在执行导入操作之之前必须首先转换源平台的表空间到目标格式, 如果平台间 endian format 相同,则可以跳过转换的步骤,即使是不同平台。当然前提是各平台的数据库版本都不低于10g。

3     数据库迁移实施

3.1      确定平台字节顺序

    在确定使用表空间传输技术实施数据库钱以后,我们首先要做的就是确定现有数据库平台和目标平台的字节顺序,从而决定是否需要进行数据转换。具体操作如下:

以下操作在源主机(windows):

C:\Users\lenovo>sqlplus sys/Wxpt-2010@testdb as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 12月 7 10:34:56 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

PLATFORM_NAME

--------------------------------------------------------------------------------

ENDIAN_FORMAT

--------------

Microsoft Windows x86 64-bit

Little

 

以下操作在目标主机:

SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

PLATFORM_NAME

--------------------------------------------------------------------------------

ENDIAN_FORMAT

--------------

Linux IA (32-bit)

Little

3.2      查看用户及表空间信息

我们可以通过sql语句查询源数据库上的表空间及用户信息,确定要传输

的表空间。本次实验客户要传输的表空为:SY812T,PRODCTLT,CRPDTAT,DV812T,SVM812T,OL812T等

3.3      确定表空关联性

在我们确定了需要迁移的表空间后,还需要对表空间的关联性进行确认,如果表空间不是自包含的,则需要将与其关联的表空间一同进行传输。

以下操作均在源主机操作:

SQL> execute dbms_tts.transport_set_check('SY812T',TRUE);

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

Index SY812.F98511_0 in tablespace SY812I enforces primary constriants of table SY812.F98511 in tablespace SY812T

Index SY812.F98513_0 in tablespace SY812I enforces primary constriants of table SY812.F98513 in tablespace SY812T

Index SY812.F986101_0 in tablespace SY812I enforces primary constriants of table SY812.F986101 in tablespace SY812T

Index SY812.F98611_0 in tablespace SY812I enforces primary constriants of table

VIOLATIONS

--------------------------------------------------------------------------------

 SY812.F98611 in tablespace SY812T

Index SY812.F986110_0 in tablespace SY812I enforces primary constriants of table SY812.F986110 in tablespace SY812T

Index SY812.F986111_0 in tablespace SY812I enforces primary constriants of tabe SY812.F986111 in tablespace SY812T

Index SY812.F986113_0 in tablespace SY812I enforces primary constriants  of table SY812.F986113 in tablespace SY812T

·        

a.只要结果非空表空间就是非自包含的。

b.上述结果只截取了部分输出.

根据以上输出,可以看出SY812T表空间是非自包含的,SY812T有一个SY812I的索引表空间,我们在做表空间传输时需要连同SY812I一起传输。

 

创建一个exdp的通道来存放更改结构后的文件:

SQL> create directory tran as 'E:\tran';  

 

传输前,我们需要修改要传输的表空间为只读:

SQL> alter tablespace SY812T read only;

表空间已更改。

SQL> alter tablespace SY812I read only;

表空间已更改。

3.4      导出表结构

以下操作在源主机上:

C:\Documents and Settings\jdenew>expdp system/Wxpt-2010 directory=tran transport

_tablespaces=SY812T,SY812I   

Export: Release 10.2.0.4.0 - 64bit Production on Tuesday, 07 December, 2010 10:53:18

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** directory=tran

 transport_tablespaces=SY812T,SY812I

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing      object      type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type TRANSPORTABLE_EXPORT/INDEX

Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT

Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS

Processing      object      type TRANSPORTABLE_EXPORT/INDEX/FUNCTIONAL_AND_BITMAP/INDEX

Processing      object      type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/FUNCTIONAL_AND_BITM

AP/INDEX_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded

******************************************************************************

Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:

  E:\TRAN\EXPDAT.DMP

Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 10:53:50

 

3.5      转换平台

如果两个平台的字节顺序相同如:都为little或者都为big,则不需要进行平台转换,可直接跳到3.6步骤,本文档由于两个平台是相同的字节顺序字节转换不需要进行,此处的描述目的是说明字节顺序不同的平台间该如何处理。

以下操作在源主机上:

C:\Documents and Settings\jdenew>rman target sys/Wxpt-2010@testdb nocatalog

Recovery Manager: Release 10.2.0.4.0 - Production on Tue Dec 7 13:49:34 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: TESTDB (DBID=2499148843)

using target database control file instead of recovery catalog

 

RMAN> convert tablespace SY812T,SY812I to platform 'Linux IA (32-bit)' db_file_n

ame_convert 'E:\ORATBL\ORCL\','E:\tran\' 'F:\ORAIND\ORCL\','E:\tran\';

·        

1.       其中E:\ORATBL\ORCL\和F:\ORAIND\ORCL\'分别是SY812T,SY812I这两个表空间存放位置,我们可以通过toad或者只用sql语句进行查询。

2.       'Linux IA (32-bit)为3.1节中select语句的输出,分毫不可差。

 

Starting backup at 07-DEC-10

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile conversion

input datafile fno=00006 name=F:\ORAIND\ORCL\SY812I01.DBF

converted datafile=E:\TRAN\SY812I01.DBF

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:03

channel ORA_DISK_1: starting datafile conversion

input datafile fno=00005 name=E:\ORATBL\ORCL\SY812T01.DBF

converted datafile=E:\TRAN\SY812T01.DBF

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:07

Finished backup at 07-DEC-10

3.6      传输数据

数据转换完成后,从源主机用ftp 方式把在/E/tran目录下生成的文件以二进制的方式传输到目标机器lunix上的/oradata/train路径下。

·        

1./E/tran和/oradata/train可以根据实际情况进行创建,并修改权限为oracle/dba

 

3.7      创建用户及导入数据

数据传输完成后,我们要在目标主机上按照源主机上用户情况进行用户的创建。

以下操作在目标主机上:

[oracle@lenovo01130593 tran]$create user PRODCTL identified by oracle;

[oracle@lenovo01130593 tran]$grant connect,resource to PRODCTL;

用户创建完成后,我们导入3.6步传输过来的数据:

[oracle@lenovo01130593 tran]$ impdp system/oracle dumpfile=EXPDAT.DMP directory=tran exclude=transportable_export/table_statistics,transportable_export/grant/owner_grant/object_grant transport_datafiles=/oradata/tran/PRODCTLT01.DBF,/oradata/tran/PRODCTLI01.DBF

 

Import: Release 10.2.0.4.0 - Production on Tuesday, 07 December, 2010 14:13:56

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded

Starting"SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":system/******** dumpfile=EXPDAT.DMPdirectory=tran exclude=transportable_export/table_statistics,transportable_export/grant/owner_grant/object_grant transport_datafiles=/oradata/tran/PRODCTLT01.DBF,/oradata/tran/PRODCTLI01.DBF

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/INDEX

Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT

Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS

Processing      object      type TRANSPORTABLE_EXPORT/INDEX/FUNCTIONAL_AND_BITMAP/INDEX

Processing      object      type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 14:14:17

3.8    一致性确认

数据导入完成后,我们要对导入后的数据进行验证,验证的方法就是比对导入前后的内容即可。

以下在目标主机上操作:

SQL> connect /as sysdba

Connected.

SQL> select count(*) from dba_tables where owner='PRODCTL';  

  COUNT(*)

--------------------------------

        67

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL : 문자열 데이터 유형에 어떤 문자 세트를 사용할 수 있습니까?MySQL : 문자열 데이터 유형에 어떤 문자 세트를 사용할 수 있습니까?May 10, 2025 am 12:07 AM

mysqloffersvariouscharactersetsforstringdatatypes : 1) latin1forwesterneuropeanlanguages, 2) utf8formultulaultualsupport, 3) UTF8MB4F orextendedUnicodeincludeemojis, 4) UCS2Forfixed-widTheNcoding 및 5) asciiforbasiclatin.ChoingTherightSetensuresDatainTegrity

MySQL : Blobs의 스트리밍은 저장하는 것보다 낫습니까?MySQL : Blobs의 스트리밍은 저장하는 것보다 낫습니까?May 10, 2025 am 12:06 AM

스트리밍 블로브는 메모리 사용량을 줄이고 성능을 향상시키기 때문에 직접 저장보다 더 좋습니다. 1) 파일을 점차적으로 읽고 처리함으로써 데이터베이스 팽창 및 성능 저하를 피합니다. 2) 스트리밍에는 더 복잡한 코드 로직이 필요하며 I/O 작업 수를 증가시킬 수 있습니다.

MySQL 문자열 유형 : 스토리지, 성능 및 모범 사례MySQL 문자열 유형 : 스토리지, 성능 및 모범 사례May 10, 2025 am 12:02 AM

mysqlStringTypESmpactStorageAndperformanceAsfollows : 1) charisfixed, adlaysamestoragespace.

MySQL 문자열 유형 이해 : Varchar, Text, Char 등MySQL 문자열 유형 이해 : Varchar, Text, Char 등May 10, 2025 am 12:02 AM

mysqlstringtypesincludevarchar, text, char, enum, and set.1) varcharisversatileforvariable-lengthstringsupciedlimit.2) textisidealforlargetextStorage whithoudfinedlength.3) charisfixed, witableforconsistentDatalikecodes.4)

MySQL의 문자열 데이터 유형은 무엇입니까?MySQL의 문자열 데이터 유형은 무엇입니까?May 10, 2025 am 12:01 AM

mysqloffersvariousstringdatatatypes : 1) charfixed-lengthstrings, 2) varcharforvariable-lengthtext, 3) binaryandvarbinaryforbinarydata, 4) blobandtextforlargedata 및 5) enumandsetforcontrolledInput.achtolledinput.CheachorciCificusessandperististicatististicatististics

새로운 MySQL 사용자에게 권한을 부여하는 방법새로운 MySQL 사용자에게 권한을 부여하는 방법May 09, 2025 am 12:16 AM

TograntpermissionSt

MySQL에서 사용자를 추가하는 방법 : 단계별 가이드MySQL에서 사용자를 추가하는 방법 : 단계별 가이드May 09, 2025 am 12:14 AM

ToadDuserSinMySqleFeffectially, 다음에 따르면, 다음 사항을 따르십시오

MySQL : 복잡한 권한이있는 새 사용자 추가MySQL : 복잡한 권한이있는 새 사용자 추가May 09, 2025 am 12:09 AM

toaddanewuser와 함께 complexpermissionsinmysql, followthesesteps : 1) createShereuser'NewUser '@'localhost'Identifiedby'pa ssword ';. 2) grantreadaccesstoalltablesin'mydatabase'withgrantselectonmydatabase.to'newuser'@'localhost';. 3) GrantWriteAccessto '

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경