1. Tải oracle-database-preinstall-19c từ yum.oracle.com
Gói oracle-database-preinstall-19c là RPM giúp tự động cấu hình hệ thống trước khi cài Oracle Database 19c (tạo user/group, kernel parameters, limits, thư viện phụ thuộc,…). Trong môi trường offline, bạn cần tải gói này từ Internet rồi chuyển sang server.
Cách 1: Tải trực tiếp từ trang Oracle Yum Repository
Truy cập kho RPM chính thức: https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/
Hoặc với Oracle Linux 8: https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/
Tìm file: oracle-database-preinstall-19c-*.rpm. Sau đó, tải về máy có Internet.
Cách 2: Dùng wget tải trực tiếp
Ví dụ với Oracle Linux 7: wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
Ví dụ với Oracle Linux 8: wget https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
Cách 3: Tải bằng yum
Nếu có máy Oracle Linux online: sudo yum install --downloadonly --downloaddir=/tmp/preinstall oracle-database-preinstall-19c
Chép file RPM vào server rồi chạy: sudo rpm -ivh oracle-database-preinstall-19c-*.rpm hoặc sudo yum localinstall oracle-database-preinstall-19c-*.rpm
Gói này sẽ tự động cấu hình:
- Tạo user oracle
- Tạo group oinstall, dba
- Cấu hình kernel parameters
- Cấu hình limits (nofile, nproc…)
- Cài các thư viện cần thiết
- Chuẩn bị môi trường đúng chuẩn Oracle
2. Cài oracle-database-preinstall-19c bằng dnf
Trong môi trường offline (không Internet), việc cài gói oracle-database-preinstall-19c bằng dnf kết hợp repo từ Oracle Linux DVD ISO là phương án an toàn và ít lỗi nhất khi chuẩn bị hệ thống cho Oracle Database 19c. Gói oracle-database-preinstall-19c chỉ là “gói chuẩn bị môi trường”, nhưng bản thân nó phụ thuộc vào rất nhiều package khác (thư viện, tool, service) của Oracle Linux.
Khi bạn chạy: dnf localinstall oracle-database-preinstall-19c-*.rpm
dnf sẽ:
- Đọc metadata của RPM để biết nó cần những gói nào (Requires)
- Tìm đúng phiên bản các gói đó trong repo đang bật
- Tự động tải/cài toàn bộ gói phụ thuộc theo đúng thứ tự
- Giải quyết luôn các tình huống phụ thuộc chồng chéo (A cần B, B cần C…)
Tải Oracle Linux 8 DVD full ISO, mount ISO DVD full và tạo repo offline
- Mount ISO OL8 DVD full vào /mnt/oliso:
sudo mkdir -p /mnt/oliso
sudo mount -o loop /path/to/OracleLinux-R8-U10-x86_64-dvd.iso /mnt/oliso
Nếu bạn muốn tự mount lại sau reboot, có thể thêm /etc/fstab sau.
Ví dụ:
- Đường dẫn của file ISO nằm tại: /u01/iso/OracleLinux-R8-U10-x86_64-dvd.iso
- Thư mục mount: /mnt/oliso. Tạo thư mục nếu chưa có
- Thêm cấu hình vào /etc/fstab:
sudo vi /etc/fstab
/u01/iso/OracleLinux-R8-U10-x86_64-dvd.iso /mnt/oliso iso9660 loop,ro 0 0
Tham số:
iso9660→ filesystem của CD/DVD ISOloop→ mount file như thiết bị blockro→ chỉ đọc (khuyến nghị cho ISO)0 0→ không dump, không fsck
Kiểm tra ngay mà không cần reboot: sudo mount -a. Nếu không có lỗi → cấu hình hợp lệ.
Tạo file repo offline /etc/yum.repos.d/ol-offline.repo:
sudo tee /etc/yum.repos.d/ol-offline.repo > /dev/null <<'EOF'
[ol-baseos-offline]
name=OL8 BaseOS (offline)
baseurl=file:///mnt/oliso/BaseOS
enabled=1
gpgcheck=0
[ol-appstream-offline]
name=OL8 AppStream (offline)
baseurl=file:///mnt/oliso/AppStream
enabled=1
gpgcheck=0
EOF
sudo dnf clean all
sudo dnf makecache
Cài preinstall bằng dnf:
sudo dnf -y localinstall ./oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm \
--disablerepo="*" \
--enablerepo=ol-baseos-offline \
--enablerepo=ol-appstream-offline
3. Tạo thư mục Oracle với quyền root (ORACLE_BASE/ORACLE_HOME)
Ví dụ chuẩn hay dùng:
- ORACLE_BASE=/u01/app/oracle
- ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
sudo mkdir -p /u01/app/oracle/product/19c/dbhome_1
sudo mkdir -p /u01/app/oraInventory
sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01
4. Tạo thư mục /home/oracle (root) nếu chưa có
Tạo thư mục home + gán quyền:
sudo mkdir -p /home/oracle
sudo chown oracle:oinstall /home/oracle
sudo chmod 750 /home/oracle
5. Tạo response file ở vị trí root ghi được rồi cấp quyền cho user oracle
Trong cài đặt Oracle Database 19c offline + silent mode, response file (file
.rsp) thường được tạo bởi root ở vị trí mà root có quyền ghi, sau đó chuyển quyền cho user oracle để chạy installer. cat > /tmp/db_install.rsp <<'EOF'
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.rootconfig.executeRootScript=false
EOF
chown oracle:oinstall /tmp/db_install.rsp
chmod 640 /tmp/db_install.rsp
Nếu bạn cài SE2 thì đổi oracle.install.db.InstallEdition=SE2
6. Thiết lập biến môi trường (user oracle)
su - oracle
tee -a ~/.bash_profile > /dev/null <<'EOF'
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
EOF
source ~/.bash_profile
7. Giải nén ZIP vào ORACLE_HOME.
su - oracle
unzip /path/LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
8. Chạy cài đặt silent
su - oracle
cd $ORACLE_HOME
./runInstaller -silent -waitforcompletion -responseFile /tmp/db_install.rsp
Nếu hiển thị thông báo lỗi:
./runInstaller -silent -waitforcompletion -responseFile /tmp/db_install.rsp
Launching Oracle Database Setup Wizard...
[WARNING] [INS-08101] Unexpected error while executing the action at state: 'supportedOSCheck'
CAUSE: No additional information available.
ACTION: Contact Oracle Support Services or refer to the software manual.
SUMMARY:
- java.lang.NullPointerException
Moved the install session logs to:
/u01/app/oraInventory/logs/InstallActions2026-01-08_03-17-45PM
Lỗi INS-08101 tại state supportedOSCheck kèm java.lang.NullPointerException thường xảy ra khi CVU (Cluster Verification Utility) không nhận diện đúng distro/version (đặc biệt trên Oracle Linux 8.x khi bộ cài/OPatch/ru chưa “hiểu” bản minor), nên workaround là ép DISTID trong cvu_config rồi chạy lại installer. Vì vậy, sửa file cấu hình CVU:
vi $ORACLE_HOME/cv/admin/cvu_config
Tìm dòng CV_ASSUME_DISTID (thường nằm ở phần “fallback”). Chỉnh/đặt thành: CV_ASSUME_DISTID=OEL7.8
Nếu chưa có dòng này, bạn có thể thêm mới vào cuối file. Sau đó, chạy lại installer:
cd $ORACLE_HOME
./runInstaller -silent -waitforcompletion -responseFile /tmp/db_install.rsp
Sau khi runInstaller chạy xong, hệ thống sẽ yêu cầu thực thi 2 script bằng user root để hoàn tất cấu hình Oracle Inventory và ORACLE_HOME.
Chạy orainstRoot.sh (Oracle Inventory): sudo /u01/app/oraInventory/orainstRoot.sh
Chạy root.sh (Oracle Home): sudo /u01/app/oracle/product/19c/dbhome_1/root.sh
9. Tạo Listener (silent)
su - oracle
netca -silent
lsnrctl status
Nếu hiển thị thông báo lỗi: Parsing command line arguments: Parameter "silent" = true Done parsing command line arguments. Oracle Net Services Configuration: Error: Response file not specified. Check the trace file for details: /u01/app/oracle/cfgtoollogs/netca/trace_OraDB19Home1-2601083PM3416.log Oracle Net Services configuration failed. The exit code is 1
Khẳng định chắc chắn là bạn đang chạy netca -silent nhưng chưa truyền -responseFile (hoặc biến ORACLE_HOME sai nên đường dẫn responseFile không tồn tại. Dùng response file mẫu có sẵn trong ORACLE_HOME:
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
ls -l $ORACLE_HOME/assistants/netca/netca.rsp
Nếu file có sẵn → chạy netca silent kèm response file: netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp
Kiểm tra lại Listener: lsnrctl status
Kỳ vọng thấy Listener đang READY và có endpoint TCP (thường port 1521).
# Đăng nhập user oracle
su - oracle
# Set môi trường (rất quan trọng để tránh ORA-01034 do sai ORACLE_SID/ORACLE_HOME)
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
# Tạo database CDB + 1 PDB (silent)
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orcl -sid orcl \
-createAsContainerDatabase true \
-numberOfPDBs 1 -pdbName pdb1 \
-sysPassword 'YourSysPass#123' \
-systemPassword 'YourSystemPass#123' \
-pdbAdminPassword 'YourPdbAdminPass#123' \
-databaseType MULTIPURPOSE \
-storageType FS \
-datafileDestination /u01/app/oracle/oradata \
-redoLogFileSize 200 \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-memoryMgmtType auto_sga \
-totalMemory 2048 \
-emConfiguration NONE
Với:
dbca -silent -createDatabase→ Tạo database mới và chạy không cần giao diện. -templateName General_Purpose.dbc→ Dùng mẫu “database dùng chung” (phổ biến nhất). -gdbname orcl -sid orcl → Đặt tên database/instance là orcl (tên để quản lý + chạy process). -createAsContainerDatabase true → Tạo theo kiểu CDB (khung chứa) – chuẩn của Oracle 19c. -numberOfPDBs 1 -pdbName pdb1 → Tạo thêm 1 PDB tên pdb1 (DB con để app kết nối vào). -sysPassword ... → Mật khẩu user SYS (quyền cao nhất). -systemPassword ...→ Mật khẩu user SYSTEM (quản trị phổ biến). -pdbAdminPassword ...→ Mật khẩu admin của PDB (thường là PDBADMIN). -databaseType MULTIPURPOSE → Database dùng chung nhiều mục đích (web/app/báo cáo…). -storageType FS → Lưu dữ liệu trên filesystem bình thường (không dùng ASM). -datafileDestination /u01/app/oracle/oradata→ Thư mục chứa file dữ liệu database. -redoLogFileSize 200→ Mỗi redo log size 200MB (file ghi thay đổi). -characterSet AL32UTF8→ Charset chính: UTF-8 (hỗ trợ tiếng Việt tốt). -nationalCharacterSet AL16UTF16→ Charset cho NCHAR/NVARCHAR: UTF-16. -memoryMgmtType auto_sga→ Oracle tự quản lý SGA (bộ nhớ chính của DB). -totalMemory 2048→ Cấp tổng RAM cho DB khoảng 2GB. -emConfiguration NONE→ Không cài/không bật Enterprise Manager.Kết quả: tạo CDB orcl + PDB pdb1, dữ liệu nằm ở /u01/app/oracle/oradata, dùng UTF-8, RAM 2GB.
Test sau khi DBCA chạy xong:
sqlplus / as sysdba
select name, open_mode from v$database;
show pdbs;
11. Auto-start khi reboot
11.1. Bật trong /etc/oratab: sudo sed -i 's/^\(orcl:.*:\)N/\1Y/' /etc/oratab
11.2. systemd service
sudo tee /etc/systemd/system/oracle19c.service > /dev/null <<'EOF'
[Unit]
Description=Oracle Database 19c
After=network.target
[Service]
Type=forking
User=oracle
Group=oinstall
ExecStart=/u01/app/oracle/product/19c/dbhome_1/bin/dbstart /u01/app/oracle/product/19c/dbhome_1
ExecStop=/u01/app/oracle/product/19c/dbhome_1/bin/dbshut /u01/app/oracle/product/19c/dbhome_1
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now oracle19c

