通过辅助库(Auxiliary)做ASM迁移案例
通过辅助库(Auxiliary)做ASM迁移案例 系统环境: 操作系统:RedHat EL55 Oracle : Oracle 10gR2 通过辅助库建立ASM迁移,可以很方便将文件系统的存储异机迁移;并且可减少数据库的停机时间,本案例为测试案例,目标库和辅助库都在同一台机器上。 1、建立A
通过辅助库(Auxiliary)做ASM迁移案例
系统环境:
操作系统:RedHat EL55
Oracle : Oracle 10gR2
通过辅助库建立ASM迁移,可以很方便将文件系统的存储异机迁移;并且可减少数据库的停机时间,本案例为测试案例,目标库和辅助库都在同一台机器上。
1、建立ASM实例
[oracle@rh55 ~]$export ORACLE_SID=+ASM
[oracle@rh55 ~]$sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 29 11:39:49 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
11:39:50 SYS@ +ASM>startup nomount
ASM instance started
Total System Global Area 83886080 bytes
Fixed Size 1217836 bytes
Variable Size 57502420 bytes
ASM Cache 25165824 bytes
11:39:57 SYS@ +ASM>select name ,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DG1 DISMOUNTED
RCY1 DISMOUNTED
Elapsed: 00:00:00.24
11:40:14 SYS@ +ASM>alter diskgroup dg1 mount;
Diskgroup altered.
Elapsed: 00:00:04.88
11:40:29 SYS@ +ASM>alter diskgroup rcy1 mount;
Diskgroup altered.
Elapsed: 00:00:04.77
2、建立并配置辅助库
Target DB:test1
Auxiliary DB: test1asm
11:41:58 SYS@ test1>show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string test1
db_unique_name string test1
global_names boolean FALSE
instance_name string test1
service_names string test1
11:42:06 SYS@ test1>show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/10.2.0
/db_1/dbs/spfiletest1.ora
11:42:11 SYS@ test1>create pfile from spfile;
File created.
建立辅助库初始化参数文件:
[oracle@rh55 dbs]$cp inittest1.ora inittest1asm.ora
[oracle@rh55 dbs]$ cat inittest1asm.ora
*.background_dump_dest='$ORACLE_BASE/admin/test1asm/bdump'
*.control_files='+dg1/test1asm/controlfile/control01.ctl'
*.core_dump_dest='$ORACLE_BASE/admin/test1asm/cdump'
*.db_block_size=8192
*.db_cache_size=30M#DEMO
*.db_file_multiblock_read_count=16
*.db_name='test1asm'
*.instance_name='test1asm'
*.log_archive_dest_1='location=+rcy1'
*.log_archive_format='arch_%t_%s_%r.log'
*.optimizer_mode='choose'
*.parallel_threads_per_cpu=4#SMALL
*.pga_aggregate_target=30M#DEMO
*.query_rewrite_enabled='true'
*.query_rewrite_integrity='trusted'
*.sga_target=240M
*.shared_pool_size=20M#DEMO
*.star_transformation_enabled='true'
*.undo_management='auto'
*.undo_tablespace='undotbs1'
*.user_dump_dest='$ORACLE_BASE/admin/test1asm/udump'
*.db_create_file_dest='+DG1'
*.db_file_name_convert=("/u01/app/oracle/oradata/test1","+dg1/test1asm/datafile","/u01/app/oracle/oradata/test1","+dg1/test1asm/tempfile")
*.log_file_name_convert=("/u01/app/oracle/oradata/test1","+dg1/test1asm/onlinelog")
db_recovery_file_dest='+rcy1'
db_recovery_file_dest_size=2g
*.audit_file_dest='$ORACLE_BASE/admin/test1asm/adump'/bdump
建立辅助库相关目录:
[oracle@rh55 dbs]$ mkdir -p $ORACLE_BASE/admin/test1asm/cdump
[oracle@rh55 dbs]$ mkdir -p $ORACLE_BASE/admin/test1asm/udump
[oracle@rh55 dbs]$ mkdir -p $ORACLE_BASE/admin/test1asm/adump
建立口令文件:
[oracle@rh55 dbs]$ orapwd file=orapwtest1asm password=oracle entries=3
建立tnsnames文件:
[oracle@rh55 admin]$ cat tnsnames.ora
TEST1ASM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rh55)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test1asm)
( UR = A )
)
)
TEST1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rh55)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test1)
)
)
3、迁移文件系统到ASM存储
对目标库备份:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/disk2/bak/test1/auto_ctl_%d_%F';
RMAN> run{
2> shutdown immediate;
3> startup force mount;
4> allocate channel ch1 device type disk;
5> backup as compressed backupset database format '/disk2/bak/test1/%d_%s.bak'
6> plus archivelog format '/disk2/bak/test1/arch_%U.bak'
7> tag='full_log';
8> release channel ch1;}
启动辅助库实例:
[oracle@rh55 dbs]$export ORACLE_SID=test1asm
[oracle@rh55 dbs]$ sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 29 12:17:22 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
12:17:22 SYS@ test1asm>startup nomount;
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 58722068 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
15:47:09 SYS@ test1asm>show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string /u01/app/oracle/oradata/test1,
+dg1/test1asm/datafile, /u01/
app/oracle/oradata/test1, +dg1
/test1asm/tempfile
db_name string test1asm
db_unique_name string test1asm
instance_name string test1asm
log_file_name_convert string /u01/app/oracle/oradata/test1,
+dg1/test1asm/onlinelog
service_names string test1asm
迁移数据文件到ASM存储:
export ORACLE_SID=test1
[oracle@rh55 dbs]$ rman target sys/oracle@test1 auxiliary sys/oracle@test1asm
Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 29 15:34:03 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: TEST1 (DBID=1174898526)
connected to auxiliary database: TEST1ASM (not mounted)
RMAN>duplicate target database to test1asm;
Starting Duplicate Db at 29-MAY-14
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=35 devtype=DISK
contents of Memory Script:
{
set until scn 259211;
set newname for datafile 1 to
"+DG1/test1asm/datafile/system01.dbf";
set newname for datafile 2 to
"+DG1/test1asm/datafile/undotbs01.dbf";
set newname for datafile 3 to
"+DG1/test1asm/datafile/sysaux01.dbf";
set newname for datafile 4 to
"+DG1/test1asm/datafile/users01.dbf";
restore
check readonly
clone database
;
}
executing Memory Script
executing command: SET until clause
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 29-MAY-14
using channel ORA_AUX_DISK_1
skipping datafile 1; already restored to file +DG1/test1asm/datafile/system01.dbf
skipping datafile 2; already restored to file +DG1/test1asm/datafile/undotbs01.dbf
skipping datafile 3; already restored to file +DG1/test1asm/datafile/sysaux01.dbf
skipping datafile 4; already restored to file +DG1/test1asm/datafile/users01.dbf
restore not done; all files readonly, offline, or already restored
Finished restore at 29-MAY-14
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "TEST1ASM" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( '+DG1/test1asm/onlinelog/redo01a.log' ) SIZE 100 M REUSE,
GROUP 2 ( '+DG1/test1asm/onlinelog/redo02a.log' ) SIZE 100 M REUSE,
GROUP 3 ( '+DG1/test1asm/onlinelog/redo03a.log' ) SIZE 100 M REUSE
DATAFILE
'+DG1/test1asm/datafile/system01.dbf'
CHARACTER SET ZHS16GBK
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
released channel: ORA_AUX_DISK_1
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=848849467 filename=+DG1/test1asm/datafile/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=848849467 filename=+DG1/test1asm/datafile/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=848849467 filename=+DG1/test1asm/datafile/users01.dbf
contents of Memory Script:
{
set until scn 259211;
recover
clone database
delete archivelog
;
}
executing Memory Script
executing command: SET until clause
Starting recover at 29-MAY-14
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=35 devtype=DISK
starting media recovery
archive log thread 1 sequence 17 is already on disk as file /disk1/arch_test1/arch_1_17_797856158.log
archive log thread 1 sequence 18 is already on disk as file /disk1/arch_test1/arch_1_18_797856158.log
archive log filename=/disk1/arch_test1/arch_1_17_797856158.log thread=1 sequence=17
archive log filename=/disk1/arch_test1/arch_1_18_797856158.log thread=1 sequence=18
media recovery complete, elapsed time: 00:00:08
Finished recover at 29-MAY-14
contents of Memory Script:
{
shutdown clone;
startup clone nomount ;
}
executing Memory Script
database dismounted
Oracle instance shut down
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 05/29/2014 15:37:59
RMAN-03015: error occurred in stored script Memory Script
RMAN-04006: error from auxiliary database: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
(以上错误信息:是因为Instance shutdown后,连接不到Instance,可以通过建立静态监听避免这个错误,这个错误不影响数据的迁移)
OPEN辅助库:
5:39:01 SYS@ test1asm>startup mount;
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 58722068 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Database mounted.
15:39:28 SYS@ test1asm>select name from v$datafile;
NAME
--------------------------------------------------------------------------------------------------------
+DG1/test1asm/datafile/system01.dbf
+DG1/test1asm/datafile/undotbs01.dbf
+DG1/test1asm/datafile/sysaux01.dbf
+DG1/test1asm/datafile/users01.dbf
Elapsed: 00:00:00.20
15:39:39 SYS@ test1asm>select name from v$controlfile;
NAME
--------------------------------------------------------------------------------------------------------
+DG1/test1asm/controlfile/control01.ctl
Elapsed: 00:00:00.04
15:39:47 SYS@ test1asm>select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------------------------------
+DG1/test1asm/onlinelog/redo03a.log
+DG1/test1asm/onlinelog/redo02a.log
+DG1/test1asm/onlinelog/redo01a.log
Elapsed: 00:00:00.05
Open database:
15:41:39 SYS@ test1asm>alter database open resetlogs;
Database altered.
Elapsed: 00:00:59.79
查看数据信息:
15:42:47 SYS@ test1asm>select count(*) from scott.emp1;
COUNT(*)
----------
28
Elapsed: 00:00:00.11
15:43:20 SYS@ test1asm>select count(*) from scott.dept1;
COUNT(*)
----------
4
Elapsed: 00:00:00.06
15:43:29 SYS@ test1asm>
建立临时表空间:
15:46:46 SYS@ test1asm>create temporary tablespace temp;
Tablespace created.
Elapsed: 00:00:03.13
15:47:05 SYS@ test1asm>select name from v$tempfile;
NAME
--------------------------------------------------------------------------------------------------------
+DG1/test1asm/tempfile/temp.265.848850423
4、数据迁移告警日志
alert 日志:
Starting background process ASMB
ASMB started with pid=16, OS id=6507
Starting background process RBAL
RBAL started with pid=17, OS id=6511
Loaded ASM Library - Generic Linux, version 2.0.4 (KABI_V2) library for asmlib interface
Thu May 29 15:36:00 2014
SUCCESS: diskgroup DG1 was mounted
SUCCESS: diskgroup DG1 was dismounted
SUCCESS: diskgroup DG1 was mounted
SUCCESS: diskgroup DG1 was dismounted
SUCCESS: diskgroup DG1 was mounted
SUCCESS: diskgroup DG1 was dismounted
SUCCESS: diskgroup DG1 was mounted
SUCCESS: diskgroup DG1 was dismounted
Thu May 29 15:36:03 2014
The input backup piece /disk2/bak/test1/TEST1_8.bak is in compressed format.
SUCCESS: diskgroup DG1 was mounted
Thu May 29 15:36:21 2014
Full restore complete of datafile 4 to datafile copy +DG1/test1asm/datafile/users01.dbf. Elapsed time: 0:00:18
checkpoint is 256751
Thu May 29 15:36:33 2014
Full restore complete of datafile 2 to datafile copy +DG1/test1asm/datafile/undotbs01.dbf. Elapsed time: 0:00:30
checkpoint is 256751
Full restore complete of datafile 1 to datafile copy +DG1/test1asm/datafile/system01.dbf. Elapsed time: 0:00:38
checkpoint is 256751
Thu May 29 15:36:56 2014
SUCCESS: diskgroup DG1 was dismounted
Full restore complete of datafile 3 to datafile copy +DG1/test1asm/datafile/sysaux01.dbf. Elapsed time: 0:00:53
checkpoint is 256751
Thu May 29 15:36:58 2014
CREATE CONTROLFILE REUSE SET DATABASE "TEST1ASM" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( '+DG1/test1asm/onlinelog/redo01a.log' ) SIZE 100 M REUSE,
GROUP 2 ( '+DG1/test1asm/onlinelog/redo02a.log' ) SIZE 100 M REUSE,
GROUP 3 ( '+DG1/test1asm/onlinelog/redo03a.log' ) SIZE 100 M REUSE
DATAFILE
'+DG1/test1asm/datafile/system01.dbf'
CHARACTER SET ZHS16GBK
Thu May 29 15:36:58 2014
WARNING: Default Temporary Tablespace not specified in CREATE DATABASE command
Default Temporary Tablespace will be necessary for a locally managed database in future release
SUCCESS: diskgroup DG1 was mounted
SUCCESS: diskgroup DG1 was dismounted
SUCCESS: diskgroup DG1 was mounted
SUCCESS: diskgroup DG1 was dismounted
SUCCESS: diskgroup DG1 was mounted
SUCCESS: diskgroup DG1 was dismounted
Thu May 29 15:37:03 2014
SUCCESS: diskgroup DG1 was mounted
Thu May 29 15:37:03 2014
Setting recovery target incarnation to 1
Thu May 29 15:37:03 2014
Successful mount of redo thread 1, with mount id 891011546
Thu May 29 15:37:03 2014
Completed: CREATE CONTROLFILE REUSE SET DATABASE "TEST1ASM" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( '+DG1/test1asm/onlinelog/redo01a.log' ) SIZE 100 M REUSE,
GROUP 2 ( '+DG1/test1asm/onlinelog/redo02a.log' ) SIZE 100 M REUSE,
GROUP 3 ( '+DG1/test1asm/onlinelog/redo03a.log' ) SIZE 100 M REUSE
DATAFILE
'+DG1/test1asm/datafile/system01.dbf'
CHARACTER SET ZHS16GBK
Switch of datafile 2 complete to datafile copy
checkpoint is 256751
Switch of datafile 3 complete to datafile copy
checkpoint is 256751
Switch of datafile 4 complete to datafile copy
checkpoint is 256751
Thu May 29 15:37:07 2014
alter database recover datafile list clear
Completed: alter database recover datafile list clear
Thu May 29 15:37:07 2014
alter database recover datafile list
1 , 2 , 3 , 4
Completed: alter database recover datafile list
1 , 2 , 3 , 4
Thu May 29 15:37:07 2014
alter database recover if needed
start until change 259211 using backup controlfile
Media Recovery Start
ORA-279 signalled during: alter database recover if needed
start until change 259211 using backup controlfile
...
Thu May 29 15:37:07 2014
alter database recover logfile '/disk1/arch_test1/arch_1_17_797856158.log'
Thu May 29 15:37:07 2014
Media Recovery Log /disk1/arch_test1/arch_1_17_797856158.log
ORA-279 signalled during: alter database recover logfile '/disk1/arch_test1/arch_1_17_797856158.log'...
Thu May 29 15:37:10 2014
alter database recover logfile '/disk1/arch_test1/arch_1_18_797856158.log'
Thu May 29 15:37:10 2014
Media Recovery Log /disk1/arch_test1/arch_1_18_797856158.log
Thu May 29 15:37:10 2014
Incomplete Recovery applied until change 259211
Thu May 29 15:37:10 2014
Media Recovery Complete (test1asm)
Completed: alter database recover logfile '/disk1/arch_test1/arch_1_18_797856158.log'
Shutting down instance: further logons disabled
@至此,从文件系统迁移数据到ASM存储完成,通过ASM存储,可以提升数据库的I/O性能,并提高对数据的保护能力。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

GitLab でプロジェクトを移行および統合する方法 はじめに: ソフトウェア開発プロセスでは、プロジェクトの移行と統合は重要なタスクです。人気のあるコード ホスティング プラットフォームとして、GitLab はプロジェクトの移行と統合をサポートする一連の便利なツールと機能を提供します。この記事では、GitLab でのプロジェクトの移行と統合の具体的な手順を紹介し、読者の理解を深めるためにいくつかのコード例を示します。 1. プロジェクトの移行 プロジェクトの移行とは、既存のコード ベースをソース コード管理システムから GitLab に移行することです。

1. 旧端末で「自分」→「設定」→「チャット」→「チャット履歴の移行とバックアップ」→「移行」をクリックします。 2. 移行するターゲットプラットフォームデバイスを選択し、移行するチャットレコードを選択して、「開始」をクリックします。 3. 新しいデバイスで同じ WeChat アカウントでログインし、QR コードをスキャンしてチャット履歴の移行を開始します。

レガシー C++ アプリケーションをクラウドに移行する最良の方法: 再プラットフォーム化: アプリケーション コードをクラウド ネイティブ プラットフォーム (Kubernetes など) に移行し、クラウド サービスを利用します。クラウド化: コードのリファクタリングを行わずに、アプリケーションをクラウド プラットフォームにデプロイし、クラウド サービスを利用します。

古いデバイスで WeChat を開き、[チャット履歴の移行とバックアップ] を選択し、指示に従うことで、ユーザーはチャット履歴を新しいデバイスに移行できます。移行プロセスには、移行する必要があるチャットの選択、QR コードのスキャン、移行が完了するのを待つことが含まれます。

企業の IT システムでは、サーバーの移行は定期的なタスクであり、企業のサーバー利用率の向上、ビジネス ニーズの満たし、ハードウェア機器の更新などに役立ちます。 Linux システムでのサーバーの移行には特定の課題がありますが、合理的な計画と実装があれば、この作業をシンプルかつ効率的に行うことができます。以下では、Linux システムでのサーバー移行の重要な手順をいくつか紹介します。準備作業 サーバー移行を実行する前に、移行元サーバーと移行先サーバーでいくつかの準備を行う必要があります。

Apple はついに iPhone 15 および 15 Pro シリーズに USBC 接続を追加し、多くのコンピュータ アクセサリを iPhone で使用できるようにしました。コンピューター? 1: まず設定に入り、補助使用 2: タッチを選択 3: 補助タッチを選択 4: 補助タッチを有効にする 5: 開始後、iPad のトラックパッドを使用するときと同じようにドットが表示され、各ボタンの設定を設定します。ホーム画面キーや補助キーなどのさまざまな機能を使用するには、次の手順で「設定」の「補助使用」に進みます。 6: タッチを選択 7: Assistive Touch 8: デバイスを選択 9: 接続したマウスの名前を選択 10: ボタンを追加し、マウスに設定したいボタンをクリックします 11: その後
