0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Oracle] ASM上でのデータファイルの移動(非ASMからASMもOK)

Posted at

RMANを使って、非ASMからASMにデータファイルを移動してみた

環境

Oracle Linux 8.8 (Oracle Cloud) 
Oracle Database 19c (ASM環境)
マルチテナント構成
アーカイブログモード

やったこと

Oracleデータベースで表領域を構成するデータファイルを非ASM領域からASMに移動する。
※ASMからASMでも同じ方法になります。

背景

ASMを使ったデータベースなのに、ローカルディスクに表領域(データファイル)を作成した人がいた、、

大まかな流れ

  1. RMANでデータファイルを新しい場所にコピー
  2. データファイルをオフラインにする
  3. 制御ファイル内のデータファイルパスを変更する
  4. 新しい場所のデータファイルをリカバリして使用できるようにする
  5. データファイルをオンラインにする
参考マニュアル

マニュアルは非CDB環境の手順のため、以下はCDB対応しています。

実行例

RMANでCDBに接続して操作します。(PDBに接続して行うと途中でエラーになります)

まずは状況の確認でREPORT SCHEMAコマンドを実行。
DATA表領域が想定外の場所に作成されています(★の箇所)


Recovery Manager: Release 19.0.0.0.0 - Production on Tue Jan 23 12:56:46 2024
Version 19.19.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: DB1129 (DBID=3959008139)

RMAN> report schema;

using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name DB1129_WN6_NRT

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    1050     SYSTEM               YES     +DATA/DB1129_WN6_NRT/DATAFILE/system.261.1154129965
3    1510     SYSAUX               NO      +DATA/DB1129_WN6_NRT/DATAFILE/sysaux.268.1154129949
4    140      UNDOTBS1             YES     +DATA/DB1129_WN6_NRT/DATAFILE/undotbs1.260.1154129987
5    410      PDB$SEED:SYSTEM      NO      +DATA/DB1129_WN6_NRT/F9D6EA8CCAA09630E0530905F40A5107/DATAFILE/system.264.1154129687
6    390      PDB$SEED:SYSAUX      NO      +DATA/DB1129_WN6_NRT/F9D6EA8CCAA09630E0530905F40A5107/DATAFILE/sysaux.265.1154129687
7    50       PDB$SEED:UNDOTBS1    NO      +DATA/DB1129_WN6_NRT/F9D6EA8CCAA09630E0530905F40A5107/DATAFILE/undotbs1.266.1154129687
8    420      DB1129_PDB1:SYSTEM   YES     +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/system.273.1154130319
9    430      DB1129_PDB1:SYSAUX   NO      +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/sysaux.271.1154130331
10   70       DB1129_PDB1:UNDOTBS1 YES     +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/undotbs1.270.1154130339
11   5        USERS                NO      +DATA/DB1129_WN6_NRT/DATAFILE/users.269.1154130501
12   5        DB1129_PDB1:USERS    NO      +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/users.274.1154130501
14   10       B                    NO      +DATA/DB1129_WN6_NRT/DATAFILE/b.dbf
15   10       C                    NO      +DATA/DB1129_WN6_NRT/DATAFILE/c.283.1158983669
★16   10       DB1129_PDB1:DATA     NO      /u01/app/oracle/oradata/data01.dbf ★

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    84       TEMP                 32767       +DATA/DB1129_WN6_NRT/TEMPFILE/temp.263.1154130037
2    224      PDB$SEED:TEMP        32767       +DATA/DB1129_WN6_NRT/0B3FDF6CEAAC4F7CE0638400000AF374/TEMPFILE/temp.267.1154129725
4    224      DB1129_PDB1:TEMP     4095        +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/TEMPFILE/temp.272.1154130315

backupコマンドで、データファイルをASM(新しい場所)にコピーします。

RMAN> backup as copy datafile "/u01/app/oracle/oradata/data01.dbf" format "+DATA";

Starting backup at 23-JAN-24
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=210 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00016 name=/u01/app/oracle/oradata/data01.dbf
output file name=+DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/data.282.1159016295 tag=TAG20240123T125814 RECID=6 STAMP=1159016294
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 23-JAN-24

Starting Control File and SPFILE Autobackup at 23-JAN-24
piece handle=+RECO/DB1129_WN6_NRT/AUTOBACKUP/2024_01_23/s_1159016295.271.1159016295 comment=NONE
Finished Control File and SPFILE Autobackup at 23-JAN-24

RMAN> exit
Recovery Manager complete.

SQL*PlusでPDBに接続します。以下の操作ではalter sessionでPDBに切り替えています。

[oracle@db19c oradata]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 23 13:01:43 2024
Version 19.19.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DB1129_PDB1                    READ WRITE NO
SQL> alter session set container=DB1129_PDB1;

Session altered.

SQL> alter database datafile '/u01/app/oracle/oradata/data01.dbf' offline;

Database altered.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
[oracle@db19c oradata]$

RMANでCDBに接続し、SWITCHコマンドで制御ファイル内のパスを変更します。
★の箇所に新しいデータファイルのパスが表示されるため、控えておきます。(次の手順で使用します)

[oracle@db19c ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Tue Jan 23 13:07:55 2024
Version 19.19.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: DB1129 (DBID=3959008139)

RMAN> switch datafile "/u01/app/oracle/oradata/data01.dbf" to copy;

datafile 16 switched to datafile copy  ★"+DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/data.282.1159016295"

RMAN>

RECOVERコマンドで新しいデータファイルを最新化します。

RMAN> recover datafile "+DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/data.282.1159016295";

Starting recover at 23-JAN-24
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=43 device type=DISK

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 23-JAN-24


RMAN> exit


Recovery Manager complete.
[oracle@db19c ~]$

SQL*PlusでPDBに接続し、新しいデータファイルをオンラインにします。
新しい場所に変わっていることを確認します(★の箇所)

[oracle@db19c ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 23 13:12:04 2024
Version 19.19.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DB1129_PDB1                    READ WRITE NO
SQL> alter session set container=DB1129_PDB1;

Session altered.

SQL> alter database datafile '+DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/data.282                   .1159016295' online;

Database altered.

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ----------------------------------------------------------------------------------------------------
SYSTEM                         +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/system.273.1154130319
SYSAUX                         +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/sysaux.271.1154130331
UNDOTBS1                       +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/undotbs1.270.1154130339
USERS                          +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/users.274.1154130501
★DATA                           +DATA/DB1129_WN6_NRT/0B40016CF0DE0436E0638400000AFBE7/DATAFILE/data.282.1159016295

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
[oracle@db19c ~]$

最後に、もとのデータファイルを削除します。

[oracle@db19c ~]$ cd /u01/app/oracle/oradata
[oracle@db19c oradata]$ ls
data01.dbf
[oracle@db19c oradata]$ rm data01.dbf
[oracle@db19c oradata]$ ls
[oracle@db19c oradata]$

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?