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
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
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.
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.
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, 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à 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à 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à 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.
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:
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à 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.
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 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, 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, 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à 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.
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
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.
Đâ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ộ.
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.
Các Bước Để Đạt Được Chứng Chỉ OCP 2019
1. Yêu Cầu Ban Đầu
2. Khóa Học Đào Tạo Chính Thức
3. Ôn Luyện và Thực Hành
4. Đăng Ký và Tham Gia Kỳ Thi
Nội Dung Kỳ Thi OCP 19c
Kỳ Thi 1Z0-082: Oracle Database Administration I
Kỳ Thi 1Z0-083: Oracle Database Administration II
Lợi Ích Của Chứng Chỉ OCP 19c
Tài Liệu Học Tập Khuyến Nghị
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ọ).
1z0-083: Oracle Database Administration II
1z0-082: Oracle Database Administration I
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.
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 được Oracle database trên Linux chúng ta thực hiện lần lượt các bước sau:
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.
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.
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).
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:
Items | Primary – SRV1 | Standby – SRV2 |
hostname | srv1 | srv2 |
ip | 192.168.68.11 | 192.168.68.12 |
db name | duodb | duodb |
instance_name | duodb | duodb |
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 |
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
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/%');
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*
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:
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:
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:
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
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
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;
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
Stand: thực hiện apply redo:
alter database recover managed standby database disconnect from session;
Stand: thực hiện check apply redo:
select role, thread#, sequence#, action from v$dataguard_process;
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;
Stand: kiểm tra log mới apply:
select sequence#, first_time, next_time, applied from v$archived_log order by sequence#;
Stand: Stop quá trình recovery process
alter database recover managed standby database cancel;
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;
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;
Prim: thực hiện lênh switchover:
alter database switchover to STAND;
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;
SRV1: check và kiểm tra thông tin:
select database_role from v$database; select role, thread#, sequence#, action from v$dataguard_process;
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;
SRV1: Open database
alter database open;
SRV2: mount database và start recover redo logfile:
startup mount alter database recover managed standby database disconnect;
SRV2: kiểm tra thông tin sau khi thực hiện switchover
select database_role from v$database;
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;
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ó:
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.