Thứ Sáu, 3 tháng 7, 2026

Không bật được standby readonly

Mục đích: Xử lý lỗi Không bật được standby readonly

1.VẤN ĐỀ

SQL> ALTER DATABASE OPEN READ ONLY;

ALTER DATABASE OPEN READ ONLY

*

ERROR at line 1:

ORA-10456: cannot open standby database; media recovery session may be in progress

 

SQL> show parameter pfile;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                               string      /u01/app/oracle/product/19c/db

                                                 home_1/dbs/spfileapidldc.ora

SQL> create pfile='/home/oracle/binhtv/1' from spfile;

create pfile='/home/oracle/binhtv/1' from spfile

 

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

 

Session altered.

 

SQL> set linesize 150;

SQL> SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME in ('apply lag','transport lag');

 

NAME                             VALUE

-------------------------------- ----------------------------------------------------------------

transport lag                    +00 00:00:00

apply lag                        +00 00:00:00

 

SQL> SELECT PROCESS, CLIENT_PROCESS, THREAD#, SEQUENCE#,STATUS, BLOCK#, BLOCKS FROM  Gv$MANAGED_STANDBY order by PROCESS, thread#, SEQUENCE#;

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              1       5397 CLOSING          118784         30

ARCH      ARCH              1       5398 CLOSING               1          2

DGRD      N/A               0          0 ALLOCATED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

MRP0      N/A               1       5399 APPLYING_LOG      98031    4194304

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       UNKNOWN           0          0 IDLE                  0          0

RFS       Archival          1          0 IDLE                  0          0

RFS       LGWR              1       5399 IDLE              97257        775

 

39 rows selected.

 

2.NGUYÊN NHÂN

Các thành phần chưa được đồng bộ đầy đủ (control file, redo log file, datafile)

 

3.GIẢI PHÁP

Cách fix đúng

1. Kiểm tra trạng thái hiện tại

Trên Standby:

 

SELECT database_role, open_mode

FROM v$database;

 

SELECT process, status, thread#, sequence#

FROM v$managed_standby

ORDER BY process;

Nếu thấy MRP0 đang chạy thì phải cancel recovery trước.

 

2. Dừng MRP / Media Recovery

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Chờ vài giây, kiểm tra lại:

 

SELECT process, status, thread#, sequence#

FROM v$managed_standby

ORDER BY process;

Không còn MRP0 là được.

 

3. Open Standby Read Only

 

ALTER DATABASE OPEN READ ONLY;

Kiểm tra:

 

SELECT database_role, open_mode

FROM v$database;

Kết quả mong muốn:

 

PHYSICAL STANDBY   READ ONLY

 

4. Nếu muốn vừa open vừa apply realtime — Active Data Guard

Nếu anh có license Active Data Guard, sau khi open read only thì chạy:

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Kiểm tra:

 

SELECT database_role, open_mode

FROM v$database;

Kết quả mong muốn:

 

PHYSICAL STANDBY   READ ONLY WITH APPLY

 

Nếu vẫn lỗi, làm theo cách chắc chắn hơn

 

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

 

ALTER DATABASE OPEN READ ONLY;

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 

Với RAC Standby 2 node

Nên thao tác gọn như sau:

Trên node đang chạy MRP

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Stop instance còn lại nếu cần

 

srvctl stop instance -d mymobi -i <instance_name>

Open database read only

 

ALTER DATABASE OPEN READ ONLY;

Start lại apply

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 

Lưu ý quan trọng

Nếu không có Active Data Guard license, anh chỉ có 2 lựa chọn:

 

1. MOUNT + APPLY

hoặc

2. OPEN READ ONLY nhưng KHÔNG APPLY

Muốn trạng thái:

 

READ ONLY WITH APPLY

thì cần Active Data Guard.

 

--Trưng hợp không fix đưc thì restart lại instance

1/Tắt DB

Shutdown immediate, chậm phải shutdown abort

2/Open mount: startup mount;

3/alter database open;

 

SQL> alter database open;

 

Database altered.

 

SQL> SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME in ('apply lag','transport lag');

 

NAME                             VALUE

-------------------------------- ----------------------------------------------------------------

transport lag                    +00 00:00:00

apply lag                        +00 00:16:01

 

SQL> SELECT PROCESS, CLIENT_PROCESS, THREAD#, SEQUENCE#,STATUS, BLOCK#, BLOCKS FROM  Gv$MANAGED_STANDBY order by PROCESS, thread#, SEQUENCE#;

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

RFS       Archival          1          0 IDLE                  0          0

RFS       LGWR              1       5399 IDLE             158121          1

 

8 rows selected.

 

SQL> alter database recover managed standby database using current logfile disconnect;

 

Database altered.

 

SQL> SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME in ('apply lag','transport lag');

 

NAME                             VALUE

-------------------------------- ----------------------------------------------------------------

transport lag                    +00 00:00:00

apply lag

 

SQL> SELECT PROCESS, CLIENT_PROCESS, THREAD#, SEQUENCE#,STATUS, BLOCK#, BLOCKS FROM  Gv$MANAGED_STANDBY order by PROCESS, thread#, SEQUENCE#;

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

MRP0      N/A               1       5399 APPLYING_LOG     162978    4194304

RFS       Archival          1          0 IDLE                  0          0

RFS       LGWR              1       5399 IDLE             162978          1

 

9 rows selected.

 

SQL> SELECT PROCESS, CLIENT_PROCESS, THREAD#, SEQUENCE#,STATUS, BLOCK#, BLOCKS FROM  Gv$MANAGED_STANDBY order by PROCESS, thread#, SEQUENCE#;

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

RFS       Archival          1          0 IDLE                  0          0

RFS       LGWR              1       5399 IDLE             158121          1

 

8 rows selected.

 

SQL> alter database recover managed standby database using current logfile disconnect;

 

Database altered.

 

SQL> SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME in ('apply lag','transport lag');

 

NAME                             VALUE

-------------------------------- ----------------------------------------------------------------

transport lag                    +00 00:00:00

apply lag

 

SQL> SELECT PROCESS, CLIENT_PROCESS, THREAD#, SEQUENCE#,STATUS, BLOCK#, BLOCKS FROM  Gv$MANAGED_STANDBY order by PROCESS, thread#, SEQUENCE#;

 

PROCESS   CLIENT_P    THREAD#  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ---------- ------------ ---------- ----------

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

ARCH      ARCH              0          0 CONNECTED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

DGRD      N/A               0          0 ALLOCATED             0          0

MRP0      N/A               1       5399 APPLYING_LOG     162978    4194304

RFS       Archival          1          0 IDLE                  0          0

RFS       LGWR              1       5399 IDLE             162978          1

 

9 rows selected.

 

 

 

 

 

 

=============================
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- 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
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 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: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Đị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ơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, 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,sql tutorial, khóa học pl/sql tutorial, 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/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

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