Thứ Năm, 4 tháng 9, 2025

Cài đặt PostgreSQL database trên Oracle Linux 7

Trong bài này chúng ta sẽ cùng đi cài đặt Postgres Database trên Oracle Linux 7.

Cài đặt Oracle Linux trên VirtualBox: https://www.tranvanbinh.vn/2025/09/huong-dan-cai-at-oracle-linux-79-tren.html

Cài đặt và sử dụng EXTENSION trên Postgresql

Trong PostgreSQL, extension (phần mở rộng) là những module bổ sung được cài đặt để mở rộng chức năng cơ bản của hệ thống quản trị cơ sở dữ liệu (DBMS). Các extension này cung cấp các tính năng mới, công cụ và khả năng nâng cao cho phép người dùng thực hiện các tác vụ phức tạp hơn hoặc tích hợp với các hệ thống khác.

Tạo Index cho Partitioned Table trong PostgreSQL

Khi làm việc với các bảng được phân vùng (partitioned tables) trong PostgreSQL, bạn cần chú ý rằng mỗi phân vùng là một bảng riêng biệt. Do đó, bạn phải tạo index cho từng phân vùng một cách độc lập, hoặc bạn có thể tạo index trên bảng mẹ (parent table), sau đó PostgreSQL sẽ tự động tạo các index tương ứng trên từng phân vùng.

Setup PostgreSQL Cluster Highly Available with Patroni Etcd HAProxy

Thông tin thiết lập node:

Keepalived là gì?

Keepalived là một công cụ mã nguồn mở được sử dụng để quản lý địa chỉ IP ảo (VIP) trong các hệ thống phân tán. Nó hoạt động như một bộ định tuyến ảo, sử dụng giao thức VRRP (Virtual Router Redundancy Protocol) để đảm bảo tính khả dụng cao và chuyển đổi dự phòng liền mạch cho các dịch vụ mạng.

HAProxy là gì?

HAProxy, viết tắt của High Availability Proxy, là một công cụ mã nguồn mở được sử dụng phổ biến để cân bằng tải (load balancing) và proxy cho các ứng dụng web, ứng dụng TCP/IP và các dịch vụ mạng khác. Nó giúp phân tán lưu lượng truy cập giữa nhiều máy chủ, tăng hiệu suất, độ sẵn sàng và khả năng mở rộng của hệ thống.

Etcd là gì?

Etcd là một kho lưu trữ khóa-giá trị phân tán, được sử dụng rộng rãi để lưu trữ cấu hình, trạng thái và siêu dữ liệu cho các ứng dụng phân tán. Nó được thiết kế để có tính khả dụng cao, nhất quán và hiệu suất cao, giúp nó trở thành lựa chọn lý tưởng cho các hệ thống phức tạp và đòi hỏi độ tin cậy cao.

PgBouncer là gì?

PgBouncer là một công cụ mã nguồn mở, nhẹ và miễn phí dùng để quản lý kết nối cho cơ sở dữ liệu PostgreSQL. Nó hoạt động như một trung gian giữa ứng dụng khách hàng và máy chủ PostgreSQL, quản lý một nhóm kết nối cơ sở dữ liệu để cải thiện hiệu suất, khả năng mở rộng và sử dụng tài nguyên.

NoSQL là gì?

NoSQL là viết tắt của Not Only SQL hoặc Non-relational (phi quan hệ), là một thuật ngữ chung để chỉ các loại cơ sở dữ liệu không sử dụng mô hình dữ liệu quan hệ truyền thống dựa trên bảng. NoSQL được phát triển để giải quyết các thách thức của các cơ sở dữ liệu quan hệ khi lưu trữ và quản lý lượng dữ liệu lớn, không có cấu trúc hoặc thay đổi theo thời gian.

Data Privacy là gì?

Quyền riêng tư dữ liệu (Data Privacy) là gì?

Quyền riêng tư dữ liệu, hay Bảo vệ dữ liệu cá nhân, là quyền của cá nhân kiểm soát cách dữ liệu cá nhân của họ được thu thập, sử dụng và chia sẻ. Nó bao gồm nhiều quyền cụ thể, bao gồm:

Hướng dẫn Cấu hình mã hoá dữ liệu Transparent Data Encryption (TDE) trong Oracle database 19c

Cấu hình mã hoá dữ liệu Transparent Data Encryption (TDE) trong Oracle database 19c

TDE là gì: https://www.tranvanbinh.vn/2025/09/transparent-data-encryption-tde-trong.html

Oracle Wallet: https://www.tranvanbinh.vn/2025/09/oracle-wallet-la-gi.html

Oracle Wallet là gì?

Quản trị Oracle Wallet

Oracle Wallet là một công cụ lưu trữ các thông tin xác thực bảo mật, chẳng hạn như private key, certificate và trusted certificate, được sử dụng cho kết nối SSL và các mục đích khác trong Oracle Database. Để quản trị Oracle Wallet, bạn có thể sử dụng Oracle Wallet Manager, một ứng dụng độc lập.

Transparent Data Encryption (TDE) trong Oracle Database là gì?

TDE (Transparent Data Encryption) là tính năng mã hóa dữ liệu trong suốt của Oracle Database. Nó cho phép bạn mã hóa dữ liệu nhạy cảm được lưu trữ trong bảng, tablespace hoặc toàn bộ database để đảm bảo an toàn dữ liệu ngay cả khi phương tiện lưu trữ bị đánh cắp hoặc bị truy cập trái phép.

Data Encryption là gì?

Tóm tắt Data Encryption (Mã hóa dữ liệu):

Data Sampling là gì?

Data Sampling – Lấy mẫu dữ liệu là gì?

Data Sampling, hay Lấy mẫu dữ liệu, là kỹ thuật lấy một tập con (subset) từ một quần thể dữ liệu lớn để ước tính các đặc điểm của toàn bộ quần thể. Nó được sử dụng trong nhiều lĩnh vực khác nhau, bao gồm thống kê, nghiên cứu khoa học, kinh doanh và marketing.

Data Cleansing là gì?

Data Cleansing – Làm sạch dữ liệu là gì?

Data Cleansing, hay Làm sạch dữ liệu, là quá trình sửa chữa hoặc loại bỏ dữ liệu không chính xác, sai định dạng, trùng lặp, không liên quan, không đầy đủ hoặc có vấn đề (dirty) trong tập dữ liệu. Khi kết hợp nhiều nguồn dữ liệu, có nhiều khả năng dữ liệu bị trùng lặp hoặc gắn nhãn sai. Dữ liệu bẩn có thể dẫn đến kết quả phân tích không chính xác, quyết định sai lầm và lãng phí thời gian và nguồn lực.

Data Architecture (Kiến trúc dữ liệu) là gì?

Data Architecture, hay Kiến trúc dữ liệu, là một tập hợp các mô hình, quy tắc và tiêu chuẩn mà một tổ chức sử dụng để quản lý dữ liệu của họ. Nó bao gồm cách dữ liệu được thu thập, lưu trữ, truy cập và sử dụng. Kiến trúc dữ liệu được thiết kế để đáp ứng các nhu cầu kinh doanh cụ thể của tổ chức và đảm bảo rằng dữ liệu có thể được sử dụng một cách hiệu quả, hiệu quả và an toàn.

Patroni là gì?

Patroni là một công cụ mã nguồn mở được sử dụng để quản lý và triển khai các cụm PostgreSQL có tính khả dụng cao (HA). Nó hoạt động như một hệ thống quản lý cụm (CMS) tự động hóa nhiều tác vụ liên quan đến việc duy trì tính sẵn sàng và hiệu suất của cụm PostgreSQL.

Các file cấu hình PostgreSQL phổ biến

PostgreSQL sử dụng nhiều file cấu hình để điều chỉnh cài đặt và cách thức hoạt động của hệ thống. Dưới đây là một số file cấu hình quan trọng nhất:

Hướng dẫn cấu hình kết nối đến PostgreSQL Server với pg_hba.conf và postgresql.conf

Hướng dẫn cấu hình kết nối đến PostgreSQL Server với pg_hba.conf và postgresql.conf

Cấu hình Fast-Start Failover Oracle Data Guard sử dụng DGMGRL Utility Oracle Data Guard 19c

Trong quá trình vận hành CSDL Oracle database chúng ta không thể tránh khỏi việc xảy ra sự cố bất ngờ dẫn tới CSDL chính Primary không thể hoạt động (lỗi đĩa, mạng, cpu…) => như vậy chúng ta cần hành động ngay lập tức chuyển chức năng của Standby thành Primary để tiếp tục hệ thống CSDL.

Oracle Data Guard Primary và Standby là gì?

Primary và Standby là gì?

Tự động Flashback Standby database khi Flashback trên Primary Oracle Data Guard 19c

Đâ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ộ.

Thi chứng chỉ Oracle Certified Professional OCP 19c_Update 2025

1.GIỚI THIỆU

Oracle Certified Professional (OCP) là một trong những chứng chỉ chuyên nghiệp cao cấp của Oracle, nhằm xác nhận kỹ năng và kiến thức chuyên sâu của bạn về quản trị cơ sở dữ liệu Oracle. OCP 2019 cụ thể là chứng chỉ dành cho phiên bản Oracle Database 19c, một trong những phiên bản cơ sở dữ liệu tiên tiến nhất của Oracle.

G:\My Drive\web\datalinks.vn\ocp\ocp2019.png

Các Bước Để Đạt Được Chứng Chỉ OCP 2019

1. Yêu Cầu Ban Đầu

  • Chứng chỉ Oracle Certified Associate (OCA-1Z0-82): Trước khi đạt được OCP, bạn cần phải hoàn thành chứng chỉ OCA cho Oracle Database 19c.

2. Khóa Học Đào Tạo Chính Thức

  • Hoàn thành các khóa học bắt buộc: Oracle yêu cầu bạn hoàn thành một số khóa học đào tạo chính thức từ Oracle University. Những khóa học này cung cấp kiến thức và kỹ năng cần thiết để bạn chuẩn bị cho kỳ thi OCP.
  • HIỆN TẠI: bạn không cần học chính thức từ Oracle nữa =>> có thể tự học và thi luôn.

3. Ôn Luyện và Thực Hành

  • Học tập từ tài liệu chính thức: Sử dụng sách học chính thức và tài liệu từ Oracle Press, Oracle Documentation để ôn luyện.
  • Thực hành thường xuyên: Thiết lập môi trường thực hành trên máy tính cá nhân hoặc sử dụng Oracle Cloud để thực hành các tác vụ quản trị cơ sở dữ liệu.
  • Thi thử: Làm các bài thi thử để làm quen với cấu trúc đề thi và kiểm tra kiến thức của mình.

4. Đăng Ký và Tham Gia Kỳ Thi

  • Đăng ký thi: Đăng ký kỳ thi qua trang web của Oracle, thanh toán lệ phí thi và chọn ngày giờ thi, bạn có thể thi trực tuyến tại nhà.
  • Thi 2 môn là 1Z0-082 và 1Z0-083: Bạn cần hoàn thành hai kỳ thi này để đạt được chứng chỉ OCP 19c.

Nội Dung Kỳ Thi OCP 19c

Kỳ Thi 1Z0-082: Oracle Database Administration I

  • Kiến thức cơ bản về Oracle Database: Cấu trúc cơ bản, cài đặt và cấu hình cơ sở dữ liệu.
  • Quản trị người dùng và bảo mật: Tạo và quản lý người dùng, phân quyền và bảo mật dữ liệu.
  • Quản lý dữ liệu: Quản lý các đối tượng cơ sở dữ liệu như bảng, chỉ mục, và các ràng buộc.

Kỳ Thi 1Z0-083: Oracle Database Administration II

  • Quản lý hiệu suất: Giám sát và tối ưu hóa hiệu suất cơ sở dữ liệu.
  • Khôi phục và sao lưu dữ liệu: Quản lý các kế hoạch sao lưu và khôi phục cơ sở dữ liệu.
  • Quản lý cơ sở dữ liệu nâng cao: Quản lý các tính năng nâng cao như Oracle Multitenant, Data Guard, và RAC (Real Application Clusters).

Lợi Ích Của Chứng Chỉ OCP 19c

  • Khẳng định chuyên môn: Chứng chỉ OCP 19c chứng minh bạn có kỹ năng và kiến thức chuyên sâu về quản trị cơ sở dữ liệu Oracle.
  • Nâng cao cơ hội nghề nghiệp: Giúp bạn có lợi thế trong việc tìm kiếm công việc và thăng tiến trong lĩnh vực công nghệ thông tin.
  • Cập nhật kiến thức: Đảm bảo bạn luôn nắm bắt được những công nghệ và tính năng mới nhất của Oracle Database.

Tài Liệu Học Tập Khuyến Nghị

  • Oracle Database 19c: Administration Workshop: Khóa học cung cấp kiến thức cơ bản và nâng cao về quản trị cơ sở dữ liệu.
  • Oracle Documentation: Tài liệu chính thức của Oracle là nguồn tài liệu phong phú và chi tiết.
  • Oracle Press Books: Các sách từ Oracle Press thường có các bài tập và ví dụ thực tế.

Chúc bạn thành công trong việc đạt được chứng chỉ Oracle Certified Professional 19c!

II. THI

Để trở thành Oracle DBA hiện tại thì chứng chỉ đầu tiên bạn phải phải vượt qua để chứng minh kiến thức và kỹ năng là Oracle Certified Professional OCP 19c. (Oracle hiện đã bỏ OCA trong hệ thống chứng chỉ của họ).

Nội dung môn 2/2 của OCP 2019: 1z0-083: Oracle Database Administration II

1z0-083: Oracle Database Administration II

Nội dung môn 1/2 của OCP 2019: 1z0-082: Oracle Database Administration I

1z0-082: Oracle Database Administration I

Cấu hình Oracle Data Guard Broker DGMGRL Oracle Data Guard 19c

Data Guard broker là một tiện ích giúp quản lý và cấu hình thông số Data Guard thông qua kết nối client.

Hướng dẫn cài đặt Oracle data guard Physical standby Ver 19c với RMAN

Dưới đây là hướng dẫn chi tiết quá trình dựng node Oracle data guard Physical standby Ver 19c với RMAN

Cài đặt Oracle database 19c trên Linux | Install oracle database 19c on Linux

Để cài đặt được Oracle database trên Linux chúng ta thực hiện lần lượt các bước sau:

Oracle Data Guard convert physical thành snapshot standby Oracle 19c

Snapshot Standby trong Oracle Data Guard là một loại cơ sở dữ liệu dự phòng được sử dụng để tạo bản sao nhanh, có thể cập nhật của cơ sở dữ liệu chính Oracle. Nó khác với các loại cơ sở dữ liệu dự phòng khác như Physical Standby và Logical Standby.

Active Data Guard DML Redirection Oracle 19c

Trên Oracle 19c có tính năng hữu ích đó là DML redirection, chúng ta có thể thực thi lệnh DML trên một Standby database, điều này là cần thiết và rất hữu ích trong khi máy chủ Primary có thể tạm thời gặp sự cố mà chúng ta không thể thực hiện được các lệnh DML hoặc là Primary đang bị quá tải hay chúng ta cần thiết san tải sang máy chủ khác.

Oracle Data Guard convert Physical standby thành Active data guard Oracle 19c

Một Active data guard là CSDL có thể thực hiện các thao tác select dữ liệu (dạng READ-ONLY), và nó là bản nâng cấp của Physical Standby database (mount).

Hướng dẫn cài đặt Oracle data guard Physical standby Ver 19c với RMAN

Dưới đây là hướng dẫn chi tiết quá trình dựng node Oracle data guard Physical standby Ver 19c với RMAN

Hướng dẫn cài đặt Oracle data guard Physical standby Ver 19c với RMAN

THÔNG TIN CHI TIẾT 2 NODE:

ItemsPrimary – SRV1Standby – SRV2
hostnamesrv1srv2
ip192.168.68.11192.168.68.12
db nameduodbduodb
instance_nameduodbduodb
db_unique_nameduodbstand
version DB19.319.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 namesrv1.localdomainsrv2.localdomain

do oracle data guard

Bắt đầu thôi:

Chuẩn bị hệ điều hành Linux để cài đặt:

Xem các bước cài đặt HĐH oracle Linux ở đây: https://datalinks.vn/huong-dan-cai-dat-oracle-linux-7-9-tren-vtbox/

Hoặc Download oracle linux 7.9 file .OVA có sẵn cho máy ảo Virtualbox mà không phải cài đặt:

https://drive.google.com/file/d/1SA3R5UY97qTSYtQGzpaz4LocUAZBBuGt/view?usp=sharing

Các bạn tải về và mở Virtualbox lên sau đó thực hiện Import vào => File => Import …

Cài đặt Oracle database 19c trên Linux ở bên trên:

Xem bài viết này nhé: https://datalinks.vn/cai-dat-oracle-database-19c-tren-linux-install-oracle-database-19c-on-linux/

Tiếp theo:

SRV1 – là server tôi đặt là Primary

SRV2 – là server tôi đặt là Standby

Chúng ta tạo Data Guard dạng Physical Standby nghĩa là nó sẽ apply Redolog sang Standby từ Primary.

Prim: cài đặt hoàn thiện phần mềm và khởi tạo CSDL oracle database 19c, tên CSDL là duodb

Stand: chỉ cài đặt oracle Software và không tạo DB (chúng ta sẽ clone nó từ Prim)

Đặt tên hostname cho 2 node:

trên SRV1:
hostnamectl set-hostname srv1.localdomain

trên SRV2:
hostnamectl set-hostname srv2.localdomain

Trên cả 2 SRV:

Thêm vào cuối file hosts theo thông tin bên dưới:

vi /etc/hosts

192.168.68.11 srv1.localdomain srv1
192.168.68.12 srv2.localdomain srv2

SERVER PRIM SRV1:

trước khi thực hiện đảm bảo rằng trên SV1 đã cài đặt oracle software và tạo database rồi => thực hiên theo hướng dẫn ở bên trên

Kiểm tra và bật chế độ Archivelog:

su oracle
cd
. .bash_profile
sqlplus / as sysdba
startup
alter system set log_archive_dest_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=both;
select log_mode from v$database;
archive log list;

Nếu chưa bật thì Off database đi khởi động ở mount và bật lên:

shutdown immediate
startup mount
alter database archivelog;
alter database open;

Kiểm tra và bật chế độ Force Logging:

select force_logging from v$database;
alter database force logging;

Check redo log size:

select group#, thread#, bytes/1024/1024 mb from v$log;
select thread#, instance from v$thread ;

SQL> select group#, thread#, bytes/1024/1024 mb from v$log;

GROUP# THREAD# MB

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

1 1 200

2 1 200

3 1 200

Tạo redo log cho standby node, chúng ta nên tạo standby redo logs giống như primary về kích thước file, số lượng group và log file (ở đây là 200MB và 3 logfile):

alter database add standby logfile thread 1 size 200m;
alter database add standby logfile thread 1 size 200m;
alter database add standby logfile thread 1 size 200m;

Kiểm tra kết quả sau khi tạo:

select group#, thread#, sequence#, bytes/1024/1024 mb, archived, status from v$standby_log;
select member from v$logfile where type = 'STANDBY';

Check db_unique_name:

show parameter db_unique_name

word image 909 2

Set log_archive_config:

alter system set log_archive_config='DG_CONFIG=(DUODB,STAND)' scope=both;

Set log_archive_dest_2:

alter system set log_archive_dest_2='SERVICE=STAND ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STAND' scope=both;

Set fal_server:

show parameter fal_server ;
alter system set fal_server ='STAND' scope=both;

Set standby_file_management: AUTO

show parameter standby_file_management
alter system set standby_file_management='AUTO' scope=both;

Lấy thông tin đường dẫn: control_files, core_dump_dest, audit_file_dest:

select name, value from v$parameter where upper(value) like upper('%/duodb/%');

word image 909 3

Kiểm tra và Enable flashback:

select flashback_on from v$database;
alter database flashback on;

Check the password file:

exit
ls /u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapw*

word image 909 4

Tắt firewall trên node:

systemctl stop firewalld.service
systemctl disable firewalld.service

Bật đồng bộ thời gian cho node:

systemctl enable chronyd.service
systemctl restart chronyd.service
systemctl status chronyd
chronyc tracking
chronyc sources
chronyc -a 'burst 4/4'
chronyc -a makestep

Update yum:

yum update -y

Add to tnsnames.ora:

vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora

# Thêm nội dung đoạn này vào file:

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
DUODB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv1.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = duodb.localdomain)
)
)
STAND =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv2.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stand.localdomain)
)
)
LISTENER_DUODB =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv1.localdomain)(PORT = 1521))

Thêm static listener:

vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora

# Thêm nội dung đoạn này vào file:

# listener.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = duodb.localdomain)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = duodb)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv1.localdomain)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle

 

Ghi chú: có thể sử dụng netmgr, netca để tiến hành thiết lập listener và tnsnames cho node.

Tiến hành Reload the listener:

lsnrctl start
lsnrctl status
lsnrctl reload

CẤU HÌNH SERVER STANDBY:

trước khi thực hiện đảm bảo rằng trên SV1 đã cài đặt oracle software rồi => thực hiên theo hướng dẫn ở bên trên

Tắt firewall trên node:

systemctl stop firewalld.service
systemctl disable firewalld.service

Bật đồng bộ thời gian cho node:

systemctl enable chronyd.service
systemctl restart chronyd.service
systemctl status chronyd
chronyc tracking
chronyc sources
chronyc -a 'burst 4/4'
chronyc -a makestep

Update yum:

yum update -y

Tạo thông tin để khởi tạo DB, tên db là giống nhau ở cả 2 db (duodb), thông tin db_unique_name sẽ là khác nhau lần lượt là: DUODB, STAND (server: prim, stand):

Tạo db_name trong file pfile trên server:

Lệnh này sẽ tạo ra pfile tên initstand.ora trong thư mục dbs:

echo 'DB_NAME=DUODB' > $ORACLE_HOME/dbs/initstand.ora

Copy password file từ Prim sang Stand và đổi tên:

Srv2: Thực hiện Copy đúng thông tin file:

scp oracle@srv1:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwduodb /u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwstand

Kiểm tra xem trên Srv2 đã có file orapw hay chưa:

ls -al /u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwstand

SRV2: Copy tnsname.ora file từ Prim sang Stand:

scp oracle@srv1:/u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora

Add listener và reload nó:

vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora

# Thêm đoạn sau vào file:

# listener.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = stand.localdomain)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = stand)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv2.localdomain)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle

Start và Reload Listener:

lsnrctl start
lsnrctl status
lsnrctl reload

Tiến hành tnsping kiểm tra kết nối mạng:

ping srv1
ping srv1.localdomain
ping srv2
ping srv2.localdomain
tnsping duodb
tnsping stand

word image 909 5

word image 909 6

  • hệ thống hiển thị kết quả ping thành công

Tạo adump folder và oradata:

mkdir -p /u01/app/oracle/admin/STAND/adump
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/fast_recovery_area

Khởi động Stand DB trong nomount:

Thực hiện gán biến SID thành stand trước khi khởi động: (tên db là chữ thường, phân biệt chữ hoa/thường)

[oracle@srv2 ~]$ export ORACLE_SID=stand

Login vào sqlplus:
sqlplus / as sysdba
startup nomount
exit

DUPLICATE THE DATABASE

prim: DB open

stand: DB nomount

SRV1: Kết nối RMAN vào Prim và Stand cùng lúc: (trên Srv1)

rman TARGET sys/oracle@DUODB AUXILIARY sys/oracle@STAND

word image 909 7

Nhân bản (Duplicate the database) DB:

DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER
SPFILE
SET DB_UNIQUE_NAME 'STAND' COMMENT 'Is standby'
SET LOG_ARCHIVE_DEST_2 'SERVICE=DUODB ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DUODB'
SET AUDIT_FILE_DEST '/u01/app/oracle/admin/STAND/adump'
SET CONTROL_FILES '/u01/app/oracle/oradata/STAND/controlfile/control01.ctl'
SET FAL_SERVER 'DUODB'
NOFILENAMECHECK;

word image 909 8

  • Duplicate thành công

Kết nối vào Stand để check database: (Srv2)

sqlplus / as sysdba
select database_role from v$database;
show parameter db_name
show parameter db_unique_name

word image 909 9

Stand: thực hiện apply redo:

alter database recover managed standby database disconnect from session;

word image 909 10

Stand: thực hiện check apply redo:

select role, thread#, sequence#, action from v$dataguard_process;

word image 909 11

Prim: thực hiện check apply redo và thực hiện switch logfile check quá trình tạo log:

select sequence#, first_time, next_time from v$archived_log order by sequence#;

alter system switch logfile;

word image 909 12

Stand: kiểm tra log mới apply:

select sequence#, first_time, next_time, applied from v$archived_log order by sequence#;

word image 909 13

Stand: Stop quá trình recovery process

alter database recover managed standby database cancel;

word image 909 14

Stand: Enable flashback on the standby:

select flashback_on from v$database;
alter database flashback on;

Stand: Start the recovery process again on the standby

alter database recover managed standby database disconnect from session;

word image 909 15

TEST DATABASE: THỰC HIỆN QUÁ TRÌNH SWITCHOVER VỚI SQLPLUS:

Prim: kiểm tra đồng bộ dữ liệu sẵn sàng thực hiện switchover

sqlplus / as sysdba
alter database switchover to STAND verify;

Prim: Kiểm tra GAPS: no gaps

select status, gap_status from v$archive_dest_status where dest_id = 2;

word image 909 16

Prim: thực hiện lênh switchover:

alter database switchover to STAND;

word image 909 17

SRV2: (hiện tại Srv2 trở thành primary database) => open database:

sqlplus / as sysdba
alter database open;

SRV1: (hiện tại là standby database) và tiến hành mount database:

startup mount
alter database recover managed standby database disconnect;

word image 909 18

SRV1: check và kiểm tra thông tin:

select database_role from v$database;
select role, thread#, sequence#, action from v$dataguard_process;

word image 909 19

  • SRV1 hiện tại đã thành Standby database và SRV2 thành Primary
  • Quá trình thực hiện switchover thành công

TEST DATABASE: THỰC HIỆN SWITCHBACK:

SRV2: verify thông tin sẵn sàng thực hiện switch:

alter database switchover to DUODB verify;

SRV2: thực hiện switchover.

alter database switchover to DUODB;

word image 909 20

SRV1: Open database

alter database open;

SRV2: mount database và start recover redo logfile:

startup mount

alter database recover managed standby database disconnect;

word image 909 21

SRV2: kiểm tra thông tin sau khi thực hiện switchover

select database_role from v$database;

word image 909 22

  • quá trình switchover thành công

TROUBLESHOOTING

set linesize 200 pages 50
col value for a85
col name for a50

select name, value
from gv$parameter
where name in ('db_name','db_unique_name','log_archive_config',   
'log_archive_dest_1','log_archive_dest_2','log_archive_dest_3',
'log_archive_dest_state_1','log_archive_dest_state_2','log_archive_dest_state_3',
'remote_login_passwordfile','log_archive_format','log_archive_max_processes',
'fal_server','fal_client','db_file_name_convert',
'log_file_name_convert', 'standby_file_management')
order by 1;

word image 909 23

Chú ý:

Khi bạn insert data vào trong primary mà muốn kiểm tra thông tin trên standy thì sẽ không thể check được do là standby đang ở chế độ mount => như vậy muốn xem được thông tin thì standby phải chuyển sang Open => nhưng nếu Open standby thì rất nguy hiểm vì lúc này nó sẽ không thể là thành phần của data guard nữa => chúng ta chỉ có thể chuyển standby về chế độ Open Read Only là an toàn

Khi bạn mở cơ sở dữ liệu (database) trên server standby (physical standby server), có thể có các trường hợp sau đây tùy thuộc vào chế độ bạn mở nó:

  1. Open ở chế độ read-only (READ ONLY WITH APPLY):
    • Trong trường hợp này, bạn có thể mở database trên standby để đọc dữ liệu nhưng không thể thực hiện các thao tác ghi (INSERT, UPDATE, DELETE). Lúc này, standby server vẫn có thể nhận và áp dụng các redo logs từ primary server để cập nhật dữ liệu.
    • Ảnh hưởng: Không có tác động tiêu cực lên quá trình đồng bộ hóa giữa primary và standby, vì standby vẫn tiếp tục nhận và áp dụng redo logs mà không làm gián đoạn hoạt động của primary server. Bạn có thể dùng standby cho mục đích báo cáo mà không ảnh hưởng đến hoạt động chính của hệ thống.
  2. Open ở chế độ read-write (READ WRITE):
    • Nếu bạn mở standby database ở chế độ read-write, nó sẽ trở thành một cơ sở dữ liệu độc lập (không còn là standby). Việc này sẽ làm ngắt quá trình đồng bộ giữa primary và standby.
    • Ảnh hưởng: Standby server sẽ không còn nhận redo logs từ primary nữa, điều này có thể làm mất tính nhất quán giữa hai server và bạn cần cấu hình lại nếu muốn quay về mô hình standby.

Thông thường, standby database được mở ở chế độ read-only để phục vụ cho mục đích đọc và phân tích dữ liệu, tránh làm gián đoạn quá trình đồng bộ với primary.

=============================
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