Install Oracle 12c R2 on CentOS

Cài đặt GUI

Đầu tiên cần cài đặt giao diện GUI cho CentOS, làm theo bài hướng dẫn sau: Install Gnome 3 GUI on RHEL, CentOS

Download bộ cài

Download bộ cài Oracle 12c từ trang chủ của Oracle hoặc bằng link Google Drive tại đây:

Linux 64 bit 12.2.0.1

Thiết lập môi trường cài đặt

Hostname

Thiết lập hostname

sudo hostnamectl set-hostname your-new-hostname
sudo reboot

Ví dụ:

sudo hostnamectl set-hostname oracle.travis

Chỉnh sửa file hosts:

sudo nano /etc/hosts

/etc/hosts

192.168.0.1 oracle.travis  oracle

Bấm `Ctrl+O` và `Ctrl+X` để thực hiện lưu lại và thoát trình edit văn bản nano.

Cấu hình hệ thống

Chỉnh sửa file sysctl.conf:

sudo nano /etc/sysctl.conf

Bổ sung thêm nội dung sau vào cuối file: /etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586

Apply nội dung sửa đổi:

sudo /sbin/sysctl -p

Cấu hình giới hạn tài khoản

Chỉnh sửa file limits.conf:

sudo nano /etc/security/limits.conf

Bổ sung thêm nội dung sau vào cuối file: /etc/security/limits.conf

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
oracle soft stack 10240

Apply cấu hình:

sudo nano /etc/pam.d/login

Bổ sung thêm dòng sau nếu chưa có: /etc/pam.d/login

session    required     pam_limits.so

Các gói thư viện

Cài đặt các gói package cần thiết:

sudo yum install -y binutils compat-libstdc++-33 compat-libstdc++-33.i686 gcc gcc-c++ glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libaio libaio.i686 libaio-devel libaio-devel.i686 libXext libXext.i686 libXtst libXtst.i686 libX11 libX11.i686 libXau libXau.i686 libxcb libxcb.i686 libXi libXi.i686 make sysstat unixODBC unixODBC-devel zlib-devel elfutils-libelf-devel

Tài khoản cài đặt

Khởi tạo tài khoản cài đặt, thiết lập mật khẩu tài khoản oracle:

sudo groupadd -g 54321 oinstall
sudo groupadd -g 54322 dba
sudo groupadd -g 54323 oper
sudo useradd -g oinstall -G dba,oper oracle
sudo passwd oracle

Nhập mật khẩu cho tài khoản oracle. Chỗ này nên nhập mật khẩu dễ nhớ chút, vì các bước tiếp theo sẽ dùng thường xuyên. Sau khi cài đặt thành công đặt lại mật khẩu mạnh cho tài khoản cũng chưa muộn 🙂

Chế độ bảo mật truy cập

Chuyển chế độ selinux sang permissive:

sudo nano /etc/selinux/config

Sửa giá trị SELINUX thành như sau: /etc/selinux/config

SELINUX=permissive

Nếu thiết lập hiện tại của hệ điều hành đang là disabled, cần khởi động lại server:

sudo reboot

Apply thiết lập cho session hiện tại:

sudo setenforce Permissive

Firewall

Tắt firewall để việc cài đặt được thuận tiện. Sau khi cài đặt thành công sẽ thiết lập lại firewall sau.

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Thư mục cài đặt

Tạo thư mục cài đặt và gán quyền truy cập:

mkdir -p /u01/app/oracle/product/11.2.0.1/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01

Đăng nhập tài khoản oracle, cấu hình các biến môi trường cho user cài đặt:

nano /home/oracle/.bash_profile

Bổ sung nội dung sau xuống dưới cùng: /home/oracle/.bash_profile

# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
# Change ORACLE_HOSTNAME to your machine hostname
ORACLE_HOSTNAME=oracle.travis; export ORACLE_HOSTNAME
# Change ORACLE_UNQNAME to your database name, usually is `orcl`, default value of oracle
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1/db_1; export ORACLE_HOME
# Change ORACLE_SID to match your SID you will setup create when installing oracle
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Apply cấu hình:

source /home/oracle/.bash_profile

Sử dụng công cụ SCP để upload file cài đặt đã tải ở trên lên server, sau đó giải nén sẽ được thư mục database chưa bộ cài.

unzip linuxx64_12201_database.zip -d /stage/

Nếu chưa có lệnh unzip, có thể cài đặt thông qua lệnh yum.

Cài đặt

Cài đặt bằng giao diện

Truy cập giao diện GUI để cài đặt bằng tài khoản oracle, khởi chạy terminal, di chuyển tới thư mục database ở trên, chạy lệnh install để tiến hành cài đặt.

./runInstaller

Gỡ lỗi

Trong quá trình cài đặt có thể sẽ xuất hiện vài lỗi, trong đó có 2 lỗi thường gặp như sau:

Lỗi liên quan tới file ins_emagent.mk

Sử dụng tài khoản oracle.

Để fix lỗi này, thực hiện chỉnh sửa lại file ins_emagent.mk

nano $ORACLE_HOME/sysman/lib/ins_emagent.mk

Nhấn tổ hợp phím `Ctrl+W`, tìm kiếm từ khóa `MK_EMAGENT_NMECTL`

Thay đổi giá trị từ `$(MK_EMAGENT_NMECTL)` thành `$(MK_EMAGENT_NMECTL) -lnnz11`

Quay trở lại giao diện GUI cài đặt, bấm nút `Retry` để tiếp tục.

Lỗi liên quan tới file ins_ctx.mk

Sử dụng tài khoản root.

Tạo file fix_ctx.sh

nano fix_ctx.sh

Nhập vào nội dung sau: fix_ctx.sh

# Fix ctx/lib/ins_ctx.mk
 
ORACLE_HOME=/u01/app/oracle/product/11.2.0.1/db_1
 
cat << __EOF__ > /tmp/memcpy_wrap.c
#include <stddef.h>
#include <string.h>
 
asm (".symver wrap_memcpy, memcpy@GLIBC_2.14");
void *wrap_memcpy(void *dest, const void *src, size_t n) {
return memcpy(dest, src, n);
}
__EOF__
 
if [[ -e "${ORACLE_HOME}/ctx/lib/ins_ctx.mk" ]]; then
sed -i -e 's/$(INSO_LINK)/$(INSO_LINK) -Wl,--wrap=memcpy_wrap $(ORACLE_HOME)/ctx/lib/memcpy_wrap.o/g' ${ORACLE_HOME}/ctx/lib/ins_ctx.mk
gcc -c /tmp/memcpy_wrap.c -o ${ORACLE_HOME}/ctx/lib/memcpy_wrap.o && rm /tmp/memcpy_wrap.c
fi

Lưu lại. Chạy file để sửa lỗi:

chmod +x fix_ctx.sh
./fix_ctx.sh

Quay trở lại giao diện GUI cài đặt, bấm nút `Retry` để tiếp tục.

Hoàn thành cài đặt

Kết thúc cài đặt

Sử dụng tài khoản root để thực hiện các lệnh sau theo hướng dẫn của cài đặt:

cd /u01/app/oraInventory
./orainstRoot.sh
cd /u01/app/oracle/product/11.2.0.1/db_1/
./root.sh

Cấu hình oratab

sudo nano /etc/oratab

Đổi giá trị `N` thành `Y` như dòng sau: /etc/oratab

orcl:/u01/app/oracle/product/11.2.0.1/db_1:Y

Cấu hình listener

Sử dụng tài khoản oracle.

Kiểm tra lại cấu hình listener để đảm bảo kết nối từ xa thành công:

nano /u01/app/oracle/product/11.2.0.1/db_1/network/admin/listener.ora

Thiết lập giá trị HOST thành domain hoặc hostname của server. Như trong ví dụ được cấu hình là domain. listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.travis)(PORT = 1521))
    )
  )
 
ADR_BASE_LISTENER = /u01/app/oracle

Cấu hình oracle service

Sử dụng tài khoản root.

Tạo service phục vụ việc start, stop, kiểm tra trạng thái database dễ dàng hơn như sau:

sudo nano /etc/systemd/system/oracle-rdbms.service

Nhập vào nội dung sau: oracle-rdbms.service

# /etc/systemd/system/oracle-rdbms.service
# Invoking Oracle scripts to start/shutdown Instances defined in /etc/oratab
# and starts Listener
 
[Unit]
Description=Oracle Database(s) and Listener
Requires=network.target
 
[Service]
Type=forking
Restart=no
ExecStart=/u01/app/oracle/product/11.2.0.1/db_1/bin/dbstart /u01/app/oracle/product/11.2.0.1/db_1
ExecStop=/u01/app/oracle/product/11.2.0.1/db_1/bin/dbshut /u01/app/oracle/product/11.2.0.1/db_1
User=oracle
 
[Install]
WantedBy=multi-user.target

Start service oracle:

# Enable service for automatically startup
sudo systemctl enable oracle-rdbms
# Start service now
sudo systemctl start oracle-rdbms
# Check service status
systemctl status oracle-rdbms

Bây giờ, có thể sử dụng sqlplus để khởi tạo schema và user cho database được rồi.

sqlplus / as sysdba

[alert type=”error” title=”Chú ý”] 1. Thiết lập lại mật khẩu mạnh cho account oracle. 2. Thiết lập lại firewall. Hạn chế tối đa các truy cập để đảm bảo an toàn cho máy chủ cơ sở dữ liệu. [/alert]

Share this
Send this to a friend