Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Nhân bản Database từ Physical Standby với Oracle RMAN – Hướng dẫn hoàn chỉnh

Blog này mô tả cách nhân bản database từ một physical standby database.

Nhân bản database (Database duplication) sao chép database đích (target database) qua mạng đến đích phụ trợ (auxiliary destination) và sau đó tạo database nhân bản. Bạn không cần bản sao lưu RMAN và bản sao hiện có.

Nhân bản database từ physical standby được hỗ trợ từ Oracle® 11g release 2 trở đi.

Để thực hiện RMAN active duplication từ physical standby bạn cần:

  • Databases: Oracle 11g đến phiên bản mới nhất
  • Platform: Linux® 7
  • Standby DB name: PROD_DR
  • Target DB name: TEST

Mở standby database ở chế độ read-only

Dừng recovery (khôi phục) tại physical standby database và sau đó mở database ở chế độ read-only để cho phép nhân bản.

Sử dụng lệnh sau để kiểm tra trạng thái của standby database:

PROD_DR> select name, open_mode, log_mode from v$database;

Bạn nên thấy đầu ra tương tự như sau:

NAME OPEN_MODE LOG_MODE
--------- -------------------- ------------
PROD_DR MOUNTED ARCHIVELOG

Sử dụng lệnh sau để dừng recovery của standby database:

SQL> alter database recover managed standby database cancel;
Database altered.

Sau đó, mở database ở chế độ read-only:

SQL> alter database open read only;
Database altered.

Kiểm tra trạng thái database lại để thấy nó ở read-only thay vì mounted:

PROD_DR> select name, open_mode,log_mode from v$database;
NAME OPEN_MODE LOG_MODE
--------- -------------------- ------------
PROD_DR READ ONLY ARCHIVELOG

Chuẩn bị target server

Trong phần này, chúng ta sẽ sao chép toàn bộ standby Oracle home binaries sang máy chủ instance đích, chuẩn bị pfile từ database nguồn, và thực hiện thay đổi theo tên database mới.

Lưu ý: Nếu bạn đang nhân bản database đến cùng một máy chủ, bạn phải sử dụng giá trị thích hợp cho DB_NAME, DB_UNIQUE_NAME, DB_FILE_NAME_CONVERT, và LOG_FILE_NAME_CONVERT.

Đầu tiên, chuẩn bị pfile bằng các lệnh sau:

cd $ORACLE_HOME/dbs
initTEST.ora
*.control_files='+DATA/cntrl01.dbf', '+DATA/cntrl02.dbf'
*.db_create_file_dest='+DATA'
*.db_file_name_convert='+PROD_DR_DATA','+DATA'
*.db_name='TEST'
*.db_unique_name='TEST'
*.diagnostic_dest='/u01/app/diag'
*.log_file_name_convert='+PROD_DR_DATA','+DATA'

Sao chép file password standby hiện có và đổi tên để khớp với SID dùng cho database TEST, hoặc bạn có thể tạo file password mới trên server đích với cùng mật khẩu nguồn.

cd $ORACLE_HOME/dbs
cp orapwPROD_DR orapwTEST

Cấu hình static listener

Sử dụng các bước sau để cấu hình static listener cho database test:

cd $ORACLE_HOME/network/admin
cat listener.ora
ADR_BASE_LISTENER_LOCAL = /u01/app/oracle
LISTENER_LOCAL = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = TEST.ras.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
SID_LIST_LISTENER_LOCAL = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = DGNEER) (ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1) (SID_NAME = TEST)))

Khởi động listener bằng lệnh sau:

lsnrctl status listener_local

Bạn nên thấy đầu ra tương tự ví dụ sau:

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 09-JUN-2020 02:57:35
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= TEST.ras.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias listener_local
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 04-JAN-2020 04:53:15
Uptime 156 days 21 hr. 4 min. 19 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/12.1.0.2/dbhome_1/admin/diag/tnslsnr/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= TEST.ras.com)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "TEST" has 2 instance(s).
Instance "TEST", status UNKNOWN, has 1 handler(s) for this service...
Instance "TEST", status READY, has 1 handler(s) for this service...
The command completed successfully

Tạo Oracle Net alias

Tiếp theo, bạn cần tạo Oracle Net alias để truy cập standby database:

PROD_DR=
(DESCRIPTION=
  (ADDRESS=(PROTOCOL=tcp)(HOST= standbydb.ras.com)(PORT=1523))
  (CONNECT_DATA=
    (SID=PROD_DR)
  )
)

Khởi động target database

Sau đó bạn cần khởi động target database ở trạng thái nomount bằng các lệnh sau:

sqlplus "/ as sysdba"
startup nomount
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- -------------
db_name string TEST
SQL> show parameter uniq
NAME TYPE VALUE
------------------------------------ ----------- -------------
db_unique_name string TEST

Sử dụng RMAN để kiểm tra kết nối

Sau khi target database chạy ở trạng thái nomount, dùng RMAN để kiểm tra kết nối:

[oracle@TEST.ras.com dbs]$ rman target sys@PROD_DR auxiliary sys@TEST
Recovery Manager: Release 12.1.0.2.0 - Production on Thu Jun 09 03:25:22 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
target database Password: connected to target database: PROD_DR (DBID=4252464621)
auxiliary database Password: connected to auxiliary database: TEST (not mounted)

Khôi phục và nhân bản database

Sử dụng các lệnh sau để khôi phục và nhân bản standby database sang target database:

RMAN> target sys@PROD_DR auxiliary sys@TEST
RMAN> duplicate target database to TEST from active database nofilenamecheck;

Sau khi lệnh duplicate hoàn thành, bạn cần khởi động lại standby database và bật lại recovery bằng các lệnh sau:

PROD_DR> shut immediate
PROD_DR> startup mount;
PROD_DR> alter database recover managed standby database disconnect from session;

Kiểm tra trạng thái target database

Sử dụng các lệnh sau để kiểm tra trạng thái target database:

[oracle@TEST.ras.com dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 9 05:15:53 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options
SQL> select name, open_mode, log_mode , database_role from v$database;
NAME OPEN_MODE LOG_MODE DATABASE_ROLE
--------- -------------------- ------------ ----------------
TEST READ WRITE ARCHIVELOG PRIMARY

Kết luận

Trong blog này, chúng tôi đã nhân bản database từ physical standby mà không cần bất kỳ bản sao lưu vật lý nào và đã khôi phục target database lên archive mới nhất được cung cấp trong standby database.

Tham khảo

  • Performing RMAN duplicate from standby to create a new clone (Doc ID 1665784.1)

Tìm hiểu thêm về Database.

Sử dụng tab Feedback để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi. Bạn cũng có thể nhấp vào Sales Chat để trò chuyện ngay và bắt đầu cuộc hội thoại.