Oracle Data Guard là một tính năng của hệ thống quản lý cơ sở dữ liệu Oracle Database, được thiết kế để đảm bảo sự sẵn sàng và bảo vệ dữ liệu trong môi trường cơ sở dữ liệu Oracle. Data Guard cung cấp các giải pháp cho việc sao lưu, phục hồi, và chuyển đổi giữa các máy chủ chính (primary) và máy chủ sao lưu (standby)
Có các loại Standby database như sau:
Physical Standby Databases
Standby is identical copy of primary database
• Redo changes
- transported from primary to standby
- applied on standby (Redo Apply)
• Can switch operations to standby
- Planned (switchover / switchback)
- Unplanned (failover)
Logical Standby Databases
• Redo copied from primary to standby
• Changes converted into logical change records (LCR)
• Logical change records applied on standby (SQL Apply)
• Standby database can be opened for updates
- Can modify propagated objects
- Can create new indexes for propagated objects
• May need larger system for logical standby
- LCR apply can be less efficient than redo apply
- Array updates on primary become single row updates on standby
Snapshot Standby Databases
A snapshot standby database is a type of updatable standby database that provides full data protection for a primary database. A snapshot standby database receives and archives, but does not apply, redo data from its primary database. Redo data received from the primary database is applied when a snapshot standby database is converted back into a physical standby database, after discarding all local updates to the snapshot standby database.
Các chế độ bảo vệ dữ liệu:
Download bộ cài Oracle tương ứng tại:
https://edelivery.oracle.com/osdc/faces/SoftwareDelivery
Mục tiêu: Máy chủ nguồn source và máy chủ đích (dự phòng) target
Items | DB HN – primary | DB HCM – standby |
hostname | hn | hcm |
ip | 192.168.68.11 | 192.168.68.12 |
db name | oradb | oradb |
instance_name | oradb | oradb |
db_unique_name | oradbp | oradbs |
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 | hn.localdomain | hcm.localdomain |
OEM server:
ip: 192.168.68.10
hostname: oemdb.localdomain
Failover: chuyển đổi dự phòng tự động
Switchover: chuyển đổi chủ động
Máy chủ ở HN là máy chủ primary, HCM là standby database
Máy chủ ở HN đã được cài đặt phần mềm và tạo CSDL tên oradb, global database name = oradb.localdomain
Máy chủ ở HCM đã được cài đặt phần mềm oracle database software và chưa tạo database
Unique_name HN là HN, unique_name ở HCM là HCM, chung CSDL tên HN
Các bước cài đặt:
- Trên Prim tạo CSDL oradb
- Thay đổi db_unique_name: oradbp
- Bật chế độ archivelog mode, unlock user DBSNMP
- Tạo OEM agent trên cả hai server Prim và Stand
- Check oracle home trong OEM
- Thêm standby database thông qua OEM
- Testing….
Chỉnh sửa file /etc/hosts trên cả 02 server, thêm vào cuối file hiện tại:
192.168.68.11 hn.localdomain hn
192.168.68.12 hcm.localdomain hcm
192.168.68.10 oemdb.localdomain oemdb
On the Primary
1. Create Primary Database
2. Setup Primary Database in ARCHIVELOG mode
3. Enable FORCE LOGGING
5. Set DB_UNIQUE_NAME
Bật chế độ archivelog và force logging cho CSDL
sqlplus / as sysdba
startup mount
select name,log_mode,force_logging from v$database;
alter database archivelog;
alter database open;
alter system switch logfile;
alter database force logging;
select name,db_unique_name, log_mode,force_logging from v$database;
–kiểm tra name, instance name, db unique name, service name của DB
show parameter name
–đổi db unique name
alter system set db_unique_name=’oradbp’ scope=spfile;
–unlock user dbsnmp
alter user dbsnmp account unlock;
alter user dbsnmp identified by oracle;
–Có thể khởi động lại DB và OS để hệ thống apply thông tin mới
shut immediate;
Trên cả 2 DB:
–tạo thư mục để phục vụ add host agent vào trong OEM
mkdir –p /u01/app/oracle/oemagent
cd $ORACLE_HOME/network/admin
ls –l
–tao listener va tnsnames tren ca 2 db
netca
Bật listener trên cả 2 DB
Bật DB startup trên DB node 1 primary
Trên server OEM
sqlplus / as sysdba
startup
exit
Tiến hành khởi động OMS:
/u01/app/oracle/middleware/bin/emctl start oms
–khi starup oms thì các agent sẽ tự động khởi động
user/pass: sysman/oracle111
Cài đặt Agent vào host DB:
Setup/add target/add targets manually
Add Host Targets => Install Agent on Host
*Session Name: name_of_session
Platform: same for all hosts
=>add +
Trong mục host: nhập vào host cần add
hn.localdomain
hcm.localdomain
NEXT
Installation Base Directory: /u01/app/oracle/oemagent
(đây chính là đường dẫn tạo bên trên 2 host DB, dùng để cài đặt oemagent)
nhấn TAB => đường dẫn này được tạo tự động
Instance Directory: /u01/app/oracle/oemagent/agent_inst
–tạo credential (lưu user/pass login cho user oracle trên DB) để có quyền login tự động khi cần thiết
Named Credential:
user: oracle
pass: oracle
save as: oracle_user_credential
–tạo credential (lưu user/pass login cho user oracle trên DB)
Root Credential:
user: root
pass: oracle
save as: root_user_credential
port: 3872
NEXT
Màn hình summary check lại thông tin
DEPLOY AGENT
–chờ cho hệ thống tạo agent trên 2 máy db
=>Agent Deployment Succeeded
–vào target/ hosts xem danh sách host hiện có trong OEM
–add database va listener cua DB prim vao OEM
Setup/add target/add targets manually
Tại mục Add Non-Host Targets Using Guided Process click Add using guied process => sau đó chọn Oracle database, listener and automatic managemnt… sau đó nhấn ADD
Specify Host or Cluster => click tìm kiếm
chọn DB
hn.localdomain
NEXT
chọn database và listener, nhập pass oracle cho user dbsnmp sau đó click NEXT (có thể test connection ở bước này…)
click SAVE
–làm tương tự để add node standby vào OEM
–add database va listener cua DB Stand vao OEM
Setup/add target/add targets manually
Tại mục Add Non-Host Targets Using Guided Process click Add using guied process => sau đó chọn Oracle database, listener and automatic managemnt… sau đó nhấn ADD
Specify Host or Cluster => click tìm kiếm
chọn DB
hcm.localdomain
NEXT
chọn database và listener, nhập pass oracle cho user dbsnmp sau đó click NEXT (có thể test connection ở bước này…)
trong mục này thì chỉ add được listener của node 2 mà thôi, bởi vì node 2 chưa có DB
click SAVE
–nhân bản DB standby
targets/database => chọn DB oradbp
Trên giao diện hiện ra vào Availability/Add standby database
Login vào DB prim với thông tin
user: sys
pass: oracle
quyền: sysdba
Tại màn hình này
Create a new physical standby database
continue
tiếp theo chọn hình thức tạo standby theo online backup hay là existing backup => next
Add Standby Database: Backup Options
tại màn hình này là thông tin của Prim db => kiểm tra thông tin và next
tại màn hình này là thông tin của Standby sẽ cài apply DB của Prim lên => thay thông tin host của Standby vào bằng cách click vào tìm kiếm và chọn node Standby trong mục HOST
hcm.localdomain
kiểm tra các thông số khác như:
instance name, data storage, host, oracle home, credential, name…
next
đến màn hình thông tin datafile standy => kiểm tra và next
đến màn hình standby configuration sửa lại thông tin sau
Standby Database Parameters: oradbs
Target Name: oradbs
tích chọn Data guard broker
trong mục Data Guard Connect Identifiers
Primary Database Connect Identifier: use ket noi mac dinh
Standby Database Connect Identifier: use ket noi mac dinh
sau đó click next
hệ thống bắt đầu thực hiện backup database và tạo standby db
DB prim
–login vao broker
dgmgrl / as sysdba
validate static connect identifier for all;
=>bao loi do listener tren DB prim thieu thong tin
Oracle Clusterware is not configured on database “oradbp”.
Connecting to database “oradbp” using static connect identifier “(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hn.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=oradbp_DGMGRL.localdomain)(INSTANCE_NAME=oradb)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))” …
Unable to connect to database using (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hn.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=oradbp_DGMGRL.localdomain)(INSTANCE_NAME=oradb)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Failed.
Oracle Clusterware is not configured on database “oradbs”.
Connecting to database “oradbs” using static connect identifier “(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hcm.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=oradbs_DGMGRL.localdomain)(INSTANCE_NAME=oradb)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))” …
ORA-01017: invalid username/password; logon denied
- Sửa lỗi như sau:
khi cài đặt xong stand thì hệ thống tự tạo thêm thông tin trong file listener ở DB stand dùng cho việc active listener của data guard broker DGMGRL
=>mở file listener trên DB standby và copy thông tin thêm vào file listener bên DB prim
vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = oradbp_DGMGRL.localdomain)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = oradb)
(ENVS = “ORACLE_UNQNAME=oradbp_DGMGRL”)
)
)
–khoi dong lai listener va check status cua no
lsnrctl stop
lsnrctl start
lsnrctl status
dgmgrl / as sysdba
validate static connect identifier for all;
DB stand:
–login vao database va open
sqlplus / as sysdba
alter database open;
–test tren ca 2 db de xem thong tin hien tai
select NAME,DB_UNIQUE_NAME, OPEN_MODE, LOG_MODE,FORCE_LOGGING from v$database;
HN db prim
–login vao data guard broker
dgmgrl / as sysdba
show configuration;
–ket qua
Configuration – oradbp.localdomain
Protection Mode: MaxPerformance
Members:
oradbp – Primary database
oradbs – Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 5 seconds ago)
–test tren ca 2 db de xem thong tin hien tai
select NAME,DB_UNIQUE_NAME, OPEN_MODE, LOG_MODE,FORCE_LOGGING from v$database;
OEM
–active update realtime tren DB standby
targets/database
=>oradbs
=> Availability/add standby database/cancel
=> hệ thống hiển thị chi tiết thông tin data guard
=> Standby Databases => click vào Normal
=> Redo Apply Services => Enable Real-time Query
sau đó nhấn Apply
TEST DỊCH VỤ
DB prim:
–create tablespace de luu data bang test
–create user va bang
sqlplus / as sysdba
create tablespace DUONG datafile size 100m autoextend on next 10m maxsize unlimited;
alter tablespace DUONG add datafile size 100m autoextend on next 10m maxsize unlimited;
create user duo identified by oracle default tablespace DUONG temporary tablespace TEMP quota unlimited on DUONG;
create table duo.tab (id number, data varchar(100));
alter table duo.tab add primary key (id);
select count(*) from duo.tab;
–insert data vào tab
insert into duo.tab values (1,’duo nguyen 1′);
insert into duo.tab values (2,’duo nguyen 2′);
insert into duo.tab values (3,’duo nguyen 3′);
commit;
set lines 999;
select * from duo.tab;
select count(*) from duo.tab;
–insert them
insert into duo.tab values (4,’duo nguyen 4′);
insert into duo.tab values (6,’duo nguyen 6′);
insert into duo.tab values (7,’duo nguyen 7′);
insert into duo.tab values (8,’duo nguyen 888′);
insert into duo.tab values (9,’duo nguyen 999′);
insert into duo.tab values (10,’duo nguyen 101010′);
insert into duo.tab values (11,’duo nguyen 11111′);
insert into duo.tab values (12,’duo nguyen 12′);
insert into duo.tab values (13,’duo nguyen 13′);
commit;
–kiem tra db prim, db standby de xem che do hien tai
select name, db_unique_name, database_role, switchover_status, open_mode from v$database;
=>hien thi thong tin day du ve 2 DB, prim va stand
Thủ tục swichover, failover Prim => Stand và ngược lại:
–có 03 cách thực hiện việc này, chuyển DB nào thì đứng ở DB đó và thực hiện lệnh
1.thông qua OEM
–check xem DB đang là trạng thái nào, prim hay stand
select name, db_unique_name, database_role, switchover_status, open_mode from v$database;
–chuyển từ prim sang stand, đứng ở prim
availability/data guard administration/ Standby Databases/switchover hoặc failover…continue/continue/check confirm và chọn yes
–tich chon ca monitoring
=>check ket qua: prim da tro thanh stand va stand chuyen thanh prim
=>test insert data vào và check kết quả
2.thông qua data guard broker
dgmgrl / as sysdba
–check thong tin db
show configuration;
Configuration – oradbp.localdomain
Protection Mode: MaxPerformance
Members:
oradbs – Primary database
oradbp – Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 36 seconds ago)
–hien dang dung o prim server
–switch từ prim thành stand
connect SYS
switchover to oradbs;
=>prim dang la stand chung ta co the switchback thanh prim
–switch từ stand thành prim
connect SYS
switchover to oradbp;
FAILOVER: khi may prim loi => may stand se thanh prim
Login in vào Standby Server:-
–check status hien tai
select name,open_mode,database_role from v$database;
— Cancel tiến trình MRP
alter database recover managed standby database cancel;
–Chuyển standby thành primary
alter database recover managed standby database finish;
alter database activate standby database;
shutdown immediate;
Startup
=>stand bay gio da chuyen thanh prim
–test data
Check lag tren Stand
SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME=’apply lag’;
=>kiem tra tren DB standby xem dữ liệu đồng bộ như thế nào?