Cách cài đặt Oracle 11g trên Ubuntu Linux: Hướng dẫn chi tiết
Oracle Database là phần mềm quản lý cơ sở dữ liệu đa nền tảng đáng tin cậy do Oracle Corporation phát triển. Phần mềm này mang lại nhiều ưu điểm, bao gồm hiệu suất cao, chức năng đa dạng, hỗ trợ cụm máy chủ, hỗ trợ PL/SQL, v.v. Oracle Database (sẽ được gọi tắt là Oracle trong bài viết này) có thể được cài đặt trên Solaris, Windows và Linux. Việc cài đặt trên Windows là lựa chọn đơn giản nhất, trong khi việc cài đặt Oracle trên Solaris và Linux đòi hỏi phải thực hiện cấu hình thủ công trước khi cài đặt. Đối với các bản phân phối Linux, Oracle khuyến nghị cài đặt cơ sở dữ liệu Oracle trên Red Hat, Oracle Linux và SUSE Linux Enterprise Server.
Tuy nhiên, bạn cũng có thể cài đặt Oracle trên Ubuntu Linux và OpenSUSE Linux. Ubuntu là một bản phân phối Linux phổ biến được sử dụng rộng rãi trên toàn thế giới và bài viết trên blog hôm nay sẽ cung cấp hướng dẫn từng bước về cách cài đặt Oracle trên Ubuntu. Trong hướng dẫn này, chúng ta sẽ cài đặt cơ sở dữ liệu Oracle Enterprise Edition (EE) 11g R2 trên Ubuntu.
Chuẩn bị Ubuntu Linux
Trong hướng dẫn này, chúng ta sẽ sử dụng một bản cài đặt mới của Ubuntu 16.04.6 . Hệ điều hành đã được cài đặt trên máy ảo VMware mà không kích hoạt tùy chọn “ Tải xuống các bản cập nhật trong khi cài đặt Ubuntu ” và không sử dụng tùy chọn “ Cài đặt phần mềm của bên thứ ba ” trong quá trình triển khai hệ điều hành.
Nếu bạn chưa từng cài đặt Oracle trên Linux trước đây, bạn nên tìm hiểu cách Cài đặt Oracle trên Ubuntu trên máy ảo trước khi cài đặt Oracle trên máy tính vật lý hoặc máy chủ.
Nếu bạn sử dụng máy ảo VMware, đừng quên cài đặt VMware Tools. Bạn cũng có thể sử dụng máy ảo VirtualBox và Hyper-V.
Đảm bảo rằng bạn đã chọn múi giờ chính xác trong quá trình cài đặt. Múi giờ trong ví dụ này là GMT 0 (London).
Bạn có thể kiểm tra múi giờ bằng lệnh:
timedatectl
Kiểm tra phiên bản Ubuntu:
lsb_release -a
Kết quả hiển thị như sau trong ví dụ của chúng tôi:
Trong hướng dẫn này về cách cài đặt Oracle 11g trên Ubuntu, các thông số phần cứng máy ảo sau được sử dụng:
- CPU: 1 CPU
- RAM: 4 GB
- Ổ cứng: 40 GB
user1 là người dùng thông thường trong ví dụ này ( user1 được tạo ra trong quá trình cài đặt Ubuntu và được sử dụng để đăng nhập vào Ubuntu).
Các gói phần mềm sau đã được cài đặt:
- vim , trình soạn thảo văn bản
- net-tools , các công cụ quản lý mạng
- openssh-server , máy chủ SSH cho phép bạn kết nối từ xa với giao diện dòng lệnh (terminal) của Linux
Nếu hệ thống Ubuntu Linux của bạn chưa cài đặt các gói này, bạn có thể cài đặt chúng bằng lệnh:
sudo apt-get install -y vim net-tools openssh-server
Máy chủ SSH được cài đặt để thuận tiện. Bạn nên thực hiện nhiều lệnh trong giao diện dòng lệnh trước khi sử dụng trình cài đặt Oracle trên Ubuntu.
Để kích hoạt xác thực bằng mật khẩu, hãy chỉnh sửa tệp sshd_config :
vim /etc/ssh/sshd_config
Bỏ dấu bình luận khỏi dòng (xóa ký tự “#” ở đầu dòng):
PasswordAuthentication yes
Lưu thay đổi và thoát bằng cách nhấn phím Esc trong vim và nhập :wq
Khởi động lại dịch vụ sshd (daemon) bằng cách chạy lệnh với quyền root:
sudo service ssh restart
Cấu hình tệp hoán đổi (Swap File)
Ubuntu 16 sử dụng phân vùng hoán đổi theo mặc định. Bạn có thể tùy chỉnh kích thước của phân vùng hoán đổi khi cài đặt Ubuntu. Nếu bạn đã chọn các tùy chọn phân vùng mặc định hoặc chọn kích thước phân vùng swap không chính xác, bạn vẫn có thể tạo một tệp swap có kích thước tùy chỉnh và sử dụng tệp swap này thay cho phân vùng swap hiện có. Kích thước swap nên bằng gấp đôi dung lượng RAM. Nếu bạn định cài đặt Oracle trên Ubuntu với 4 GB RAM, bạn nên chuẩn bị một tệp swap hoặc phân vùng swap có dung lượng 8 GB. Hãy cùng tạo tệp swap 8 GB.
Tạm thời vô hiệu hóa việc sử dụng vùng swap:
sudo swapoff -a
Tạo tệp mới dung lượng 8 GB bằng công cụ ` ` `dd` ` `:
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
Đặt tệp 8 GB vừa tạo làm tệp swap:
sudo mkswap /swapfile
Kích hoạt lại việc sử dụng swap:
sudo swapon /swapfile
Kiểm tra dung lượng vùng swap sau khi tạo tệp swap mới:
grep SwapTotal /proc/meminfo
Cấu hình cài đặt mạng
Theo mặc định, Ubuntu 16 sẽ tự động lấy địa chỉ IP cho giao diện mạng (nếu có máy chủ DHCP trong mạng). Bạn cần thiết lập địa chỉ IP tĩnh và cấu hình tên máy chủ trước khi có thể cài đặt Oracle trên Ubuntu.
Kiểm tra cấu hình IP hiện tại:
ifconfig
Trong kết quả hiển thị, bạn có thể thấy tên các bộ điều hợp mạng và địa chỉ IP. Trong trường hợp của chúng tôi, tên của giao diện mạng cần thiết là ens33 .
Cấu hình địa chỉ IP tĩnh
Chỉnh sửa tệp cấu hình giao diện mạng bằng vim :
sudo vim /etc/network interfaces
Địa chỉ IP tĩnh cần thiết để cài đặt cơ sở dữ liệu Oracle trên Ubuntu là 192.168.101.11 trên giao diện hiện tại của máy Linux trong ví dụ này. Chỉnh sửa tệp cấu hình như sau:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.101.11
netmask 255.255.255.0
gateway 192.168.101.2
dns-nameservers 192.168.101.2 8.8.8.8
Lưu thay đổi và thoát.
Áp dụng các thay đổi:
sudo /etc/init.d/networking restart
Hoặc khởi động lại máy:
init 6
Kiểm tra xem các thiết lập IP mới đã được áp dụng chưa:
ifconfig
Hoặc:
hostname -I
Sau khi kiểm tra cấu hình địa chỉ IP, hãy kiểm tra tên máy chủ.
Kiểm tra tên máy chủ
Trong trường hợp của chúng tôi, tên máy chủ được sử dụng để cài đặt Oracle trên Ubuntu là ubuntu-oracle11 .
Kiểm tra tên máy chủ hiện tại:
hostnamectl
Nếu bạn đã quên cấu hình tên máy chủ trong quá trình cài đặt Ubuntu hoặc muốn thay đổi tên máy chủ vì lý do khác, bạn vẫn có thể thực hiện điều này.
Để đổi tên máy chủ và đặt tên máy chủ mới ( ubuntu-oracle11 ), hãy chạy lệnh:
sudo hostnamectl set-hostname ubuntu-oracle11
Kiểm tra xem tên máy chủ mới đã được áp dụng chưa:
less /etc/hostname
Chỉnh sửa tệp hosts:
sudo vim /etc/hosts
Nội dung của tệp /etc/hosts phải trông như sau:
127.0.0.1 localhost
127.0.1.1 ubuntu-oracle11
Khởi động lại máy: init 6
Hãy thử thực hiện lệnh ping đến tên máy chủ đã định nghĩa trên máy Ubuntu của bạn:
ping ubuntu-oracle11
Cấu hình môi trường cho Oracle
Để cài đặt Oracle trên Ubuntu, bạn cần cấu hình môi trường Linux: tạo người dùng và nhóm hệ thống, cấu hình các tham số nhân hệ điều hành, thiết lập cấu hình hệ thống, đặt biến môi trường cho người dùng, xác định giới hạn của shell, tạo liên kết tượng trưng và cài đặt các gói phần mềm cần thiết.
Tạo người dùng và nhóm
Mở bảng điều khiển cục bộ hoặc kết nối với bảng điều khiển Linux qua SSH với tư cách người dùng thông thường, sau đó lấy quyền root :
sudo -i
Các lệnh dưới đây phải được thực thi với tư cách root .
Thêm các nhóm cần thiết cho Oracle.
Tạo nhóm Oracle Inventory :
groupadd oinstall
Tạo nhóm Oracle DBA :
groupadd dba
Tạo thư mục home cho người dùng Oracle:
mkdir /home/oracle/
Tạo thư mục để cài đặt Oracle:
mkdir -p /u01/app/oracle
Sau đó, tạo tài khoản người dùng Oracle là thành viên của nhóm dba , có thư mục home tại /home/oracle/ và sử dụng /bin/bash làm vỏ lệnh mặc định:
useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle
Đặt mật khẩu cho người dùng oracle (đừng quên mật khẩu này):
passwd oracle
Đặt oracle làm chủ sở hữu của thư mục gốc Oracle và thư mục cài đặt Oracle. Người dùng oracle là thành viên của nhóm oinstall .
chown -R oracle:oinstall /home/oracle
chown -R oracle:oinstall /u01/app/oracle
Lưu ý : Không giống như Oracle 10, việc tạo nhóm nobody không cần thiết đối với Oracle 11.
Tạo thư mục cho Oracle Inventory:
mkdir -p /u01/app/oraInventory
Đặt người dùng oracle làm chủ sở hữu cho thư mục Oracle Inventory:
chown -R oracle:oinstall /u01/app/oraInventory
Cấu hình các tham số kernel
Các tham số kernel tùy chỉnh là bắt buộc để cài đặt Oracle trên Ubuntu và các tham số này ảnh hưởng đến hiệu suất của Oracle. Các tham số bộ nhớ chia sẻ, bao gồm kích thước tối thiểu và tối đa, số lượng phân đoạn bộ nhớ chia sẻ, và các semaphore (có thể coi là cờ cho bộ nhớ chia sẻ) phải được tùy chỉnh theo tài liệu hướng dẫn của Oracle. Bạn cũng cần thiết lập số lượng tệp tối đa được phép mở cùng lúc, số lượng kết nối mạng đồng thời tối đa, cũng như kích thước bộ đệm gửi và nhận mạng. Các tham số kernel được đề cập có thể được phân loại thành ba nhóm: các tham số liên quan đến kernel ( kernel ), các tham số liên quan đến mạng ( network ), và các trình xử lý tệp ( fs ). Chỉnh sửa tệp /etc/sysctl.conf để ghi đè các tham số của nhân Linux:
vim /etc/sysctl.conf
Thêm các dòng được hiển thị bên dưới vào cuối tệp cấu hình này.
# ============================
# Oracle 11g
# ============================
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmni = 4096
# Replace kernel.shmmax with the half of your memory size in bytes
# if lower than 4 GB minus 1
# 2147483648 is 2 GigaBytes (4 GB of RAM / 2)
kernel.shmmax=2147483648
#
# Max number of network connections. Use sysctl -a | grep ip_local_port_range to check.
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 = 1048576
#
# The maximum allowed value, set to avoid overhead and input/output errors
fs.aio-max-nr = 1048576
# 512 * Processes
fs.file-max = 6815744
fs.suid_dumpable = 1
#
# To allow dba to allocate hugetlbfs pages
# 1001 is your oinstall group, you can check this id with the grep oinstall /etc/group command
vm.hugetlb_shm_group = 1001
Áp dụng các tham số nhân mà bạn đã thiết lập:
sysctl -p
Cấu hình giới hạn shell
Bạn phải thiết lập các giới hạn shell để cải thiện hiệu suất của phần mềm cơ sở dữ liệu Oracle.
Chỉnh sửa tệp /etc/security/limits.conf tệp:
vim /etc/security/limits.conf
Thêm các dòng sau vào cuối tệp cấu hình:
# Oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
Cột đầu tiên chỉ định người dùng mà các giới hạn được thiết lập.
Cột thứ hai có hai tùy chọn—soft và hard. Soft là giá trị tối đa mà người dùng có thể thiết lập, trong khi hard là giá trị tối đa có thể được cấu hình lại bởi người dùng được định nghĩa (oracle). Nếu người dùng ` ` (`oracle` ` `) đạt đến giá trị thấp giới hạn là 2047 được đặt ở dòng đầu tiên và cần mở rộng giới hạn, người dùng có thể tăng giới hạn lên 16384. Các giá trị cao hơn 16384 không thể được thiết lập bởi người dùng ` ` (`oracle` ` `) nhưng có thể được thiết lập bởi root.
Cột thứ ba xác định các tài nguyên mà các giới hạn đã đặt được áp dụng.
Cột thứ tư xác định số lượng tối đa của tham số tài nguyên được chỉ định trong cột thứ ba.
Cấu hình PAM
Đảm bảo rằng tệp cấu hình /etc/pam.d/login chứa dòng sau:
session required pam_limits.so
Bạn có thể thực hiện điều này bằng lệnh:
cat /etc/pam.d/login | grep pam_limits.so
Nếu dòng được đề cập bị thiếu, hãy thêm dòng này thủ công.
Thiết lập cấu hình vỏ lệnh (shell profile)
Các biến môi trường toàn hệ thống được thiết lập trong cấu hình vỏ lệnh bash toàn cục, được định nghĩa trong tệp cấu hình /etc/profile .
Chỉnh sửa /etc/profile và thiết lập một số tham số cần thiết cho oracle trên toàn hệ thống và vĩnh viễn:
vim /etc/profile
Thêm các dòng sau:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Lưu ý : Việc nắm rõ thời điểm sử dụng từng tệp cấu hình shell là rất hữu ích vì sau này bạn sẽ cần cấu hình một profile chứa các biến môi trường cho người dùng oracle .
Shell đăng nhập Bash tải cấu hình từ các tệp sau theo thứ tự thích hợp:
- /etc/profile
- ~/.bash_profile
- ~/.bash_login
- ~/.profile
/etc/profile có thể được coi là tệp cấu hình toàn cục cho vỏ đăng nhập bash.
./bash_profile được áp dụng cho các vỏ đăng nhập bash, ví dụ như khi bạn đăng nhập trực tiếp vào giao diện dòng lệnh của Linux bằng bàn phím kết nối với máy tính Linux này, hoặc khi mở một phiên console mới sau khi đăng nhập qua terminal SSH.
.profile – tệp này được đọc cho bash và các vỏ lệnh khác như sh .
Vỏ lệnh tương tác không đăng nhập của Bash tải cấu hình từ ~/.bashrc
Điều này có nghĩa là nếu bạn đã đăng nhập vào máy Linux của mình (ví dụ: bạn đã đăng nhập vào Ubuntu bằng giao diện đồ họa) và sau đó mở một cửa sổ console (terminal) mới, thì cấu hình vỏ lệnh, bao gồm các biến môi trường, sẽ được tải từ tệp .bashrc trước khi bạn có quyền truy cập vào dấu nhắc lệnh.
Vỏ lệnh Bash không đăng nhập và không tương tác tải cấu hình được đặt trong biến môi trường $BASH_ENV . Vỏ lệnh không đăng nhập và không tương tác được sử dụng khi chạy một tập lệnh.
Cài đặt các gói phần mềm cần thiết
Bạn cần cài đặt các gói phần mềm mà Oracle yêu cầu. Hãy cẩn thận khi cài đặt chúng vì việc thiếu một gói phần mềm có thể gây ra lỗi trong quá trình cài đặt Oracle hoặc tạo cơ sở dữ liệu.
Cập nhật cây kho phần mềm:
apt-get update
Cài đặt các gói phần mềm để tránh các lỗi có thể xảy ra trong quá trình cài đặt Oracle trên Ubuntu. Hầu hết các gói phần mềm có thể được cài đặt thông qua trình quản lý gói tiêu chuẩn của Ubuntu từ các kho phần mềm trực tuyến.
apt-get install alien
apt-get install autoconf
apt-get install automake
apt-get install autotools-dev
apt-get install binutils
apt-get install bzip2
apt-get install doxygen
apt-get install elfutils
apt-get install expat
apt-get install gawk
apt-get install gcc
apt-get install gcc-multilib
apt-get install g++-multilib
apt-get install libelf-dev
apt-get install libltdl-dev
apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
apt-get install libpth-dev
apt-get install libpthread-stubs0-dev
apt-get install libstdc++5
apt-get install make
apt-get install openssh-server
apt-get install rlwrap
apt-get install rpm
apt-get install sysstat
apt-get install unixodbc
apt-get install unixodbc-dev
apt-get install unzip
apt-get install x11-utils
apt-get install zlibc
apt-get install libaio1
apt-get install libaio-dev
Vẫn còn một số gói phần mềm cần cài đặt, nhưng để cài đặt chúng, bạn sẽ cần những mẹo và thủ thuật sau.
apt-get install ia32-libs
Khi bạn chạy lệnh để cài đặt gói phần mềm này với apt-get , bạn sẽ thấy thông báo cho biết gói phần mềm này không có sẵn.
Có một gói thay thế có thể được cài đặt thay cho ia32-libs . Hãy cài đặt gói thay thế lib32z1 :
apt-get install lib32z1
Hãy cài đặt gói tiếp theo:
apt-get install libmotif4
Gói này cũng không có sẵn. Bạn nên tải xuống và cài đặt gói này theo cách thủ công. Tải xuống tệp libmotif4_2.3.4-8ubuntu1_amd64.deb từ trang tài nguyên miễn phí. Lưu tệp deb đã tải xuống vào một thư mục tùy chỉnh, ví dụ như /home/user1/Downloads, trước khi cài đặt gói này.
Quy trình cài đặt các gói deb trong Ubuntu như sau (thực thi các lệnh với quyền root):
sudo dpkg -i package_name.deb
sudo apt-get -f install
Trong trường hợp này, chúng ta thực thi các lệnh cài đặt gói với tư cách người dùng thông thường, ví dụ: user1 bằng cách sử dụng sudo . Nhấn Ctrl+D để thoát khỏi phiên làm việc của root và quay lại phiên làm việc của user1 trong terminal.
Chuyển đến thư mục chứa các tệp đã tải xuống:
cd /home/user1/Downloads
Tải xuống tệp bằng liên kết trực tiếp:
wget http://launchpadlibrarian.net/207968936/libmotif4_2.3.4-8ubuntu1_amd64.deb
sudo dpkg -i libmotif4_2.3.4-8ubuntu1_amd64.deb
sudo apt-get -f install
Gói tiếp theo không thể cài đặt tự động:
sudo apt-get install libpthread-stubs0
E: Không thể tìm thấy gói libpthread-stubs0
Tải xuống và hãy cài đặt gói này thủ công.
wget http://launchpadlibrarian.net/154418307/libpthread-stubs0-dev_0.3-4_amd64.deb
sudo dpkg -i libpthread-stubs0-dev_0.3-4_amd64.deb
sudo apt-get -f install
Tương tự, cài đặt gói tiếp theo:
sudo apt-get install lsb-cxx
E: Không thể tìm thấy gói lsb-cxx
Bạn có thể tải xuống gói lsb-cxx thủ công.
wget http://packages.linuxmint.com//pool/upstream/l/lsb/lsb-cxx_4.1+Debian11ubuntu6mint1_amd64.deb
sudo dpkg -i lsb-cxx_4.1+Debian11ubuntu6mint1_amd64.deb
sudo apt-get -f install
Cài đặt thêm một gói nữa:
sudo apt-get install pdksh
E: Gói ‘pdksh’ không có bản cài đặt phù hợp
Quy trình cài đặt gói pdksh cũng tương tự. Gói này có thể được tải xuống tại tại đây.
wget http://launchpadlibrarian.net/200019501/pdksh_50e-2ubuntu1_all.deb
sudo dpkg -i pdksh_50e-2ubuntu1_all.deb
sudo apt-get -f install
Oracle 11g yêu cầu cài đặt phiên bản 32-bit của gói libstdc++5 mà Ubuntu 16 không cài đặt tự động. Dưới đây là cách bạn có thể cài đặt gói này thủ công.
Các lệnh tiếp theo được thực thi với tư cách là root . Tạo một thư mục tạm thời để tải xuống gói:
mkdir /tmp/libstdc++5
cd /tmp/libstdc++5
Tải xuống gói (các liên kết đến các gói 32-bit và 64-bit được hiển thị):
wget http://mirrors.edge.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-30_i386.deb
wget http://mirrors.edge.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-30_amd64.deb
Cài đặt các gói đã tải xuống bằng dpkg :
dpkg --force-architecture -i libstdc++5_3.3.6-30_i386.deb
Lưu ý : Nếu các liên kết không hoạt động, các phiên bản mới hơn của gói có thể đã được phát hành thay thế cho các phiên bản cũ. Trong trường hợp này, hãy truy cập trang web bằng trình duyệt và sao chép các liên kết chính xác đến các gói deb cần thiết:
http://mirrors.edge.kernel.org/ubuntu/pool/universe/g/gcc-3.3/
Khởi động lại máy Linux để áp dụng các thay đổi. init 6
Tạo liên kết tượng trưng
Bạn cần tạo các liên kết tượng trưng (symlinks) để cấu trúc tệp và thư mục được sử dụng trong Ubuntu tương tự như cấu trúc tệp trong Red Hat. Tạo các liên kết tượng trưng này để cấu trúc hệ thống tệp trông giống hệt cấu trúc hệ thống tệp của Red Hat, nhằm tránh các lỗi xảy ra trong quá trình cài đặt Oracle.
Chạy các lệnh với quyền root:
mkdir /usr/lib64
ln -s /etc /etc/rc.d
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/basename /bin/basename
ln -s /usr/bin/rpm /bin/rpm
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
ln -sf /bin/bash /bin/sh
ln -s /etc/rc0.d /etc/rc.d/rc0.d
ln -s /etc/rc2.d /etc/rc.d/rc2.d
ln -s /etc/rc3.d /etc/rc.d/rc3.d
ln -s /etc/rc4.d /etc/rc.d/rc4.d
ln -s /etc/rc5.d /etc/rc.d/rc5.d
ln -s /etc/rc6.d /etc/rc.d/rc6.d
ln -s /etc/init.d /etc/rc.d/init.d
Các lệnh trên giúp ngăn ngừa các lỗi, chẳng hạn như:
- genclntsh: Không thể liên kết libclntsh.so.11.1 trong tệp make cho rdbms/lib/ins_rdbms.mk do thiếu thư viện: /usr/bin/ld: không thể tìm thấy /usr/lib64/libpthread_nonshared.a bên trong
- lib//libagtsh.so: tham chiếu không xác định đến `nnfyboot’ trong make: rdbms/lib/dg4odbc] Lỗi 1
Bây giờ hãy ngăn chặn thêm một lỗi nữa: /lib64/libgcc_s.so.1: Tệp hoặc thư mục không tồn tại, trong khi tạo lib/liborasdkbase.so.11.1 trong ins_rdbms.mk . Truy cập vào thư mục /lib64 và thực thi lệnh:
cd /lib64
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 .
Đừng bỏ sót dấu chấm ở cuối lệnh.
Đặt phiên bản Linux là Red Hat Linux release 5 trong tệp /etc/redhat-release . Các bản phân phối Red Hat Linux lưu trữ phiên bản của chúng trong tệp đó.
echo 'Red Hat Linux release 5' > /etc/redhat-release
Cấu hình hồ sơ người dùng Oracle
Bây giờ bạn cần cấu hình môi trường người dùng cho oracle người dùng.
Đăng nhập với tư cách oracle nếu bạn đã mở giao diện điều khiển với tư cách người dùng khác:
su oracle
Chạy các lệnh với tư cách oracle :
cd
vim ~/.bashrc
Thêm các dòng sau vào tệp .bashrc :
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
# Enter your hostname
ORACLE_HOSTNAME=ubuntu-oracle11; export ORACLE_HOSTNAME
ORACLE_UNQNAME=ORADB11G; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=ORADB11G; export ORACLE_SID
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
umask 022
Áp dụng các thiết lập:
source ~/.bashrc
Bạn nên khởi động lại Ubuntu ngay bây giờ. Lưu ý rằng các thiết lập sẽ được áp dụng sau khi khởi động lại ngay cả khi không chạy lệnh `source ~/.bashrc`.
init 6
Chuẩn bị trình cài đặt Oracle
Chúng ta đã gần hoàn tất các bước chuẩn bị để cài đặt Oracle. Chỉ còn một vài bước nữa là bạn có thể khởi chạy trình cài đặt và cài đặt Oracle trên Ubuntu. Sau khi khởi động lại máy Ubuntu, hãy đăng nhập với tài khoản oracle trong giao diện người dùng đồ họa của Ubuntu.
Mở trình duyệt web.
Trong ví dụ này, hai tệp đã tải xuống được lưu vào /home/oracle/Downloads cho thuận tiện: linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
Mở cửa sổ dòng lệnh trong Ubuntu và chạy các lệnh sau với tư cách người dùng hoặc oracle. Chuyển đến thư mục chứa các tệp đã tải xuống:
cd /home/oracle/Downloads
hoặc cd ~/Downloads/
Giải nén các tệp cài đặt từ các tệp nén zip đã tải xuống:
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
Các tệp đã giải nén được lưu trữ tại:
/home/oracle/Downloads/database
Bây giờ bạn đã sẵn sàng chạy trình cài đặt và cài đặt Oracle trên Ubuntu.
Cài đặt Oracle
Truy cập vào thư mục chứa các tệp cài đặt đã tải xuống. Chạy các lệnh như oracle trong cửa sổ terminal được mở trong phiên làm việc GUI.
cd /home/oracle/Downloads/database
Chạy trình cài đặt Oracle:
./runInstaller
1. Cấu hình Cập nhật Bảo mật
Bỏ chọn ô “ Tôi muốn nhận các bản cập nhật bảo mật qua My Oracle Support ”.
Nhấp vào Tiếp theo để chuyển sang bước tiếp theo của trình hướng dẫn cài đặt Oracle.
Bạn sẽ thấy thông báo: Bạn chưa cung cấp địa chỉ email. Bạn có muốn không nhận thông báo về các vấn đề bảo mật quan trọng trong cấu hình của mình không? Bỏ qua thông báo này và nhấp vào Yes .
2. Tùy chọn cài đặt
Chọn Tạo và cấu hình cơ sở dữ liệu .
3. Lớp hệ thống
Chọn Lớp máy chủ , đây là tùy chọn nâng cao để cài đặt cơ sở dữ liệu Oracle trên Ubuntu.
4. Tùy chọn lưới
Chọn Cài đặt cơ sở dữ liệu phiên bản đơn làm loại cài đặt cơ sở dữ liệu.
5. Loại cài đặt
Chọn Cài đặt nâng cao làm loại cài đặt. Tùy chọn này cho phép bạn thiết lập mật khẩu, bộ ký tự, ngôn ngữ, tùy chọn lưu trữ, v.v.
6. Ngôn ngữ sản phẩm
Chọn các ngôn ngữ cần thiết. Trong ví dụ này, Tiếng Anh và Tiếng Anh (Vương quốc Anh) được chọn.
7. Phiên bản cơ sở dữ liệu
Chọn Phiên bản Enterprise cho cơ sở dữ liệu mà bạn sắp cài đặt.
8. Chọn vị trí cơ sở Oracle
Thông thường, thư mục cơ sở Oracle và thư mục Oracle Home được sử dụng.
Cơ sở Oracle: /u01/app/oracle
Vị trí phần mềm: /u01/app/oracle/product/11.2.0/dbhome_1
9. Tạo thư mục lưu trữ
Thư mục được sử dụng để lưu trữ các tệp cài đặt Oracle được gọi là “thư mục lưu trữ Oracle”.
Thư mục lưu trữ: /u01/app/oraInventory
Tên nhóm oraInventory: oinstall
10. Loại cấu hình
Chọn loại cơ sở dữ liệu bạn muốn tạo:
Mục đích chung / Xử lý giao dịch
11. Mã định danh cơ sở dữ liệu
Bạn có thể định nghĩa cùng một giá trị cho tên cơ sở dữ liệu toàn cục và Mã định danh dịch vụ Oracle.
Tên cơ sở dữ liệu toàn cầu: ORADB11G
Mã định danh dịch vụ Oracle (SID): ORADB11G
12. Tùy chọn cấu hình
Bước này có bốn tab. Bạn có thể thiết lập cấu hình trên từng tab như sau:
Bộ nhớ: Bật Quản lý bộ nhớ tự động (mặc định).
Bộ ký tự: Sử dụng Unicode (AL32UTF8).
Bảo mật: Áp dụng tất cả cài đặt bảo mật mới (mặc định).
Các lược đồ mẫu: Tạo cơ sở dữ liệu với các lược đồ mẫu (tuy nhiên, bạn có thể giữ nguyên giá trị mặc định).
13. Tùy chọn quản lý
Bạn có thể giữ nguyên các tham số mặc định.
14. Lưu trữ cơ sở dữ liệu
Đọc các khuyến nghị hiển thị trong cửa sổ và chọn Hệ thống tệp .
Chỉ định vị trí tệp cơ sở dữ liệu: /u01/app/oracle/oradata
15. Sao lưu và khôi phục
Tại bước này, bạn có thể chọn tùy chọn: Không kích hoạt sao lưu tự động (mặc định).
Sao lưu rất quan trọng, nhưng tốt hơn là nên cấu hình sao lưu cơ sở dữ liệu Oracle sau khi cài đặt Oracle trên Ubuntu.
16. Mật khẩu lược đồ
Bạn có thể chọn Sử dụng cùng một mật khẩu cho tất cả tài khoản . Nhập mật khẩu và xác nhận mật khẩu.
17. Nhóm hệ điều hành
Đọc mô tả hiển thị trong cửa sổ và chọn các nhóm cần thiết.
Nhóm Quản trị viên Cơ sở Dữ liệu (OSDBA): dba
Nhóm Người vận hành Cơ sở Dữ liệu (OSOPER): oinstall
18. Kiểm tra điều kiện tiên quyết
Hiện tại, trình cài đặt Oracle đang kiểm tra xem cấu hình hệ thống có đáp ứng các điều kiện tiên quyết hay không. Các cảnh báo sẽ xuất hiện ở bước này. Tham số nhân hệ điều hành semmni đã được cấu hình ở trên, nhưng trạng thái thất bại vẫn được hiển thị cho tham số này.
Tham số nhân hệ điều hành: semmni Thất bại
Bạn có thể kiểm tra giá trị tham số này để đảm bảo mọi thứ đều chính xác. Kiểm tra tham số semmni bằng lệnh (chạy với quyền root): /sbin/sysctl -a | grep sem
kernel.sem = 250 32000 100 128
hoặc
cat /proc/sys/kernel/sem
250 32000 100 128
Nếu giá trị cuối cùng không nhỏ hơn 128, thì mọi thứ đều ổn và bạn có thể bỏ qua cảnh báo này.
Vì một lý do nào đó, công cụ kiểm tra điều kiện tiên quyết của Oracle không thể xác định rằng tham số semmni là chính xác và các gói phần mềm cần thiết đã được cài đặt. Nếu nội dung cửa sổ Kiểm tra Điều kiện Tiên quyết của bạn tương tự như cửa sổ hiển thị trong ảnh chụp màn hình ở trên, hãy đánh dấu vào ô chọn Bỏ qua Tất cả và nhấp vào Tiếp theo để tiếp tục.
19. Tóm tắt
Kiểm tra tóm tắt cấu hình để đảm bảo rằng bạn đã cấu hình tất cả các thiết lập theo yêu cầu. Bạn có thể lưu tệp phản hồi ( db.rsp ) vì nó có thể hữu ích khi bạn cần cài đặt Oracle trên nhiều máy Linux hoặc nếu bạn định cài đặt Oracle trên Ubuntu Server mà không có giao diện đồ họa (GUI).
Bây giờ bạn có thể theo dõi quá trình trình cài đặt Oracle sao chép tệp cho đến khi trình cài đặt chuyển sang giai đoạn Liên kết các tệp nhị phân .
Liên kết các tệp nhị phân cho Oracle — khắc phục lỗi liên kết và biên dịch
Giai đoạn này là một trong những giai đoạn khó nhất khi cài đặt cơ sở dữ liệu Oracle trên Ubuntu Linux. Khả năng gặp lỗi ở bước này là rất cao. Trong ví dụ hiện tại, chúng tôi gặp phải lỗi sau khi cài đặt Oracle 11g trên Ubuntu 16:
Lỗi khi gọi mục tiêu ‘install’ của tệp makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’. Xem ‘/u01/app/oraInventory/logs/installActions2020-01-22_12-53-06PM.log’ để biết chi tiết .
Lưu ý rằng các lỗi tương tự có thể xảy ra ngay cả khi bạn cài đặt Oracle trên Oracle Linux. Tên tệp nhật ký của bạn sẽ khác.
Lưu ý : Các tệp có .mk phần mở rộng là tệp makefile và được sử dụng để biên dịch các chương trình. Tệp makefile xác định những “phần” nào của chương trình cần được biên dịch và những tệp nào của chương trình phải được biên dịch và liên kết với nhau. Một số thành phần của phần mềm Oracle được viết bằng Java (ví dụ: Oracle Universal Installer có giao diện người dùng đồ họa) và một số thành phần khác được viết bằng C. Các thành phần được viết bằng Java phải được giải thích mà không cần biên dịch (Java là ngôn ngữ đa nền tảng), trong khi các thành phần được viết bằng C phải được biên dịch và liên kết các tệp nhị phân và thư viện là giai đoạn bắt buộc của quá trình này. Oracle sử dụng phương pháp này để tăng tính linh hoạt và cho phép cài đặt Oracle trên các hệ điều hành khác nhau (Windows, Linux, Solaris). Một lợi ích khác là kích thước của trình cài đặt được thu gọn. Nhược điểm là có thể xảy ra lỗi trong giai đoạn liên kết các tệp nhị phân trong quá trình cài đặt Oracle. Trong hầu hết các trường hợp, bạn nên thêm các tham số thích hợp bằng cách chỉnh sửa các tệp .mk để khắc phục các sự cố liên kết.
Hãy cùng tìm hiểu cách khắc phục các lỗi liên kết tệp nhị phân xảy ra khi cài đặt cơ sở dữ liệu Oracle trên Ubuntu Linux.
Đăng nhập với tư cách là oracle qua SSH vào máy Ubuntu và kiểm tra tệp nhật ký:
tail -n 100 /u01/app/oraInventory/logs/installActions2020-01-22_12-53-06PM.log
Khi đọc kết quả nhật ký, hãy chú ý đến dòng giải thích lỗi.
INFO: /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk:11: quy trình cho mục tiêu ‘ctxhx’ đã thất bại
ins_ctx.mk:11 chỉ đến dòng 11 trong tệp ins_ctx.mk .
Hãy mở tệp ins_ctx.mk và kiểm tra dòng 11 của tệp đó.
vim /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
Trong chế độ điều hướng của vim , gõ :set number để xem số dòng.
Hãy tìm dòng số 11.
Khi sử dụng chế độ điều hướng trong vim , bạn có thể tìm chuỗi cần thiết bằng lệnh:
/LINK_CTXHX
Chỉnh sửa phần sau:
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
Dòng số 11 phải được chỉnh sửa như sau:
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
Lưu tệp ins_ctx.mk và thoát khỏi vim .
Bây giờ quay lại cửa sổ lỗi cài đặt Oracle và nhấp vào Retry .
Quá trình cài đặt tiếp tục, nhưng sau vài giây, một lỗi khác xuất hiện khi Xây dựng thư viện Agent :
Lỗi khi gọi mục tiêu ‘agent nmhs’ trong tệp makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk’.
Chạy các lệnh sau với tư cách là oracle để khắc phục vấn đề này:
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
sed -i 's/^(s*$(MK_EMAGENT_NMECTL))s*$/1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
Lưu ý: sed là trình soạn thảo văn bản dạng luồng được sử dụng để tiết kiệm thời gian khi chỉnh sửa các tệp .mk so với việc chỉnh sửa chúng bằng vim hoặc các trình soạn thảo văn bản tương tác khác.
Sau khi chạy hai lệnh trên, hãy nhấp vào Retry trong cửa sổ lỗi cài đặt Oracle. Bạn sẽ thấy rằng lỗi đã được khắc phục và quá trình cài đặt cơ sở dữ liệu Oracle trên Ubuntu Linux đang diễn ra. Tuy nhiên, sau vài giây, một lỗi khác lại xuất hiện khi Linking RDBMS Executables : Lỗi khi gọi mục tiêu ‘all_no_orcl’ trong tệp makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk’.
Hãy chạy các lệnh sau với tư cách là oracle để khắc phục lỗi này và một số lỗi tương tự khác:
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
cd $ORACLE_HOME/lib
ln -s libclient11.a libagtsh.a
$ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0
sed -i 's/^($LD $LD_RUNTIME) ($LD_OPT)/1 -Wl,--no-as-needed 2/g' $ORACLE_HOME/bin/genorasdksh
sed -i 's/^(s*)($(OCRLIBS_DEFAULT))/1 -Wl,--no-as-needed 2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk
sed -i 's/^(TNSLSNR_LINKLINE.*$(TNSLSNR_OFILES)) ($(LINKTTLIBS))/1 -Wl,--no-as-needed 2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/^(ORACLE_LINKLINE.*$(ORACLE_LINKER)) ($(PL_FLAGS))/1 -Wl,--no-as-needed 2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
Sau đó, quay lại cửa sổ lỗi và nhấp vào Thử lại . Lúc này, quá trình cài đặt sẽ tiếp tục mà không gặp lỗi.
Trình hướng dẫn cấu hình cơ sở dữ liệu Oracle (DBCA) sẽ mở ra sau khi hoàn tất giai đoạn Liên kết các tệp nhị phân .
Đang thực thi các tập lệnh cấu hình
Chúng ta đã gần hoàn tất việc cài đặt cơ sở dữ liệu Oracle trên Ubuntu.
Chạy hai tập lệnh này với quyền root :
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
Trong ảnh chụp màn hình bên dưới, bạn có thể thấy các tập lệnh đã được thực thi thành công.
Việc cài đặt cơ sở dữ liệu Oracle đã thành công .
Nếu bạn thấy thông báo này, bạn có thể đóng cửa sổ trình cài đặt Oracle.
Kiểm tra xem Oracle có đang chạy trên Ubuntu không
Mở trình duyệt web trên máy Ubuntu đang chạy Oracle và kiểm tra xem Oracle có đang chạy hay không bằng cách mở giao diện web của Oracle Database Control Manager. Các liên kết sau đây có thể được sử dụng để thực hiện việc này:
https://localhost:1158/em
https://ubuntu-oracle11:1158/em
https://192.168.101.11:1158/em
Bạn cũng có thể thử kết nối với máy Ubuntu đang chạy Oracle từ một máy chủ khác trong mạng của bạn.
Xác định các tham số kết nối.
Tên người dùng : SYS
Mật khẩu : Mật khẩu của bạn đã được đặt trong quá trình cài đặt Oracle
Đăng nhập với tư cách : SYSDBA
Dưới đây là ảnh chụp màn hình của Oracle Enterprise Manager khi Oracle đang chạy đúng cách.
Cấu hình sau khi cài đặt Oracle
Oracle hiện đã được cài đặt, và bây giờ chúng ta cần cấu hình cơ sở dữ liệu để khởi động tự động ngay khi Ubuntu khởi động. Bạn nên chỉnh sửa tệp cấu hình /etc/oratab để thiết lập Oracle khởi động khi hệ thống khởi động.
Chạy lệnh với quyền root.
vim /etc/oratab
Thay thế N bằng Y ở cuối dòng:
ORADB11G:/u01/app/oracle/product/11.2.0/dbhome_1:Y
Các lệnh hữu ích
Trước khi thiết lập Oracle khởi động tự động, bạn nên hiểu cách khởi động các thành phần Oracle thủ công. Điều này cũng sẽ giúp ích cho việc chẩn đoán. Chạy các lệnh này với tư cách người dùng oracle .
Khởi động cơ sở dữ liệu:
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
Dừng cơ sở dữ liệu: $ORACLE_HOME/bin/dbshut $ORACLE_HOME
Khởi động Database Control Enterprise Manager – công cụ cung cấp giao diện web để quản lý cơ sở dữ liệu:
emctl start dbconsole
Dừng Database Control Manager:
emctl stop dbconsole
Kiểm tra trạng thái của Database Control Manager:
emctl status dbconsole
Khởi động listener:
$ORACLE_HOME/bin/lsnrctl start
Dừng listener:
$ORACLE_HOME/bin/lsnrctl stop
Kiểm tra trạng thái của listener:
$ORACLE_HOME/bin/lsnrctl status
Khởi động Trợ lý Cấu hình Cơ sở Dữ liệu (trong môi trường GUI, không phải trong giao diện SSH):
dbca
Có thể cấu hình listener Oracle bằng cách chỉnh sửa tệp:
vim $ORACLE_HOME/network/admin/listener.ora
Kết nối với cơ sở dữ liệu trong giao diện console:
sqlplus / as sysdba;
Tạo tập lệnh khởi động cho Oracle trong Ubuntu
Hãy tìm hiểu cách thiết lập để Oracle tự động khởi động khi Ubuntu khởi động. Sau khi chỉnh sửa /etc/oratab , bạn nên tạo một tập lệnh khởi động trong thư mục /etc/init.d/ .
Tạo tệp mới cho tập lệnh khởi động Oracle trong Ubuntu (chạy lệnh với tư cách root ):
vim /etc/init.d/oracle
Thêm nội dung sau vào tệp đó:
#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
### BEGIN INIT INFO
# Provides: Oracle
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Startup/Shutdown Oracle listener and instance
### END INIT INFO
#ORACLE_UNQNAME="ORADB11G"
#export $ORACLE_UNQNAME
echo "ORACLE_UNQNAME is $ORACLE_UNQNAME"
ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"
ORACLE_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
echo "dbstart"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
echo "lsnrctl start"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
#Optional : for Enterprise Manager software only
echo "emctl start dbconsole"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch /var/lock/oracle
echo "OK - a script has been executed"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
#Optional : for Enterprise Manager software only
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORAClE_HOME/bin/emctl stop dbconsole"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
echo "OK - a script has been executed"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0
Đặt quyền truy cập chính xác:
chown oracle:oinstall /etc/init.d/oracle
chmod 0775 /etc/init.d/oracle
Đảm bảo tập lệnh này khởi động ngay sau khi hệ điều hành khởi động (có sẵn cho các mức chạy mặc định):
update-rc.d oracle defaults
Bạn có thể chỉnh sửa mức ưu tiên khởi động nếu cần.
Chạy tập lệnh để dừng Oracle (bạn có thể chạy tập lệnh này với lệnh root ):
/etc/init.d/oracle stop
Nếu bạn muốn khởi động Oracle, hãy chạy tập lệnh này với lệnh:
/etc/init.d/oracle start
Lưu ý: Hãy chú ý đến dòng sau và các dòng tương tự trong tập lệnh khởi động Oracle:
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
Đầu tiên, chúng ta thiết lập shell để đọc các thiết lập được lưu trữ trong .bashrc hồ sơ hệ thống của người dùng oracle bao gồm các biến như ORACLE_HOSTNAME , ORACLE_BASE , PATH v.v., cần thiết để các thành phần Oracle hoạt động đúng cách. Sau khi các thiết lập bash của người dùng oracle được áp dụng cho phiên shell hiện tại, lệnh tiếp theo sẽ được thực thi để khởi động cơ sở dữ liệu Oracle. Sự khác biệt giữa su - và sulà gì?
user1@hostname:~$ su - username2 – lệnh này khởi chạy phiên shell dòng lệnh với tư cách người dùng đã chọn ( username2 ) cùng các thiết lập của người dùng đó ( username2 ), giống như khi bạn đăng nhập trực tiếp (từ đầu) với tài khoản username2 khi tạo một phiên shell mới. Các biến môi trường của username2 được sử dụng trong phiên shell này.
user1@hostname:~$ su username2 – lệnh này chạy shell dòng lệnh với tư cách người dùng đã chọn ( username2 ) cùng các cài đặt của người dùng hiện tại ( user1 ) và các biến môi trường của user1 được kế thừa bởi username2 trong phiên shell này.
su -c (–command) có nghĩa là lệnh được chỉ định phải được chạy với tư cách người dùng đã chọn.
Khắc phục sự cố
Hãy xem xét một số vấn đề có thể xảy ra khi bạn cài đặt Oracle trên Ubuntu và liệu có phương pháp nào để khắc phục chúng hay không.
ORA-12547: TNS:lost contact
Trình hướng dẫn cấu hình cơ sở dữ liệu (Database Configuration Assistant) không thể tạo cơ sở dữ liệu và xảy ra lỗi.
ORA-12547: TNS:lost contact .
Các tệp nhật ký cho thao tác hiện tại nằm tại :
/u01/app/oracle/cfgtoollogs/dbca/ORADB11G
Kiểm tra tệp nhật ký:
tail -n 100 /u01/app/oracle/cfgtoollogs/dbca/ORADB11G/cloneDBCreation.log
Chú ý đến các chuỗi sau:
oracleORADB11G: lỗi khi tải các thư viện chia sẻ: libaio.so.1: không thể mở tệp đối tượng chia sẻ: Không tìm thấy tệp hoặc thư mục
ORA-12547: TNS: mất kết nối
Một trong những nguyên nhân khiến thông báo lỗi này xuất hiện là do thiếu các thư viện liên quan đến các gói phần mềm tương ứng— libaio1 , libaio-dev . Kiểm tra xem các gói phần mềm được đề cập đã được cài đặt chưa, nếu chưa thì hãy cài đặt chúng:
sudo apt-get install libaio1
sudo apt-get install libaio-dev
Oracle không khởi động tự động khi Ubuntu khởi động
Có thể bạn đang chạy tập lệnh với tư cách root và thấy thông báo:
“Biến môi trường ORACLE_UNQNAME chưa được định nghĩa. Vui lòng đặt ORACLE_UNQNAME thành tên duy nhất của cơ sở dữ liệu”.
Trong trường hợp này, Oracle sẽ không khởi động tự động khi Ubuntu khởi động. Nếu thông báo lỗi này xuất hiện khi khởi động Oracle Enterprise Manager 11g Database Control, bạn nên kiểm tra các biến môi trường.
How to check the ORACLE_UNQNAME?
Bạn có thể kiểm tra ORACLE_UNQNAME (chạy lệnh với tư cách oracle ).
sqlplus / as sysdba;
SQL> SELECT name, db_unique_name FROM v$database;
SQL> exit
Chỉnh sửa /etc/profile (với tư cách root): vim /etc/profile
Thêm dòng sau vào cuối tệp /etc/profile :
ORACLE_UNQNAME=ORADB11G; export ORACLE_UNQNAME
Khởi động lại máy Ubuntu đã cài đặt Oracle.
Giờ đây, lỗi này sẽ không còn xuất hiện khi chạy tập lệnh và Oracle sẽ khởi động sau khi chạy lệnh /etc/init.d/oracle start theo cách thủ công. Tuy nhiên, Oracle vẫn không tự động khởi động khi khởi động Ubuntu Linux. Nguyên nhân của vấn đề này là do các biến môi trường chưa được thiết lập cho shell nơi tập lệnh đang chạy. Xem phần giải thích về tập lệnh khởi động Oracle ở trên và kiểm tra kỹ tập lệnh của bạn.
Có thể cài đặt Oracle 11g trên Ubuntu 18 không?
Ubuntu 18 có các phiên bản mới hơn của thư viện hệ thống Linux, tương thích rất tốt với Oracle 11g R2. Khả năng cao là bạn sẽ gặp lỗi ở giai đoạn Link Binaries của quá trình cài đặt Oracle. Ví dụ:
Lỗi khi gọi mục tiêu ‘links proc gen_pcscfg’ trong tệp makefile ‘ u01/app/oracle/product/11.2.0/dbhome_1/precomp/lib/ins_precomp.mk ‘.
Đó là lý do tại sao Ubuntu 16 được sử dụng trong hướng dẫn này. Tất nhiên, bạn có thể thử cài đặt Oracle 11g trên Ubuntu 18 nhưng hãy chuẩn bị tinh thần cho một số khó khăn. Bạn có thể cần cài đặt các gói và thư viện của các phiên bản cũ hơn, từ đó hạ cấp hệ điều hành Ubuntu.
Quy trình cài đặt cơ sở dữ liệu Oracle trên Ubuntu 18 tương tự như trên Ubuntu 16 (đối với Oracle 11g R2 EE). Trong giai đoạn Link Binaries khi xảy ra lỗi, bạn nên phân tích nhật ký, tra cứu tài liệu và khắc phục lỗi liên kết.
Lệnh sau đây có thể hữu ích để liên kết lại các thư viện theo cách thủ công sau khi chỉnh sửa các tệp:
$ORACLE_HOME/bin/relink all
Kết luận
Bài viết trên blog này đã hướng dẫn bạn qua quá trình cài đặt Oracle 11g R2 Enterprise Edition, một quy trình phức tạp hơn nhiều so với việc cài đặt Oracle XE (Express Edition). Việc cài đặt cơ sở dữ liệu Oracle trên Ubuntu yêu cầu bạn phải thực hiện cấu hình thủ công các tệp và tham số hệ thống.
Việc cài đặt Oracle trên Ubuntu Linux không phải là một nhiệm vụ dễ dàng, nhưng Oracle Enterprise Edition mang lại nhiều lợi ích. Các bước cài đặt Oracle đòi hỏi sự chú ý đặc biệt từ phía bạn bao gồm cài đặt các gói Ubuntu, liên kết các tệp nhị phân và tạo tập lệnh khởi động. Nếu phiên bản Ubuntu và Oracle của bạn giống với các phiên bản được sử dụng trong bài viết này, hãy làm theo hướng dẫn từng bước để cài đặt Oracle thành công. Sau khi triển khai cơ sở dữ liệu Oracle, đừng quên tạo bản sao lưu.







































