Thứ Tư, 18 tháng 8, 2021

Cài đặt, cấu hình, quản trị Oracle Data Guard Physical Standby trong Oracle Database 11.2, 12c, 19c từ A-Z

Data Guard là  giải pháp cơ sở dữ liệu dự phòng của Oracle, được sử dụng trong trường hợp thảm họa (disaster recovery) và có tính khả dụng cao
  • Môi trường
  • Thiết lập Primary Server
    • Logging
    • Tham số khởi tạo
    • Cấu hình Service 
    • Backup Primary Database
    • Tạo Standby Controlfile và PFILE
  • Thiết lập Standby Server bằng giải pháp Backup/Recovery
    • Copy Files
    • Start Listener
    • Restore Backup
    • Tạo Redo Logs
  • Thiết lập Standby Server bằng giải pháp DUPLICATE
    • Copy Files
    • Start Listener
    • Tạo Standby Redo Logs trên Primary Server
    • Tạo  Standby sử dụng DUPLICATE
  • Bật tiến trình Apply
  • Kiểm tra quá trình chuyển redo log
  • Protection Mode
  • Database Switchover
  • Failover
  • Flashback Database
  • Read-Only Standby và Active Data Guard
  • Snapshot Standby

MÔI TRƯỜNG

  • Bạn có hai máy chủ (vật lý hoặc máy ảo) với hệ điều hành và Oracle được cài đặt . Trong trường hợp này, tôi đã sử dụng Oracle Linux 5.6 và Cơ sở dữ liệu Oracle 11.2.0.2.; cơ sở dữ liệu 12c/19c vẫn dùng cấu hình này được.
  • Máy chủ chính (primary server: 192.168.1.10) có một instance đang chạy.
  • Máy chủ dự phòng (standby server 192.168.1.11) chỉ cài đặt phần mềm Oracle Database

Thiết lập Primary Server 

Logging

Kiểm tra xem cơ sở dữ liệu chính có ở chế độ archivelog.

SELECT log_mode FROM v$database;

LOG_MODE
------------
NOARCHIVELOG

SQL>

Nếu DB ở chế độ noarchivelog, chuyển sang chế độ archivelog.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

Đã bật forced loggin bằng cách ra lệnh sau.

ALTER DATABASE FORCE LOGGING;

Tham số khởi tạo

Kiểm tra  các thông số DB_NAME và DB_UNIQUE_NAME. Trong trường hợp này, cả hai đều được đặt thành "DB11G" trên cơ sở dữ liệu chính.

SQL> show parameter db_name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_name 			     string	 DB11G

SQL> show parameter db_unique_name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_unique_name			     string	 DB11G

SQL>

 DB_NAME của cơ sở dữ liệu dự phòng sẽ giống với cơ sở dữ liệu chính, nhưng nó phải khác giá trị với DB_UNIQUE_NAME Các giá trị DB_UNIQUE_NAME của cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng được sử dụng trong thiết lập DG_CONFIG của tham số LOG_ARCHIVE_CONFIG. Đối với ví dụ này, cơ sở dữ liệu dự phòng sẽ có giá trị "DB11G_STBY".

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB11G,DB11G_STBY)';

Đặt tham log_archive_dest_2 trỏ vào standby database. Lưu ý SERVICE và DB_UNIQUE_NAME đối với standby database

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

Các tham số LOG_ARCHIVE_FORMATvà LOG_ARCHIVE_MAX_PROCESSES phải được đặt với các giá trị phù hợp và REMOTE_LOGIN_PASSWORDFILE phải được đặt thành EXCLUSIVE.

ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

Ngoài cài đặt trước đó, bạn nên đảm bảo trên primary đã sẵn sàng để chuyển đổi vai trò sang thành standby. Để nó hoạt động bình thường, chúng ta cần thiết lập các thông số sau. Điều chỉnh các thông số *_CONVERT để chuyển đường dẫn datafile, log file giữa primary và standby.

--ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DB11G_STBY','DB11G' SCOPE=SPFILE;
--ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='DB11G_STBY','DB11G'  SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

Có thể cần khởi đọng lại cơ sở dữ liệu để các tham số có hiệu lực.

Cấu hình Service 

Cấu hình "$ORACLE_HOME/network/admin/tnsnames.ora" trên cả hai máy chủ active và standby:

DB11G =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DB11G)
    )
  )

DB11G_STBY =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
) (CONNECT_DATA = (SERVICE_NAME = DB11G.) ) )

Sao lưu cơ sở dữ liệu chính

(Nếu duplicate thì không cần backup)

$ rman target=/

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

Tạo Standby Controlfile và PFILE

Tạo control file cho standby database trên Primary:

ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/db11g_stby.ctl';

Tạo parameter file cho standby database.

CREATE PFILE='/tmp/initDB11G_stby.ora' FROM SPFILE;

Sửa đổi  PFILE ở đường dẫn /tmp/initDB11G_stby.ora cho phù hợp với  standby database:

*.db_unique_name='DB11G_STBY'
*.fal_server='DB11G'
*.log_archive_dest_2='SERVICE=db11g ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G'

Thiết lập Standby Server  bằng Backup/Recovery

Copy Files

Tạo các thư mục cần thiết trên máy chủ dự phòng.

$ mkdir -p /u01/app/oracle/oradata/DB11G
$ mkdir -p /u01/app/oracle/fast_recovery_area/DB11G
$ mkdir -p /u01/app/oracle/admin/DB11G/adump

Sao chép các tệp từ máy chủ chính sang máy chủ dự phòng.

 # Primary_Copy db11g_stby.ctl sang máy chủ dự phòng
$ scp /tmp/db11g_stby.ctl oracle@192.168.1.11:/u01/app/oracle/oradata/DB11G/control01.ctl

# Stadnby_Nhân bản dự phòng thêm 1 control file ở máy chủ dự phòng
$ cp /u01/app/oracle/oradata/DB11G/control01.ctl /u01/app/oracle/fast_recovery_area/DB11G/control02.ctl

 # Primary_Copy backup pieces và backup archivelogs sang máy chủ dự phòng
$ scp -r /u01/app/oracle/fast_recovery_area/DB11G/archivelog oracle@192.168.1.11:/u01/app/oracle/fast_recovery_area/DB11G
$ scp -r /u01/app/oracle/fast_recovery_area/DB11G/backupset oracle@192.168.1.11:/u01/app/oracle/fast_recovery_area/DB11G

 # Primary_Copy Parameter file sang máy chủ dự phòng
$ scp /tmp/initDB11G_stby.ora oracle@192.168.1.11:/tmp/initDB11G_stby.ora

 # Primary_Copy  password file sang máy chủ dự phòng
$ scp $ORACLE_HOME/dbs/orapwDB11G oracle@192.168.1.11:$ORACLE_HOME/dbs

Bật Listener

$ lsnrctl start

Restore Backup

Tạo SPFILE từ PFILE đã chỉnh sửa từ trước:

$ export ORACLE_SID=DB11G
$ sqlplus / as sysdba

SQL> CREATE SPFILE FROM PFILE='/tmp/initDB11G_stby.ora';

Restore từ bản backup:

$ export ORACLE_SID=DB11G
$ rman target=/

RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;

Tạo Redo Logs

Tạo online redo logs ở CSDL dự phòng, nên tạo giống y hệ so với Primary về số lượng, size:

ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo01.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo02.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo03.log') SIZE 50M;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

Ngoài online redo logs, bạn nên tạo standby redo logs cho cả standby và  primary database (dùng trong trường hợp switchover). Standby redo logs nên lớn hơn online redo log ít nhất là 3 và thêm 1 group so với online redo logs. Trong trường hợp này, standby redo logs được tạo trên cả primary và standby.

ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 ('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 ('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 ('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 ('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 50M;

Khi xong, chúng ta có thể bật tiến trình apply, đơn giản phải không anh/em :)

Thiết lập Standby Server bằng DUPLICATE

Copy Files

Tạo các thư mục cần thiết trên máy chủ dự phòng: 

$ mkdir -p /u01/app/oracle/oradata/DB11G
$ mkdir -p /u01/app/oracle/fast_recovery_area/DB11G
$ mkdir -p /u01/app/oracle/admin/DB11G/adump

Copy pfile, controlfile từ primary sang standby:

$ # Primary_Copy controlfile sang standby
$ scp /tmp/db11g_stby.ctl oracle@192.168.1.11:/u01/app/oracle/oradata/DB11G/control01.ctl
$ cp /u01/app/oracle/oradata/DB11G/control01.ctl oracle@192.168.1.11:/u01/app/oracle/fast_recovery_area/DB11G/control02.ctl

$ # Primary_Copy Parameter file sang standby
$ scp /tmp/initDB11G_stby.ora oracle@192.168.1.11:/tmp/initDB11G_stby.ora

$ # Primary_Copy password file sang standby
$ scp $ORACLE_HOME/dbs/orapwDB11G oracle@192.168.1.11:$ORACLE_HOME/dbs

Bật Listener


Khi dùng duplicate, stanby yêu cầu sử dụng static listener với  file cấu hình
 "listener.ora":

  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = DB11G)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = DB11G)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
) (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ADR_BASE_LISTENER = /u01/app/oracle

Bật listener:

$ lsnrctl start

Tạo Standby Redo Logs trên Primary Server

Lệnh DUPLICATE sẽ tự động tạo standby redo logs trên standby. Để đảm bảo an toàn khi switchover cho   primary database, chúng ta phải tạo standby redo logs trên primary:

ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 50M;

Tạo Standby sử dụng giải pháp DUPLICATE

Bật auxillary instance trên Standby:

$ export ORACLE_SID=DB11G
$ sqlplus / as sysdba

SQL> STARTUP NOMOUNT PFILE='/tmp/initDB11G_stby.ora';

Trên Standby, kết nối đến RMAN, đưa kết nối đầy đủ cho cả instance TARGET và AUXILLARY (không sử dụng xác thực OS):

$ rman TARGET sys/password@DB11G AUXILIARY sys/password@DB11G_STBY
(Hoặc tách ra thành 2 câu:
$ rman TARGET sys/password@DB11G
RMAN> connect AUXILIARY sys/password@DB11G_STBY)

Trên Standby, thực hiện DUPLICATE:

DUPLICATE TARGET DATABASE
  FOR STANDBY
  FROM ACTIVE DATABASE
  DORECOVER
  SPFILE
    SET db_unique_name='DB11G_STBY' COMMENT 'Is standby'
    SET LOG_ARCHIVE_DEST_2='SERVICE=db11g ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G'
    SET FAL_SERVER='DB11G' COMMENT 'Is primary'
  NOFILENAMECHECK;
Note: Câu duplicate trên vẫn có thể thực hiện được trên Primary, chú ý backup full trước khi thực hiện.

Giải thích:
  • FOR STANDBY: Báo hiệu lệnh DUPLICATE này nhân bản cho standby database do đó DBID phải giữ nguyên
  • FROM ACTIVE DATABASE: Lấy trực tiếp từ datafile sau đó recover, mà không sử dụng bản backup hay không phải backup gì cả. 
  • DORECOVER: Thực hiện recovery để đưa standby về 1 thời điểm gần nhất
  • SPFILE: Cho phép chúng ta đặt lại các giá trị trong spfile khi được copy từ primary sang standby. 
  • NOFILENAMECHECK: Vị trị các file không được kiểm tra 

Khi lệnh DUPLICATE trên hoàn tất, chúng ta có thể Bật  tiến trình apply để đồng bộ ở máy chủ dự phòng.

Bật/tắt tiến trình Apply

Bật tiến trình apply trên máy chủ dự phòng:

# Foreground redo apply. Phiên không khôi phục cho đến khi chúng ta hủy
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;

# Background redo apply. Kiểm soát được trả lại cho phiên khi tiến trình apply được bật
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Khi bạn cấu hình standby redo logs, bạn có thể bật apply theo thời gian thực (real time) bằng lệnh sau

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;

Nếu bạn cần tắt tiến trình apply, hãy sử dụng lệnh sau.

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Nếu muốn, bạn có thể đặt thời gian trễ giữa sự xuất hiện của archived redo log và các sequence được apply máy chủ dự phòng bằng cách sử dụng các lệnh sau.

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DELAY 30 DISCONNECT FROM SESSION;

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY DISCONNECT FROM SESSION;

Kiểm tra quá trình chuyển redo log 

Trên máy chủ chính, hãy kiểm tra archived redo log (sequence#) mới nhất và ép log switch thủ công.

PRIMAYRY:

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';


--Kiểm tra sequence# mới nhất
SELECT sequence#, first_time, next_time
FROM   v$archived_log
ORDER BY sequence#;

-- Ép log switch thủ công.
ALTER SYSTEM SWITCH LOGFILE;

Kiểm tra archived redo log mới đã đến standby server và được apply chưa

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

--Kiểm tra sequence# mới nhất
SELECT sequence#, first_time, next_time, applied
FROM   v$archived_log
ORDER BY sequence#;

Protection Mode

Có ba chế độ bảo vệ cho cơ sở dữ liệu chính:

  • Maximum Availability (khả dụng tối đa): Các giao dịch trên primary sẽ không commit cho đến khi thông tin redo đã được ghi vào online redo log trên primary và của ít nhất một vị trí standby redo log trên standby. Nếu không có standby nào, nó sẽ hoạt động giống như chế độ hiệu suất tối đa cho đến khi có stadnby.
  • Maximum Performance (hiệu suất tối đa): Các giao dịch trên primary sẽ commit  ngay sau khi thông tin redo đã được ghi vào online redo log trên primary. Việc chuyển thông tin redo đến standby là không đồng bộ (asynchronous), vì vậy nó không ảnh hưởng đến hiệu suất của primary. Đây là chế độ mặc định.
  • Maximum Protection (bảo vệ tối đa): Các giao dịch primary không commit cho đến khi thông tin redo đã được ghi vào online redo log trên primary và standby redo log của ít nhất 1 standby. Nếu không có vị trí standby nào phù hợp, primary sẽ tắt.

Theo mặc định, đối với cơ sở dữ liệu standby mới được tạo, cơ sở dữ liệu primary ở chế độ hiệu suất tối đa.

SELECT protection_mode FROM v$database;

PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE

SQL>

Bạn có thể được chuyển đổi giữa các chế độ bảo vệ bằng các lệnh sau, lưu ý thay đổi cả LOG_ARCHIVE_DEST_2 trên primary:

-- Maximum Availability.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

-- Maximum Performance.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

-- Maximum Protection.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
ALTER DATABASE OPEN;

Database Switchover

Cơ sở dữ liệu có thể  chuyển đổi vai trò từ primary thành standby và ngược lại. Các vai trò này có thể được thay đổi trong thời gian chạy mà không làm mất dữ liệu. Quá trình này được gọi là Switchover và có thể được thực hiện bằng cách sử dụng các câu lệnh sau.

-- Chuyển đổi cơ sở dữ liệu primary sang chế độ standby
CONNECT / AS SYSDBA ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY; -- Tắt primary database SHUTDOWN IMMEDIATE; -- Mount primary database cũ bây giờ thành standby database STARTUP NOMOUNT; ALTER DATABASE MOUNT STANDBY DATABASE; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Trên cơ sở dữ liệu standby ban đầu, hãy thực hiện các lệnh sau.

-- Chuyển đổi cơ sở dữ liệu stanby thành cơ sở dữ liệu primary
CONNECT / AS SYSDBA
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

-- Tắt standby database
SHUTDOWN IMMEDIATE;

-- Open standby database cũ, bây giờ thành primary
STARTUP;

Khi hoàn tất, hãy kiểm tra việc chuyển log như ở trên đã ví dụ trên. Sau đó có thể switch ngược trở lại ban đầu, gọi là quá trình switchback.

Chú ý: Với DB RAC chúng ta tắt 1 node đi trước khi thực hiện, sau khi switchover thành công, chúng ta mới bật đủ 2 node trên Primary và Standby

Failover

Nếu cơ sở dữ liệu chính bị lỗi không khắc được, cơ sở dữ liệu dự phòng có thể được kích hoạt như một cơ sở dữ liệu chính bằng cách sử dụng các câu lệnh sau.

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
ALTER DATABASE ACTIVATE STANDBY DATABASE;

Vì cơ sở dữ liệu dự phòng bây giờ là cơ sở dữ liệu chính nên nó phải được sao lưu (backup) ngay lập tức để đảm bảo an toàn (thựch hiện ngày RMAN> backup database plus archivelog;)

Cơ sở dữ liệu chính ban đầu hiện có thể được định cấu hình thành standby. Nếu Flashback được bật trên cơ sở dữ liệu chính, thì điều này có thể được thực hiện tương đối dễ dàng ( hiển thị ở đây ). Nếu không, thì phải dùng bản backup như hướng dẫn sau 

Flashback Database

Như tôi đề cập trong phần trước, nhưng bạn nên chú ý đến Cơ sở dữ liệu Flashback một lần nữa. Mặc dù switchover/switchback  an toàn cho cả cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng, chuyển đổi dự phòng làm cho cơ sở dữ liệu chính ban đầu failover để chuyển đổi sang cơ sở dữ liệu dự phòng. Nếu flashback database không được bật, cơ sở dữ liệu chính ban đầu phải bị lỗi và chúng ta phải tạo lại cơ sở dữ liệu dự phòng.

Một giải pháp thay thế là kích hoạt flashback database trên cơ sở dữ liệu chính (ở chế độ standby nếu muốn) để trong trường hợp failover, cơ sở dữ liệu chính có thể được trở lại thời điểm trước khi failover và nhanh chóng chuyển đổi thành cơ sở dữ liệu dự phòng. Quá trình đó được hiển thị ở đây .

Read-Only Standby và Active Data Guard

Các phiên bản 10g trở về trước Sau khi cơ sở dữ liệu dự phòng được cấu hình, nó có thể được mở ở chế độ chỉ đọc (OPEN READ ONLY) để phục vụ các báo cáo giảm tải trên máy chủ chính. Khi mở ở chế độ chỉ đọc, quá trình chuyển archived redo log vẫn bình thường, nhưng quá trình apply bị dừng, do đó, cơ sở dữ liệu dự phòng ngày càng bị LAG nhiều cho đến khi tiến trình recovery được bật trở lại.

Để chuyển cơ sở dữ liệu chờ sang chế độ chỉ đọc, hãy làm như sau.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;

Để tiếp tục khôi phục được quản lý, hãy làm như sau.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Từ phiên bản 11g, Oracle giới thiệu tính năng Active Data Guard. Điều này cho phép cơ sở dữ liệu standby OPEN READ ONLY nhưng vẫn quá tình apply thông tin redo vẫn hoạt động bình thường. Điều này có nghĩa là vẫn đáp ứng được các nghiệp vụ báo cáo để giảm tải cho hệ thống chính và quá trình apply thông tin redo vẫn hoạtd dộng realtime:

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Snapshot Standby

Được giới thiệu trong 11g, Snapshot Standby cho phép mở cơ sở dữ liệu standby ở chế độ đọc-ghi (READ WRITE) để phục vụ kiểm thử ứng dụng. Khi chuyển trở lại chế độ standby, tất cả các thay đổi được thực hiện trong khi ở chế độ đọc-ghi sẽ bị mất. Điều này được bằng cách sử dụng flashback database, nhưng cơ sở dữ liệu dự phòng không cần phải bật flashback database một cách rõ ràng để tận dụng tính năng này, cơ chế hoạt động của nó giống hệ nhau.

Nếu bạn đang sử dụng RAC, hãy tắt tất cả trừ một trong các instance RAC. Đảm bảo phiên bản ở chế độ MOUNT.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

Đảm bảo rằng managed recover đã bị vô hiệu hóa.

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Chuyển đổi standby sang snapshot standby. Ví dụ sau truy vấn V$DATABASE để hiển thị rằng flashback database không được kích hoạt trước hoạt động chuyển đổi.

SELECT flashback_on FROM v$database;

FLASHBACK_ON
------------------
NO

ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
ALTER DATABASE OPEN;
SELECT flashback_on FROM v$database;

FLASHBACK_ON
------------------
RESTORE POINT ONLY

SQL>

Bây giờ bạn có thể standby có thể đọc-ghi được rồi

Để chuyển đổi nó trở lại physical standby, tất cả các thay đổi đã thực hiện bị mất kể từ khi chuyển đổi sang snapshot standby, hãy thực hiện các lệnh sau.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
SELECT flashback_on FROM v$database;

FLASHBACK_ON
------------------
NO

SQL>

Standby được bật và quá trình chuyển archivelog được tiếp tục. Lưu ý rằng flashback không được bật.

Hy vọng hữu ích cho bạn.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w

=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Cài đặt, cấu hình, quản trị Oracle Data Guard Physical Standby trong Oracle Database 11.2, 12c, 19c  từ A-Z, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle dataguard, oracle goldengate, oracle weblogic, oracle exadata, hoc solaris, hoc linux, hoc aix

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master