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

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Giới Thiệu

Phần một của series cung cấp giới thiệu về Oracle® refreshable clones, bao gồm khi và tại sao dùng chúng. Trong bài này, tôi demo cách setup, cấu hình, bảo trì, và drop refreshable clone pluggable database (PDB) trong Oracle 18c.

Điều Kiện Tiên Quyết Cho Refreshable Clone PDB

Để theo dõi demo này, hoàn thành các điều kiện tiên quyết sau:

  1. Có database link cho refreshable clone mới trỏ đến local hoặc remote container.
  2. Đặt archive_log_mode thành enabled.
  3. Dùng engineered system hoặc Enterprise Edition (EE) Oracle Cloud. Nếu không có trong cùng platform hoặc version, đặt hidden parameter _exadata_feature_on thành True cho demo này.
  4. Đặt local_undo_mode thành enabled.

Bạn có thể đặt refreshable PDB ở chế độ CLOSED hoặc OPEN READ ONLY và ở OPEN READ ONLY để query sau refresh.

Môi Trường

Cho demo này, đảm bảo môi trường tuân thủ spec sau:

  • Cài Oracle 18c và thực hiện prerequisites trên máy và database.
  • Vai trò production database:
    • CDB name: YCDB1
    • PDB Name: PURCH_PDB
  • Vai trò refreshable clone PDB:
    • CDB Name: XCDB1
    • PDB Name: PDB2_REFRO
    • Đặt PDB refresh tự động mỗi 30 phút
  • Tạo public database link dùng create_pdb trên XCDB. Link trỏ đến PURCH_PDB trên YCDB.

Thực thi các lệnh Transparent Network Substrate (TNS) sau:

purch_pdb=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = purch_pdb)))
XCDB1=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XCDB1)))
YCDB1=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = YCDB1))) 

Demo

Demo này thực hiện các hoạt động sau:

  • Thiết lập môi trường.
  • Tìm refresh mode của production database.
  • Cho cách thay đổi refresh mode của refreshable clone, bao gồm disable refresh trên refreshable clone.
  • Chuyển đổi giữa production và refreshable clone.

Thiết Lập Môi Trường Refreshable Clone

Cho môi trường refreshable clone, thực hiện các hành động sau.

Hành Động Trên YCDB1

  1. Tạo production database và mở nó.
Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs
  1. Import dữ liệu từ EXPDP dumps bằng impdp utility hoặc import HR schema vào PURCH_PDB. Ví dụ này import HR schema bằng script sau trên database:
@?/demo/schema/human_resources/hr_main.sql 

Sau khi xong, validate HR schema details, như hình:

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Hành Động Trên XCDB1

  1. Tạo database link trỏ đến production database PURCH_PDB.
  2. Tạo refreshable PDB, đặt refresh period 30 phút, và validate dữ liệu đã refresh.

Bạn có thể dùng tất cả attribute khi tạo PDB dự định dùng để tạo database ở vị trí khác. Ví dụ, để sửa vị trí datafile PDB, dùng CREATE_FILE_DEST hoặc FILE_NAME_CONVERT.

Chỉ thêm là attribute REFRESH MODE. Để đơn giản demo, tôi không thêm attribute tùy chọn.

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Tìm Refresh Mode Và Chi Tiết Production Database

Bạn có thể query bảng DBA_PDBS để kiểm tra chi tiết refreshable PDB mode, status, last refresh SCN, và chi tiết production database parent. Cho PDB2_REFRO PDB, kiểm tra output như ví dụ:

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Sau khi hoàn thành tác vụ, chuyển refreshable PDB về MOUNTED mode để continuous refresh theo lịch trình. Dùng lệnh sau. open_mode.sql dùng ở đây là query kiểm tra open_mode hiện tại của database.

Bạn có thể thấy lỗi sau nếu không đóng database instance cho refresh:

ORA-65025: Pluggable database is not closed on all instances 
Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Thay Đổi Refresh Mode Của Refreshable Clone

Bạn có thể thay đổi mode refreshable clone như sau:

  • Chuyển manual refresh sang automatic refresh.
  • Chuyển automatic refresh sang manual refresh.
  • Disable refresh từ automatic hoặc manual refresh mode.

Chuyển Manual Refresh Sang Automatic Và Ngược Lại

Lưu ý: Bạn không thể thay đổi PDB refresh mode khi logged vào PDB khác. Ví dụ, bạn không thể đổi mode XPDB khi logged vào YPDB. Nếu thử, lỗi sau xảy ra:

ORA-65118: operation affecting a pluggable database cannot be performed from another pluggable database. 
Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Trong manual refresh mode, bạn có thể refresh cloned PDB khi cần bằng lệnh:

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Disable PDB Refresh Và Chuyển Read-Only Clone Sang Read-Write Database

Bạn có thể disable refresh mode của PDB để chuyển refreshable clone sang read-write mode.

Lưu ý: Sau khi disable refresh cho pluggable database, bạn không thể enable lại. Bạn phải re-create PDB để nó là refreshable PDB. Nếu thử chuyển từ refresh mode NONE sang refresh mode, lỗi sau xảy ra:

ORA-65261: pluggable database PDB2_REFRO3 not enabled for refresh. 
Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Sau disable refresh, PDB có read-write access.

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Chuyển Đổi Từ Production Sang Refreshable Clone Và Ngược Lại

Trước Oracle 18c, bạn cần thực hiện tất cả bước switchover role, bao gồm shutdown primary và mở nó read-only.

Trong demo này, tôi làm:

  1. Tạo user C##SWITCHUSER trên container databases XCDB1 và YCDB1 dùng grant connect, sysoper.
  2. Tạo database link dblink trỏ đến container database khác. Trong YCDB1, tạo dblink XCDB1SYSOPER kết nối XCDB1. Dùng database views DBA_DB_LINKS and V$DATABASE thu thập chi tiết database sau tạo link.
  3. Mở refreshable clone database read-only.
  4. Chạy lệnh switchover.
  5. Validate database status và open mode sau switch production và refreshable clone databases.

Hành Động Trên YCDB1

Hoàn thành prerequisites 1-3 trước khi execute switchover command.

Database link details:

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Hành Động Trên XCDB1

Kiểm tra database link details và tìm database open mode dùng DBA_DB_LINKS và V$DATABASE.

Làm Chủ Oracle Refreshable Clones: Demo Bước Đi Bước Cho 18c PDBs

Sau switchover hoàn tất, source PDB gốc PURCH_PDB trở thành refreshable clone PDB. PDB này hiện ở MOUNT status, và từ bây giờ bạn chỉ có thể mở ở READ ONLY mode. Ngược lại, refreshable clone gốc PDB PDB2_REFRO giờ mở ở READ hoặc WRITE mode và hoạt động như source PDB.

Kết Luận

Bạn không nên coi refreshable clone PDB feature thay thế Data Guard từ góc độ high availability. Tuy nhiên, bạn có thể dùng refreshable clone để maintain replica database trên server khác.

Bài viết mô tả cách dùng refreshable PDBs làm replica để resume một số low-load, non-critical applications operations, dù switchover là planned hay unplanned event. Hãy nhớ cân nhắc switchover từ góc độ Recovery Time Objectives (RTOs, time to resume operations) và Recovery Point Objectives (RPOs, như minimal data loss).