oracle10g 数据库跨平台迁移(表空间传输)
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

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









1. 기존 단말기에서 "나" → "설정" → "채팅" → "채팅기록 이전 및 백업" → "이전"을 클릭하세요. 2. 마이그레이션할 대상 플랫폼 장치를 선택하고 마이그레이션할 채팅 기록을 선택한 후 "시작"을 클릭합니다. 3. 새 기기에서 동일한 WeChat 계정으로 로그인하고 QR 코드를 스캔하여 채팅 기록 마이그레이션을 시작하세요.

레거시 C++ 애플리케이션을 클라우드로 이동하는 가장 좋은 방법: 플랫폼 변경: 애플리케이션 코드를 클라우드 네이티브 플랫폼(예: Kubernetes)으로 마이그레이션하고 클라우드 서비스를 활용합니다. 클라우드화: 코드 리팩토링 없이 클라우드 플랫폼에 애플리케이션을 배포하고 클라우드 서비스를 활용합니다.

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

C++ 기능은 크로스 플랫폼 GUI 개발에서 중요한 역할을 하며, GUI를 생성하고 관리하기 위한 크로스 플랫폼 API를 제공합니다. 이러한 API에는 창, 컨트롤 및 이벤트를 작동하는 공통 기능을 제공하는 SFML, Qt 및 GLFW가 포함됩니다. 이러한 기능을 통해 개발자는 다양한 운영 체제에서 일관된 GUI 경험을 구축하여 다중 플랫폼 개발을 단순화하고 다양한 플랫폼에서 원활하게 실행되는 애플리케이션을 활성화할 수 있습니다.

답변: 크로스 플랫폼 개발에서 PHP 프레임워크는 코드를 재사용 가능하게 만들고 생산성을 향상시키며 개발 시간을 단축하여 효율성을 향상시킵니다. 세부 정보: 재사용 가능한 코드: 반복적인 코드 작성을 줄이기 위해 사전 구축된 구성 요소와 클래스를 제공합니다. 생산성 향상: 데이터베이스 상호 작용과 같은 지루한 작업을 자동화하여 개발자가 핵심 기능에 집중할 수 있습니다. 개발 시간 단축: 사전 구축된 구성 요소와 자동화된 기능을 사용하면 처음부터 코딩하지 않고도 개발 속도를 높일 수 있습니다.

PHP 크로스 플랫폼 개발 동향: 진보적인 웹 애플리케이션, 반응형 디자인, 클라우드 컴퓨팅 통합. 기술 전망: PHP 프레임워크, 인공 지능 통합 및 IoT 지원의 지속적인 개발. 실제 사례: Laravel은 크로스 플랫폼 프로그레시브 웹 애플리케이션을 구축합니다.
