Bài viết này sẽ hướng dẫn các bạn cách để Duplicate database sử dụng RMAN trong Oracle Database 19c.
Cài đặt Oracle database: https://datalinks.vn/huong-dan-cai-dat-oracle-database-19c-tren-oracle-linux/
CHI TIẾT DB:
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….
Trên 2 SRV: cài đặt hosts file, và hostname như sau
vi /etc/hosts 192.168.1.11 srv1.localdomain srv1 192.168.1.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
Source – SRV1: 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 từ SRV1:
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 sang SRV2 target từ SRV1:
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/DUODB/fast_recovery_area 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
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 Mount State:
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
SRV2 – Target: cấu hình listener (để SRV1 kết nối được với SRV2 thì thì trên SRV2 phải có listener tương ứng lắng nghe kết nối đến)
exit cd /u01/app/oracle/product/19.3.0/dbhome_1/network/admin vi listener.ora
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = srv2)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1) (SID_NAME = duodb) ) )
– Khởi động listener
lsnrctl start
SRV1 – Source: cấu hình tnsnames.ora (để SRV1 kết nối được với SRV2 thì thì trên SRV1 phải có bản ghi tnsnames.ora chỉ ra thông tin service name kết nối tương ứng)
## clone => kết nối sang srv2, dịch vụ duodb
cd /u01/app/oracle/product/19.3.0/dbhome_1/network/admin vi tnsnames.ora
clone = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = srv2)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = duodb) ) )
– Tiến hành tnsping từ SRV1 sang SRV2 xem thông chưa??
tnsping clone[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)
SRV1 – Source: thực hiện kết nối rman trên SRV1 đồng thời sang SRV2 và duplicate database.
rman target sys/oracle auxiliary sys/oracle@clone duplicate database to 'duodb' from active database NOFILENAMECHECK;
[oracle@srv1 DUODB]$ rman target sys/oracle auxiliary sys/oracle@clone
Recovery Manager: Release 19.0.0.0.0 – Production on Thu May 9 10:38:26 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 09-MAY-24
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=255 device type=DISK
current log archived
duplicating Online logs to Oracle Managed File (OMF) location
duplicating Datafiles to Oracle Managed File (OMF) location
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/DUODB/datafile/o1_mf_sysaux_0g2qc507_.dbf RECID=1 STAMP=1168512055
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/DUODB/datafile/o1_mf_undotbs1_0h2qc50e_.dbf RECID=2 STAMP=1168512055
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/DUODB/datafile/o1_mf_users_0i2qc50l_.dbf RECID=3 STAMP=1168512055
datafile 3 switched to datafile copy
input datafile copy RECID=1 STAMP=1168512055 file name=/u01/app/oracle/oradata/DUODB/datafile/o1_mf_sysaux_0g2qc507_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=2 STAMP=1168512055 file name=/u01/app/oracle/oradata/DUODB/datafile/o1_mf_undotbs1_0h2qc50e_.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=3 STAMP=1168512055 file name=/u01/app/oracle/oradata/DUODB/datafile/o1_mf_users_0i2qc50l_.dbf
contents of Memory Script:
{
Alter clone database open resetlogs;
}
executing Memory Script
database opened
Finished Duplicate Db at 09-MAY-24
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.