Đây có thể nói là tính năng hay trong Oracle 19c, khi chúng ta thực hiện tạo Restore Point và Flashback CSDL trên Primary thì trên Standby cũng tự động thực hiện như trên Primary, như vậy dữ liệu của chúng ta sẽ luôn được đồng bộ.
THÔNG TIN CHI TIẾT 2 NODE:
Items | Primary – SRV1 | Standby – SRV2 |
hostname | srv1 | srv2 |
ip | 192.168.1.11 | 192.168.1.12 |
db name | duodb | duodb |
instance_name | duodb | stand |
db_unique_name | duodb | stand |
version DB | 19.3 | 19.3 |
DB_HOME | /u01/app/oracle/ product/19.3.0/dbhome_1 | /u01/app/oracle/ product/19.3.0/dbhome_1 |
DB_BASE | /u01/app/oracle | /u01/app/oracle |
global database name | srv1.localdomain | srv2.localdomain |
SRV1 – server tôi đặt là Primary
SRV2 – server tôi đặt là Standby
Kiểm tra thông tin database:
Primary: kiểm tra thông tin CSDL và bảng hiện có
select status,instance_name,database_role,protection_mode ,flashback_on from v$database,v$instance; select * from duong.tab1;
SQL> select status,instance_name,database_role,protection_mode ,flashback_on from v$database,v$instance;
STATUS INSTANCE_NAME DATABASE_ROLE PROTECTION_MODE
———— —————- —————- ——————–
FLASHBACK_ON
——————
OPEN duodb PRIMARY MAXIMUM AVAILABILITY
YES
SQL> select * from duong.tab1;
CODE NAME
———- ——————–
1 duong duong 222
2 ssssssssssss
Primary: kiểm tra và tạo thông tin restore point:
Sqlplus format:
set pages 500; set lines 150; column time format A30; column name format A30; column REPLICATED format A30;
select SCN, GUARANTEE_FLASHBACK_DATABASE, TIME, NAME, REPLICATED from v$restore_point; create restore point duong_repo guarantee flashback database; select SCN, GUARANTEE_FLASHBACK_DATABASE, TIME, NAME, REPLICATED from v$restore_point;
SQL> select SCN, GUARANTEE_FLASHBACK_DATABASE, TIME, NAME, REPLICATED from v$restore_point;
no rows selected
SQL> create restore point duong_repo guarantee flashback database;
Restore point created.
SQL> select SCN, GUARANTEE_FLASHBACK_DATABASE, TIME, NAME, REPLICATED from v$restore_point;
SCN GUA TIME NAME REP
———- — ————————————————– —————————— —
2402917 YES 07-MAY-24 10.37.52.000000000 AM DUONG_REPO NO
Standby: check thông tin DB
select status,instance_name,database_role,protection_mode ,flashback_on from v$database,v$instance; select SCN, GUARANTEE_FLASHBACK_DATABASE, TIME, NAME, REPLICATED from v$restore_point;
SQL> select status,instance_name,database_role,protection_mode ,flashback_on from v$database,v$instance;
STATUS INSTANCE_NAME DATABASE_ROLE PROTECTION_MODE FLASHBACK_ON
———— —————- —————- ——————– ——————
OPEN stand PHYSICAL STANDBY MAXIMUM PERFORMANCE YES
SQL> select SCN, GUARANTEE_FLASHBACK_DATABASE, TIME, NAME, REPLICATED from v$restore_point;
SCN GUA TIME NAME REP
———- — ——————– ——————– —
2402917 NO 07-MAY-24 10.37.52.0 DUONG_REPO_PRIMARY YES
00000000 AM
Như vậy chúng ta thấy rằng trong tên file restore point của Standby hệ thống đã tự động thêm _primary vào sau.
Test CASE:
Thực hiện truncate hết data trên Primary đi sau đó kiểm tra dữ liệu, thực hiện flashback sau đó check tiếp dữ liệu xem diễn biến như nào?
Primary: truncate table:
select * from duong.tab1; truncate table duong.tab1; select * from duong.tab1;
SQL> select * from duong.tab1;
CODE NAME
———- ——————————
1 duong duong 222
2 ssssssssssss
SQL> truncate table duong.tab1;
Table truncated.
SQL> select * from duong.tab1;
no rows selected
Thực hiện check trên Standby database cũng đã không còn dữ liệu nữa rồi !!!.
SQL> select * from duong.tab1;
no rows selected
Primary: Tắt database sau đó mount và thực hiện flashback:
shut immediate startup mount flashback database to restore point duong_repo; alter database open resetlogs; select * from duong.tab1;
SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1828713632 bytes
Fixed Size 8897696 bytes
Variable Size 436207616 bytes
Database Buffers 1375731712 bytes
Redo Buffers 7876608 bytes
Database mounted.
SQL> flashback database to restore point duong_repo;
Flashback complete.
SQL> alter database open resetlogs;
Database altered.
SQL> select * from duong.tab1;
CODE NAME
———- ——————————
1 duong duong 222
2 ssssssssssss
Như vậy là sau khi tiến hành Flashback trên Primary thì đã có data trở lại.
Standby: Shutdown database sau đó OPEN lại và kiểm tra dữ liệu
shut immediate startup alter database recover managed standby database disconnect; SELECT database_role, open_mode FROM v$database; select * from duong.tab1;
SQL> select * from duong.tab1;
CODE NAME
———- ——————–
1 duong duong 222
2 ssssssssssss
Như vậy là trên Standby cũng đã có dữ liệu trở lại => nghĩa là nó cũng đã thực hiện Flashback như Primary thành công.
Chúc các bạn thành công.