ホームページ データベース mysql チュートリアル convert database异构同字节迁移

convert database异构同字节迁移

Jun 07, 2016 pm 04:36 PM
convert database バイト 移行する

最近有项目需要异构迁移,源平台是windows 64bit的,需要迁移到linux 64bit的,数据库平台是oracle 10.2.0.4 64bit的,这里主要想讨论的迁移方式是oracle rman的convert database。 官档中有一个简要的说明: Restrictions on CONVERT DATABASE The primary

最近有项目需要异构迁移,源平台是windows 64bit的,需要迁移到linux 64bit的,数据库平台是oracle 10.2.0.4 64bit的,这里主要想讨论的迁移方式是oracle rman的convert database。

官档中有一个简要的说明:
Restrictions on CONVERT DATABASE

The primary additional restriction on transporting entire databases is that the source and target platform must share the same endian format. For example, while you can transport a database from Microsoft Windows to Linux for x86 (both little-endian), or from HP-UX to AIX (both big-endian), you cannot transport a whole database from Solaris to Linux to x86 using this feature. You can, however, create a new database on a target platform manually, and transport individual tablespaces from the source database using the RMAN CONVERT TABLESPACE or CONVERT DATAFILE commands.

Oracle 10g 已经有了convert database,可以转换迁移同字节的oracle database,但是如果是不同的字节,那么convert database无法完成,此时只能使用tts来迁移个别的tablespace

Convert database有以下需要注意的地方:
Also note that some parts of the database are not transported directly:
? Redo log files and control files from the source database are not transported. New control files and redo log files are created for the target database during the transport process, and an OPEN RESETLOGS is performed once the new database is created.

? the output for the CONVERT DATABASE command, but users must copy the BFILEs themselves and fix their locations on the target platform.

? Datafiles for locally managed temporary tablespaces are not transported. The temporary tablespaces are re-created at the target platform by running the transport script.

? External tables and directories are not transported. RMAN provides a list of affected objects as part of the output of the CONVERT DATABASE command, but users must redefine these on the target platform. See Oracle Database Administrator's Guide for more information on managing external tables and directories.

? Password files are not transported. If a password file was used with the source database, the output of CONVERT DATABASE includes a list of all usernames and their associated privileges. Create a new password file on the target database using this information. See Oracle Database Security Guide for more information on managing password files.
下面小鱼根据官方的资料来实际的模拟一次迁移

1 查看平台字节顺序
SQL> select * from v$transportable_platform order by 3;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ---------------------------------------- -------------------------
---
6 AIX-Based Systems (64-bit) Big
18 IBM Power Based Linux Big
2 Solaris[tm] OE (64-bit) Big
4 HP-UX IA (64-bit) Big
16 Apple Mac OS Big
1 Solaris[tm] OE (32-bit) Big
9 IBM zSeries Based Linux Big
3 HP-UX (64-bit) Big
17 Solaris Operating System (x86) Little
20 Solaris Operating System (x86-64) Little
12 Microsoft Windows x86 64-bit Little
13 Linux x86 64-bit Little
8 Microsoft Windows IA (64-bit) Little
19 HP IA Open VMS Little
11 Linux IA (64-bit) Little
5 HP Tru64 UNIX Little
10 Linux IA (32-bit) Little
7 Microsoft Windows IA (32-bit) Little
15 HP Open VMS Little

19 rows selected.

2 关闭数据库启动到read only状态
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size 2066080 bytes
Variable Size 385878368 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14708736 bytes
Database mounted.
SQL> alter database open read only;

Database altered.

3检验当前环境是否能够convert database
SQL> set serveroutput on;
SQL> declare
2 db_ready boolean;
3 begin
4 db_ready:=
5 dbms_tdb.check_db('Linux x86 64-bit',dbms_tdb.skip_readonly);
6 end;
7 /

PL/SQL procedure successfully completed.

如果dbms_tdb.check_db没有任何警告出现,则支持迁移

SQL> DECLARE
2 external BOOLEAN;
3 BEGIN
4 /* value of external is ignored, but with SERVEROUTPUT set to ON
5 * dbms_tdb.check_external displays report of external objects
6 * on console */
7 external := DBMS_TDB.CHECK_EXTERNAL;
8 END;
9 /
The following directories exist in the database:
SYS.DATA_PUMP_DIR, SYS.ORACLE_OCM_CONFIG_DIR, SYS.ADMIN_DIR, SYS.WORK_DIR

PL/SQL procedure successfully completed.

检验是否有外部表、directory和bfile的存在,这里只存在系统的directory,后面可以再建。

4 convert database,这个脚本即可在源端执行,也可以在目标端执行。
C:\Users\Administrator>rman target /
RMAN> convert database
2> new database '10gnew'
3> transport script 'd:\transport\transportscript.sql'
4> to platform 'Linux x86 64-bit'
5> db_file_name_convert 'F:\oracle\product\10.2.0\oradata\ora10g' 'd:\transport'
;

Starting convert at 09-MAY-14
using channel ORA_DISK_1

Directory SYS.DATA_PUMP_DIR found in the database
Directory SYS.ORACLE_OCM_CONFIG_DIR found in the database
Directory SYS.ADMIN_DIR found in the database
Directory SYS.WORK_DIR found in the database

User SYS with SYSDBA and SYSOPER privilege found in password file
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00001 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYSTEM01.D
BF
converted datafile=D:\TRANSPORT\SYSTEM01.DBF
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00003 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYSAUX01.D
BF
converted datafile=D:\TRANSPORT\SYSAUX01.DBF
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00002 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UNDOTBS01.
DBF
converted datafile=D:\TRANSPORT\UNDOTBS01.DBF
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00004 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USERS01.DB
F
converted datafile=D:\TRANSPORT\USERS01.DBF
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
Run SQL script D:\TRANSPORT\TRANSPORTSCRIPT.SQL on the target platform to create
database
Edit init.ora file F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00P7S8VO_1_0.ORA.
This PFILE will be used to create the database on the target platform
To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on the target plat
form
To change the internal database identifier, use DBNEWID Utility
Finished backup at 09-MAY-14

这个脚本的大体含义如下:
New database 指定新的数据库名称
Transport script 是生成的数据库脚本,其中包括创建控制文件,指定pfile文件,open resetlogs打开,创建temp datafile,运行脚本编译无效的对象等
To_platform指定目标端的平台
Db_file_name_convert指定转换前和转换后数据文件位置

5 移动convert database生成的datafiles到目标库

6 修改d:\transport\transportscript.sql脚本,根据目标库实际文件的存储位置进行修改

来看下生成的这个脚本文件:
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT PFILE='F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00P7S8VO_1_0.ORA'
CREATE CONTROLFILE REUSE SET DATABASE "10GNEW" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ARCH_D-10GNEW_ID-4165993973_S-1_T-1_A-847121848_00P7S8VO' SIZE 50M,
GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ARCH_D-10GNEW_ID-4165993973_S-2_T-1_A-847121848_00P7S8VO' SIZE 50M,
GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ARCH_D-10GNEW_ID-4165993973_S-3_T-1_A-847121848_00P7S8VO' SIZE 50M
DATAFILE
'D:\TRANSPORT\SYSTEM01.DBF',
'D:\TRANSPORT\UNDOTBS01.DBF',
'D:\TRANSPORT\SYSAUX01.DBF',
'D:\TRANSPORT\USERS01.DBF'
CHARACTER SET ZHS16GBK
;

-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\DATA_D-10GNEW_I-4165993973_TS-TEMP_FNO-1_00P7S8VO'
SIZE 20971520 AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
--

set echo off
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prompt * Your database has been created successfully!
prompt * There are many things to think about for the new database. Here
prompt * is a checklist to help you stay on track:
prompt * 1. You may want to redefine the location of the directory objects.
prompt * 2. You may want to change the internal database identifier (DBID)
prompt * or the global database name for this database. Use the
prompt * NEWDBID Utility (nid).
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SHUTDOWN IMMEDIATE
STARTUP UPGRADE PFILE='F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00P7S8VO_1_0.ORA'
@@ ?/rdbms/admin/utlirp.sql
SHUTDOWN IMMEDIATE
STARTUP PFILE='F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00P7S8VO_1_0.ORA'
-- The following step will recompile all PL/SQL modules.
-- It may take serveral hours to complete.
@@ ?/rdbms/admin/utlrp.sql
set feedback 6;

7 编写pfile文件,这个也需要注意根据目录来编写指定的参数,这里就不再列出了

8 pfile文件和datafile文件存储到指定位置后,就可以直接运行上面编辑好的transportscript.sql脚本了

SQL> CONNECT / AS SYSDBA
SQL> @transportscript

刚开始报出了一个创建控制文件时:
ORA-01130: database file version 10.2.0.3.0 incompatible with ORACLE version 10.2.0.0.0

这个是由于参数文件中没有指定compatible,而此时oracle读取的是默认的10.2.0,重新指定compatible=10.2.0.3.0参数后,再次执行transportscript.sql脚本一切正常

这里需要注意的oracle的convert database只能用于迁移同字节的平台,而如果字节顺序不同,此时只能用tts、逻辑复制gg等工具来实现迁移。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

discuzデータベースエラーを解決する方法 discuzデータベースエラーを解決する方法 Nov 20, 2023 am 10:10 AM

discuz データベース エラーの解決策は次のとおりです: 1. データベース構成を確認します; 2. データベース サーバーが実行されていることを確認します; 3. データベース テーブルのステータスを確認します; 4. データをバックアップします; 5. キャッシュをクリアします; 6. Discuz を再インストールします; 7. サーバー リソースを確認します。 ; 8. Discuz 公式サポートに連絡します。 Discuz データベース エラーを解決するには、複数の側面から始めて、徐々に問題の原因を調査し、対応する措置を講じて修復する必要があります。

1MB のストレージ容量は何バイトに相当します 1MB のストレージ容量は何バイトに相当します Mar 03, 2023 pm 05:42 PM

1MB のストレージ容量は、2 の 20 乗バイト、つまり 1,048,576 バイトに相当します。 MB はコンピュータの記憶単位であり、「メガ」と発音されます。1MB は 1024KB、1KB は 1024B (バイト) に等しいため、1MB は 1048576 (1024 *1024) バイトに相当します。

WeChat のチャット履歴を新しい電話に移行する方法 WeChat のチャット履歴を新しい電話に移行する方法 Mar 26, 2024 pm 04:48 PM

1. 古いデバイスで WeChat アプリを開き、右下の [自分] をクリックし、[設定] 機能を選択して、[チャット] をクリックします。 2. [チャット履歴の移行とバックアップ]を選択し、[移行]をクリックして、デバイスを移行するプラットフォームを選択します。 3. [移行するチャットを選択] をクリックするか、左下の [すべて選択] をクリックするか、チャット記録を自分で選択します。 4. 選択後、右下隅の [開始] をクリックして、新しいデバイスを使用してこの WeChat アカウントにログインします。 5. 次に QR コードをスキャンしてチャット レコードの移行を開始し、ユーザーは移行が完了するまで待つだけです。

リークにより、Intel Arrow Lake-U、-H、-HX、-S の主要な仕様が明らかに リークにより、Intel Arrow Lake-U、-H、-HX、-S の主要な仕様が明らかに Jun 15, 2024 pm 09:49 PM

IntelArrowLake は、LunarLake と同じプロセッサ アーキテクチャに基づいていると予想されており、つまり、Intel の新しい Lion Cove パフォーマンス コアが経済的な Skymont 効率コアと組み合わされることになります。

128MBとは何バイトを意味しますか? 128MBとは何バイトを意味しますか? Nov 29, 2022 am 10:35 AM

128mb は 134217728 バイトを指します。バイト換算式は「1MB=1024KB=1048576B=8388608bit」です。これは、1048576 個の英字と 524288 個の漢字を保存できることを意味します。トラフィック単位の換算式は、1GB=1024MB、1MB=1024KB、1KB です。 = 1024B。

Linux と Docker: ホスト間でコンテナを移行および同期するにはどうすればよいですか? Linux と Docker: ホスト間でコンテナを移行および同期するにはどうすればよいですか? Jul 29, 2023 pm 02:52 PM

Linux と Docker: ホスト間でコンテナを移行および同期するにはどうすればよいですか?概要: Docker は、軽量の仮想化ソリューションを提供する人気のあるコンテナ化テクノロジです。マルチホスト環境では、ホスト間でコンテナを移行して同期することが非常に一般的な要件です。この記事では、Linux と Docker を使用してコンテナーのクロスホスト移行と同期を実装する方法を紹介し、参考用のサンプル コードをいくつか紹介します。はじめに コンテナ化テクノロジーの台頭により、アプリケーションの導入と移行がより柔軟かつ効率的になりました。複数のホスト上で

1 ビットは何バイトに相当します 1 ビットは何バイトに相当します Mar 09, 2023 pm 03:11 PM

1 ビットは 1 バイトの 8 分の 1 に相当します。 2 進数体系では、0 または 1 がそれ​​ぞれ 1 ビット (bit) であり、ビットはデータ記憶の最小単位であり、8 ビット (bit、略して b) ごとに 1 バイト (Byte) が構成されます。バイト) = 8 ビット」。ほとんどのコンピュータ システムでは、バイトは 8 ビット (ビット) 長のデータ単位であり、文字、数字、またはその他の文字を表すためにバイトが使用されます。

1 つの ASCII 文字は何バイトを占めますか? 1 つの ASCII 文字は何バイトを占めますか? Mar 09, 2023 pm 03:49 PM

1 つの ASCII 文字が 1 バイトを占めます。 ASCII コード文字は、コンピュータでは 7 ビットまたは 8 ビットのバイナリ エンコーディングで表され、1 バイトで格納されます。つまり、1 つの ASCII コードが 1 バイトを占めます。 ASCII コードは、標準 ASCII コードと拡張 ASCII コードに分けることができます。標準 ASCII コードは、基本 ASCII コードとも呼ばれます。7 ビットの 2 進数 (残り 1 桁は 0) を使用して、すべての大文字と小文字を表します。 0 ~ 9 の数字。アメリカ英語で使用される句読点および特殊な制御文字。

See all articles