Chủ Nhật, 23 tháng 3, 2025

Migrate Oracle RAC 19C To New SAN

 

1. Tạo diskgroup mới

 ##Disk group name:
 OCR (3 LUN - 20GB/LUN - Total: 60GB)
 ARCH (1 LUN - 500GB/LUN - Total: 500GB)
 BACKUP (1 LUN - 500GB/LUN - Toal: 500GB)
 REDO1:(2 LUN - 20GB/LUN - Toal: 40GB)
 REDO2: (2 LUN - 20GB/LUN - Toal: 40GB)
 DGDATA: (3 LUN - 300GB/LUN - Toal: 900GB)

2. Tạo database nhỏ dùng file system để test CALIBRATE_IO (link)

CONN / AS SYSDBA

SET SERVEROUTPUT ON
DECLARE
  l_latency  PLS_INTEGER;
  l_iops     PLS_INTEGER;
  l_mbps     PLS_INTEGER;
BEGIN
   DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 1, 
                                       max_latency        => 20,
                                       max_iops           => l_iops,
                                       max_mbps           => l_mbps,
                                       actual_latency     => l_latency);
 
  DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
  DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
  DBMS_OUTPUT.put_line('Latency  = ' || l_latency);
END;
/

Max IOPS = 95
Max MBPS = 449
Latency  = 20

PL/SQL procedure successfully completed.

SQL>

3. Migrate datafile oracle database

3.1 CREATE NEW DISKGROUP (ONLINE)

3.2 BACKUP AS COPY DATABASE (ONLINE)

rman target /
## set PARALLEL để tăng tốc độ backup
CONFIGURE DEVICE TYPE DISK PARALLELISM 20 BACKUP TYPE TO BACKUPSET;
backup as copy database format '+DGDATA';

3.3 SWITCH DATABASE TO COPY (OFFLINE)

srvctl stop database -d coredb
srvctl start instance -d coredb -i coredb1 -o mount
rman target /
switch database to copy;
recover database;
srvctl stop instance -d coredb -i coredb1
srvctl start database -d coredb

4. Migrate TEMP FILE

4.1 Check total size temp files old

SELECT tablespace_name, sum(round((bytes / 1024 / 1024), 2)) AS "Size (MB)"
FROM dba_temp_files group by tablespace_name;

4.2 Check temp files size

set line 200
col name for a60
col status for a20
select name, bytes/1024/1024/1024 MB,status from v$tempfile;

4.3 Create the new temp files


ALTER TABLESPACE TEMP ADD TEMPFILE '+ARCH' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 100M;

4.4 Make sure there is no session is using the temp tablespace

SELECT USERNAME, SESSION_NUM, SESSION_ADDR FROM V$SORT_USAGE;

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SERIAL#=SESSION_NUM;
Or
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SADDR=SESSION_ADDR;

4.5 Change the status of the temp files to Offline.

alter database tempfile '<PATH>/XXX_PF_TMP_001.dbf' OFFLINE;
alter database tempfile '<PATH>/XXX_PF_TMP_002.dbf' OFFLINE;

4.6 Drop the old temp files.

ALTER DATABASE TEMPFILE '<PATH>/XXX_PF_TMP_001.dbf' DROP;

ALTER DATABASE TEMPFILE '<PATH>/XXX_PF_TMP_002.dbf' DROP;

Verify the info of the new temp files.

SQL> select * from dba_temp_files;
Or
SQL> select * from V$TEMPFILE;

5. Migrate online redo logfile (online)

Tạo thêm các redo log group nằm trên diskgroup mới

Thực hiện drop các redo log group cũ đang inactive
ALTER DATABASE ADD LOGFILE THREAD 1 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 1 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 1 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 2 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 2 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 2 ('+REDO1', '+REDO2') SIZE 200M;

6. Migrate spfile (offline)

Note: alter system set archive_log_dest_1='LOCATION=+ARCH';
. oraenv
coredb
sqlplus / as sysdba
create pfile='/tmp/init/init_coredb.ora' from spfile;
create spfile='+DGDATA' from pfile='/tmp/init/init_coredb.ora';
##Check lại location spfile
$srvctl config database -d coredb

7. Migrate controlfile (offline)

sqlplus / as sysdba 

alter system set controlfile ='+new_diskgroup/ctr1.ora',''+new_diskgroup/ctr2.ora' scope = spfile sid='*';

srvctl stop database -d coredb

Vào asm

copy control file từ đường dẫn cũng sang đường dẫn mới.

srvctl start database -d coredb

8. Migrate OCR (online)

#$ORACLE_HOME/bin/ocrcheck
#$crsctl query css votedisk
#$ORACLE_HOME/bin/bin/ocrconfig -add +OCR //(+OCR diskgroup mới)
#$ORACLE_HOME/bin/bin/ocrconfig -delete +ASM //(+ASM diskgroup cũ)
#$ORACLE_HOME/bin/crsctl replace votedisk +OCR //(+OCR diskgroup mới)
#$ORACLE_HOME/bin/crsctl query css votedisk // check vote disk
#$ORACLE_HOME/bin/ocrcheck

==MODIFY THE BACKUP LOCATION FOR THE OCR
ocrconfig -showbackup
ocrconfig -backuploc <new location>

9. Migrate asm spfile (offline)

oraenv
+ASM1
sqlplus / as sysasm
create pfile='/tmp/initasm.ora' from spfile;
create spfile='+OCR' from pfile='/tmp/initasm.ora';
$ORACLE_HOME/bin/gpnptool get

10. Move password file asm

 Login as user grid
$srvctl config asm


https://www.oracledbworld.com/oracle-rac/how-to-migrate-ocr-vote-file-asm-spfile-and-asm-password-file-to-new-diskgroup-in-oracle-19c/

 
$asmcmd pwmove --asm  -f +ASM/orapwASM +OCR/orapwASM
## Change location backup of password file asm
Login as user grid
$ srvctl modify asm -pwfilebackup  +OCR/orapwASM_backup


==STOP VÀ START CRS TRÊN ALL NODES
#crsctl stop crs -f
#crsctl start crs -wait
#crsctl status res -t 

 11. ROLLBACK (SỐ NGÀY ROLLBACK PHỤ THUỘC VÀO SỐ NGÀY ARCHIVE ĐƯỢC GIỮ)

srvctl stop database -d coredb
srvctl start instance -d coredb -i coredb1 -o mount
rman target /
switch database to copy;
recover database;
srvctl stop instance -d coredb -i coredb1
srvctl start database -d coredb

 

 

 

 

 

 

 

Không có nhận xét nào:

Đăng nhận xét