Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

โคลนฐานข้อมูลจาก Physical Standby ด้วย Oracle RMAN - คู่มือฉบับสมบูรณ์

บล็อกนี้อธิบายวิธีโคลนฐานข้อมูลจาก Physical Standby Database

การโคลนฐานข้อมูล (Database Duplication) คัดลอกฐานข้อมูลเป้าหมาย (Target Database) ผ่านเครือข่ายไปยังปลายทางช่วย (Auxiliary Destination) จากนั้นสร้างฐานข้อมูลที่โคลนแล้ว คุณไม่ต้องการ RMAN Backups และ Copies ที่มีอยู่ก่อนหน้า

การโคลนฐานข้อมูลจาก Physical Standby รองรับตั้งแต่ Oracle® 11g Release 2 เป็นต้นไป

เพื่อดำเนินการ RMAN Active Duplication จาก Physical Standby คุณต้องมี:

  • Databases: Oracle 11g ถึงเวอร์ชันล่าสุด
  • Platform: Linux® 7
  • Standby DB name: PROD_DR
  • Target DB name: TEST

เปิด Standby Database ในโหมด Read-Only

หยุด Recovery ที่ Physical Standby Database จากนั้นเปิดฐานข้อมูลในโหมด Read-Only เพื่ออนุญาตการโคลน

ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะของ Standby Database:

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

คุณควรเห็นเอาต์พุตคล้ายกับนี้:

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

ใช้คำสั่งต่อไปนี้เพื่อหยุด Recovery ของ Standby Database:

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

จากนั้น เปิดฐานข้อมูลในโหมด Read-Only:

SQL> alter database open read only;
Database altered.

ตรวจสอบสถานะฐานข้อมูลอีกครั้งเพื่อดูว่ามันอยู่ใน Read-Only แทน Mounted:

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

เตรียม Target Server

ในส่วนนี้ เราจะคัดลอก Standby Oracle Home Binaries ทั้งหมดไปยังเซิร์ฟเวอร์อินสแตนซ์เป้าหมาย เตรียม pfile จากฐานข้อมูลแหล่งที่มา และทำการเปลี่ยนแปลงตามชื่อฐานข้อมูลใหม่

หมายเหตุ: หากคุณโคลนฐานข้อมูลไปยังเซิร์ฟเวอร์เดียวกัน คุณต้องใช้ค่าที่เหมาะสมสำหรับ DB_NAME, DB_UNIQUE_NAME, DB_FILE_NAME_CONVERT, และ LOG_FILE_NAME_CONVERT

ขั้นแรก เตรียม pfile โดยใช้คำสั่งต่อไปนี้:

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'

คัดลอก Password File ของ Standby ที่มีอยู่ และเปลี่ยนชื่อให้ตรงกับ SID ที่ใช้สำหรับฐานข้อมูล TEST หรือคุณสามารถสร้าง Password File ใหม่บนเซิร์ฟเวอร์เป้าหมายด้วยรหัสผ่านแหล่งที่มาเดียวกัน

cd $ORACLE_HOME/dbs
cp orapwPROD_DR orapwTEST

ตั้งค่า Static Listener

ใช้ขั้นตอนต่อไปนี้เพื่อตั้งค่า Static Listener สำหรับฐานข้อมูล 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)))

เริ่ม Listener โดยใช้คำสั่งต่อไปนี้:

lsnrctl status listener_local

คุณควรเห็นเอาต์พุตคล้ายตัวอย่างต่อไปนี้:

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=(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

สร้าง Oracle Net Alias

ต่อไป คุณต้องสร้าง Oracle Net Alias เพื่อเข้าถึง Standby Database:

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

เริ่ม Target Database

จากนั้น คุณต้องเริ่ม Target Database ในสถานะ nomount โดยใช้คำสั่งต่อไปนี้:

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

ใช้ RMAN ทดสอบการเชื่อมต่อ

หลังจาก Target Database ทำงานในสถานะ nomount แล้ว ใช้ RMAN ทดสอบการเชื่อมต่อ:

[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)

กู้คืนและโคลนฐานข้อมูล (Restore and Duplicate)

ใช้คำสั่งต่อไปนี้เพื่อกู้คืนและโคลน Standby Database ไปยัง Target Database:

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

หลังจากคำสั่ง Duplicate เสร็จสิ้น คุณต้องรีสตาร์ท Standby Database และเปิดใช้งาน Recovery อีกครั้ง โดยใช้คำสั่งต่อไปนี้:

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

ตรวจสอบสถานะ Target Database

ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะของ 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

สรุป

ในบล็อกนี้ เราโคลนฐานข้อมูลจาก Physical Standby โดยไม่ต้องทำ Physical Backups ใดๆ และเรากู้คืน Target Database ไปยัง Archive ล่าสุดที่จัดหาใน Standby Database

อ้างอิง (Reference)

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

เรียนรู้เพิ่มเติมเกี่ยวกับ Databases

ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถคลิก Sales Chat เพื่อแชททันทีและเริ่มการสนทนา