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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Pada peranti lama, klik "Saya" → "Tetapan" → "Sembang" → "Penghijrahan dan Sandaran Sejarah Sembang" → "Berhijrah". 2. Pilih peranti platform sasaran untuk dipindahkan, pilih rekod sembang untuk dipindahkan dan klik "Mula". 3. Log masuk dengan akaun WeChat yang sama pada peranti baharu dan imbas kod QR untuk memulakan penghijrahan sejarah sembang.

Cara terbaik untuk mengalihkan aplikasi C++ warisan ke awan: Penyamaran semula: Pindahkan kod aplikasi ke platform asli awan (seperti Kubernetes) dan memanfaatkan perkhidmatan awan. Cloudization: Sebarkan aplikasi pada platform awan dan gunakan perkhidmatan awan tanpa pemfaktoran semula kod.

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Fungsi C++ memainkan peranan penting dalam pembangunan GUI merentas platform, menyediakan API merentas platform untuk mencipta dan mengurus GUI. API ini termasuk SFML, Qt dan GLFW, yang menyediakan fungsi biasa untuk mengendalikan tetingkap, kawalan dan acara. Fungsi ini membolehkan pembangun membina pengalaman GUI yang konsisten merentas sistem pengendalian yang berbeza, memudahkan pembangunan berbilang platform dan mendayakan aplikasi yang berjalan dengan lancar pada pelbagai platform.

Jawapan: Dalam pembangunan merentas platform, rangka kerja PHP meningkatkan kecekapan dengan menjadikan kod boleh diguna semula, meningkatkan produktiviti dan memendekkan masa pembangunan. Butiran: Kod boleh diguna semula: Menyediakan komponen dan kelas pra-bina untuk mengurangkan penulisan kod berulang. Tingkatkan produktiviti: Automatikkan tugas yang membosankan seperti interaksi pangkalan data, membolehkan pembangun menumpukan pada fungsi teras. Masa pembangunan yang lebih pantas: Komponen pra-bina dan ciri automatik mempercepatkan pembangunan tanpa perlu kod dari awal.

Trend pembangunan merentas platform PHP: aplikasi web progresif, reka bentuk responsif, integrasi pengkomputeran awan. Tinjauan teknologi: pembangunan berterusan rangka kerja PHP, integrasi kecerdasan buatan dan sokongan IoT. Kes praktikal: Laravel membina aplikasi web progresif merentas platform.
