Duplicate Database using Rman Oracle Database 19c

Trong bài viết này chúng ta sẽ cùng nhau thực hiện thực hành cách để Duplicate database sử dụng RMAN trong Oracle Database 19c.

Chúng ta thực hiện Duplicate online RMAN Active Duplication trực tiếp từ database đang hoạt động sang một database mới (còn có phương pháp khác nữa là restore lại từ bản backupset chúng ta sẽ thực hiện ở bài thực hành khác)

Duplicate Database using Rman Active Duplication Oracle Database 19c

Cài đặt Oracle database: https://datalinks.vn/huong-dan-cai-dat-oracle-database-19c-tren-oracle-linux/

Xem thêm Clone database sử dụng backupset ở đây: https://datalinks.vn/restore-oracle-database-to-new-server-using-rman-oracle-database-19c-clone-database/

CHI TIẾT DB:

C:\Users\DELL\Pictures\clone database.png

SRV1 – server tôi đặt là Nguồn nhân bản, đã cài đặt cấu hình DB hoàn chỉnh.

SRV2 – server tôi đặt là DB sau khi nhân bản, chỉ cải đặt Software.

Mục tiêu là nhân bản Database từ SRV1 sang SRV2, không thay đổi thông tin gì về DB name….

Ở đây tôi sử dụng IP cho 2 host lần lượt là 192.168.68.11 và 192.168.68.12, bạn có thể sử dụng bất cứ IP nào mà bạn muốn.

Trên 2 SRV: cài đặt hosts file, và hostname như sau

vi /etc/hosts

192.168.68.11 srv1.localdomain srv1
192.168.68.12 srv2.localdomain srv2

trên SRV1:

hostnamectl set-hostname srv1.localdomain

trên SRV2:

hostnamectl set-hostname srv2.localdomain

Ping kiểm tra kết nối giữa 2 host:

ping srv2 -c 5
ping srv1 -c 5

SRV1 + SRV2: Tắt firewall trên cả Source và Target (quan trọng nếu không sẽ không tnsping được) (sử dụng user root)

systemctl stop firewalld.service
systemctl disable firewalld.service

SRV1 – Source: Open database và check thông tin sơ bộ, tạo parameter file từ spfile

su oracle
cd
. .bash_profile
sqlplus / as sysdba
startup
select open_mode, name from v$database;
create pfile from spfile;

Copy password file sang SRV2 target:

exit

cd /u01/app/oracle/product/19.3.0/dbhome_1/dbs

scp orapwduodb oracle@srv2:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwduodb

Copy pfile vừa tạo ở bên trên sang SRV2 target:

scp initduodb.ora oracle@srv2:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/initduodb.ora

SRV2 – Target:

Tạo đường dẫn cần thiết, tương thích với pfile (xem các đường dẫn cần thiết trong pfile, các đường dẫn phải chính xác và đầy đủ, rất quan trọng nếu không sẽ fail khi duplicate)

su oracle
mkdir -p /u01/app/oracle/oradata/DUODB
mkdir -p /u01/app/oracle/oradata/DUODB/controlfile
mkdir -p /u01/app/oracle/fast_recovery_area/DUODB
mkdir -p /u01/app/oracle/archive/DUODB
mkdir -p /u01/app/oracle/admin/duodb/adump

Tạo biến bash_profile môi trường cho DUODB database trên Server 2

cd

vi .bash_profile

# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
ORACLE_SID=duodb
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID

Open Target database trong NOMount State với Pfile:

cd
. .bash_profile
sqlplus / as sysdba
startup nomount pfile ='/u01/app/oracle/product/19.3.0/dbhome_1/dbs/initduodb.ora'
create spfile from pfile;
shut immediate
startup nomount;
!ps -ef | grep pmon

Trên cả 2 host thực hiện tạo listener và tnsname theo thông tin bên dưới:

Ghi chú: file listener và tnsnames phải theo chuẩn các thành phần con và dấu ngoặc là lùi đầu dòng theo cấp bậc, như định dạng bên dưới nhé, nếu tất cả dòng mà cùng dồn về đầu dòng với nhau thì có thể sẽ không chạy được nên các bạn lưu ý nhé

cd /u01/app/oracle/product/19.3.0/dbhome_1/network/admin

— LISTENER server1

vi listener.ora

SID_LIST_LISTENER =
   (SID_LIST =
      (SID_DESC =
         (SID_NAME = duodb)
         (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
         (PROGRAM = extproc)
      )
   )

LISTENER =
   (DESCRIPTION_LIST =
      (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.11)(PORT = 1521))
      )
   )

 

— LISTENER server2
SID_LIST_LISTENER =
   (SID_LIST =
      (SID_DESC =
         (SID_NAME = duodb)
         (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
         (PROGRAM = extproc)
      )
   )

LISTENER =
   (DESCRIPTION_LIST =
      (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.12)(PORT = 1521))
      )
   )

— TNSNAMES trên cả 2 host giống nhau theo nội dung bên dưới

vi tnsnames.ora

duodb_source =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.11)(PORT = 1521))
      (CONNECT_DATA =
         (SERVER = DEDICATED)
         (SERVICE_NAME = duodb.localdomain)
      )
   )

duodb_clone =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.12)(PORT = 1521))
      (CONNECT_DATA =
         (out = DEDICATED)
         (SERVICE_NAME = duodb.localdomain)
      )
   )

Khởi động listener trên cả 2 Server:

lsnrctl start
lsnrctl status

Tiến hành tnsping từ SRV1 sang SRV2 và ngược lại xem thông chưa??

tnsping duodb_clone
tnsping duodb_source

[oracle@srv1 admin]$ tnsping clone

TNS Ping Utility for Linux: Version 19.0.0.0.0 – Production on 09-MAY-2024 09:03:13

Copyright (c) 1997, 2019, Oracle. All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = srv2)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = duodb)))

OK (0 msec)

SRV2 – Target: thực hiện kết nối rman đến Host 1 quan tnsname và auxiliary đến chính host 2 target sau đó thực hiện duplicate database:

rman target sys/oracle@duodb_source auxiliary sys/oracle

duplicate database to 'DUODB' from active database NOFILENAMECHECK;

[oracle@srv2 admin]$ rman target sys/oracle@duodb_source auxiliary sys/oracle

Recovery Manager: Release 19.0.0.0.0 – Production on Thu Sep 12 18:19:10 2024

Version 19.3.0.0.0

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

connected to target database: DUODB (DBID=381617332)

connected to auxiliary database: DUODB (not mounted)

RMAN> duplicate database to ‘DUODB’ from active database NOFILENAMECHECK;

Starting Duplicate Db at 12-SEP-24

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=254 device type=DISK

current log archived

contents of Memory Script:

{

sql clone “create spfile from memory”;

}

executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:

{

shutdown clone immediate;

startup clone nomount;

}

executing Memory Script

SRV2 – Target: test database sau khi duplicate

sqlplus / as sysdba

select name, open_mode from v$database;

[oracle@srv2 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 – Production on Thu May 9 10:44:22 2024

Version 19.3.0.0.0

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

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production

Version 19.3.0.0.0

SQL> select name, open_mode from v$database;

NAME OPEN_MODE

——— ——————–

DUODB READ WRITE

Duplicate Database thành công.

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA - https://www.youtube.com/@DuoDBA) tác giả của blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn muốn có người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận