赞
踩
参考博客如下:
原文链接:https://www.nakivo.com/blog/how-to-install-oracle-on-ubuntu-linux-waltkhrough (外网的)
安装错误问题处理原文:https://www.cnblogs.com/pxg950110/p/793909492_2.html
环境变量配置以及安装后创建实例监听:
https://www.cnblogs.com/slf784049656/category/1797591.html
Oracle数据库(在本文中将称为Oracle)可以安装Solaris、Windows和Linux。在Windows上安装Oracle是最简单的选择,而在Solaris和Linux上安装Oracle需要手动的预安装配置。至于Linux发行版,Oracle建议在Red-Hat、Oracle Linux和SUSE Linux EnterpriseServer上安装OracleDatabase。但是,您也可以在UbuntuLinux和OpenSUSELinux上安装Oracle。Ubuntu是广泛使用的Linux发行版,今天的博客文章提供了关于如何在Ubuntu上安装Oracle的一步一步的指导,我们将在Ubuntu上安装Oracle数据库企业版(EE)11g R2
在本教程中,使用了一个新安装的Ubuntu 16.04.6,操作系统安装在VMware VM上,没有启用“安装Ubuntuf选项时的下载更新”,也没有在os部署期间使用“安装第三方软件”选项。如果您以前从未在Linux上安装过Oracle,那么在物理计算机或服务器上安装Oracle之前,您应该了解如何在虚拟机上安装racle。如果您使用的是Mware VM,不要忘记安装Mware工具。您也可以使用VirtualBox和Hyper-v虚拟机器,确保在安装过程中选择了正确的时区,此示例中的时区为GMTO(London)。
您可以使用以下命令检查时区
timedatectl
检查ubuntu版本
lsb_release -a
In this tutorial about how to install Oracle 11g on Ubuntu, the following VM hardware parameters are used:
user1 is a regular user in this example (user1 is created during Ubuntu installation and is used to log into Ubuntu).
The following packages are installed:
If you don’t have these packages installed in your Ubuntu Linux, you can install them by using the command:
sudo apt-get install -y vim net-tools openssh-server
The SSH server is installed for convenience. You should run many commands in the console before using the Oracle installer on Ubuntu.
In order to enable authentication by using passwords, edit the sshd_config file:
vim /etc/ssh/sshd_config
Uncomment the line (remove “#” at the beginning of a line):
PasswordAuthentication yes
Save changes and quit by pressing the Esc key in vim and typing :wq
Restart the sshd service (daemon), by running the command with root privileges:
sudo service ssh restart
Ubuntu 16 uses a swap partition by default. You can customize the size of the swap partition when installing Ubuntu. If you have selected the default partitioning options or selected the incorrect size of the swap partition, you can still create a swap file of the custom size and use the swap file instead of an existing swap partition. The swap size should be equal to twice the RAM size. If you are going to install Oracle on Ubuntu with 4 GB of RAM, you should prepare a swap file or partition that is 8 GB. Let’s create the 8-GB swap file.
Temporary disable using the swap area:
sudo swapoff -a
Create a new 8-GB file with the dd tool:
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
Set the created 8-GB file to be used as a swap file:
sudo mkswap /swapfile
Enable using swap again:
sudo swapon /swapfile
Check the size of your swap area after creating a new swap file:
grep SwapTotal /proc/meminfo
设置网络部分:如果是本地安装,或者远程操控ubuntu图形化界面,而不是远程链接安装,则不需要这一步配置
By default, Ubuntu 16 obtains an IP address automatically for a network interface (if a DHCP server is present in the network). You need to set a static IP address and configure a hostname before you can install Oracle on Ubuntu.
Check the current IP configuration:
ifconfig
In the output, you can see the names of your network adapters and IP addresses. In our case, the name of the needed network interface is ens33.
Edit the network interfaces configuration file with vim:
sudo vim /etc/network interfaces
The static IP address needed for installing Oracle database on Ubuntu is 192.168.101.11 on the current interface of the Linux machine in this example. Edit the configuration file as follows:
# 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
Save changes and quit.
Apply the changes:
sudo /etc/init.d/networking restart
Or reboot the machine:
init 6
Verify that the new IP settings are applied:
ifconfig
Or:
hostname -I
After checking the IP address configuration, check the hostname.
In our case, the hostname used for installing Oracle on Ubuntu is ubuntu-oracle11.
Check the current hostname:
hostnamectl
If you have forgotten to configure the hostname during the installation of Ubuntu or want to change the hostname for other reasons, you can still do it.
In order to rename the host and set a new hostname (ubuntu-oracle11), run the command:
sudo hostnamectl set-hostname ubuntu-oracle11
Verify whether the new host name is applied:
less /etc/hostname
Edit the hosts file:
sudo vim /etc/hosts
The contents of the /etc/hosts file must look like this:
127.0.0.1 localhost
127.0.1.1 ubuntu-oracle11
Restart the machine:
init 6
Try to ping the defined hostname on your Ubuntu machine:
ping ubuntu-oracle11
To install Oracle on Ubuntu, you need to configure the Linux environment: create system users and groups, configure kernel parameters, set up a system profile, set environment variables for a user, define shell limits, create symlinks, and install required packages.
Open the local console or connect to the Linux console via SSH as a regular user and then get the root privileges:
sudo -i
The below commands must be executed as root.
Add the groups required by Oracle.
Create the Oracle Inventory group:
groupadd oinstall
Create the Oracle DBA group:
groupadd dba
Create the home directory for the Oracle user:
mkdir /home/oracle/
Create the directory for installing Oracle:
mkdir -p /u01/app/oracle
Then create the Oracle user account that is a member of the dba group, has the /home/oracle/ home directory and uses /bin/bash as the default shell:
useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle
Set the password for the oracle user (don’t forget this password):
passwd oracle
Set the oracle user as the owner of the Oracle home directory and Oracle installation directory. The oracle user is a member of the oinstall group.
chown -R oracle:oinstall /home/oracle
chown -R oracle:oinstall /u01/app/oracle
默认创建的组id是从1000开始的,你也可以在创建组的时候自己指定:
如:groupadd -g 502 oinstall , useradd -u 501 -g oinstall -G dba,oper -s /bin/bash -m oracle
*Note:* Unlike Oracle 10, creating the nobody group is not needed for Oracle 11.
Create the directory for Oracle Inventory: (这个可以不用做,安装时会自己创建)
mkdir -p /u01/app/oraInventory
Set the oracle user as the owner for the Oracle Inventory directory:
chown -R oracle:oinstall /u01/app/oraInventory
Custom kernel parameters are required to install Oracle on Ubuntu and these kernel parameters affect Oracle performance. Shared memory parameters, including minimum and maximum size, the number of shared memory segments, and semaphores that can be considered as flags for shared memory must be customized according to the Oracle documentation. You also need to set the maximum allowed number of files that can be opened at once, the maximum number of simultaneous network connections, the size of network send and receive buffer. The considered kernel parameters can be categorized in three groups: kernel specifics (kernel), network specifics (network), and file handlers (fs). Edit the /etc/sysctl.conf file to override the parameters of the Linux kernel:
关于这些参数配置可以看这个:https://blog.csdn.net/fsfsdfsdw/article/details/87515648
vim /etc/sysctl.conf
Append the lines shown below to the end of this configuration file.
# ============================
# 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
Apply the kernel parameters you have set:
sysctl -p
You have to set shell limits to improve performance of the Oracle database software.
Edit the /etc/security/limits.conf file:
vim /etc/security/limits.conf
Add the following lines to the end of the configuration file:
# Oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
The first column specifies the user for whom the limits are set.
The second column operates with two options—soft and hard. Soft is the maximum number that can be set by the user, while hard is the maximum number that can be reconfigured by the defined user (oracle). If the oracle user reaches the critical low value of 2047 set in the first line and needs to extend the limit, the user can increase the limit to 16384. Values higher than 16384 cannot be set by the oracle user but can be set by root.
The third column defines on which resources the set limits are applied.
The fourth column defines the maximum number of the resource parameter specified in the third column.
Ensure that the /etc/pam.d/login configuration file contains the following line:
session required pam_limits.so
You can do it with the command:
cat /etc/pam.d/login | grep pam_limits.so
If the mentioned line is missing, add this line manually.
System wide environmental variables are set in the global bash shell profile that is set in the /etc/profile configuration file.
Edit /etc/profile and set some needed parameters for oracle globally and permanently:
vim /etc/profile
Add the following lines:
if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
*Note:* It is useful to know when each shell configuration file can be used because later you will need to configure a profile that contains environment variables for the oracle user.
Bash login shell loads its configuration from the following files in the appropriate order:
*/etc/profile* can be considered as a global profile for the bash login shell.
*./bash_profile* is applied for bash login shells, for example, when you log into the command line interface of Linux directly by using a keyboard connected to this Linux computer, or when opening a new console session after you log in by using the SSH terminal.
*.profile* – this file is read for bash and other shells like sh.
Bash non-login interactive shell loads configuration from ~/.bashrc
It means that if you are already logged into your Linux machine (for example you have logged into Ubuntu with GUI) and then opened a new console (terminal) window, then shell configuration, including environment variables, is loaded from the .bashrc file before you get access to the command prompt.
Bash non-login and non-interactive shell loads configuration that is set in the $BASH_ENV environment variable. The non-login and non-interactive shell is used when a script runs.
You need to install packages required by Oracle. Take care when installing them because a missing package may cause errors during Oracle installation or database creation.
Update the repository tree:
apt-get update
Install packages to avoid errors that can occur during the installation of Oracle on Ubuntu. Most packages can be installed with Ubuntu standard package manager from online repositories.
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
There are a few packages left to install, but to install them you’ll need these tips and tricks.
apt-get install ia32-libs
When you run the command to install this package with apt-get, you will see a message saying that this package is not available.
There is an alternative package that can be installed instead of ia32-libs. Install the lib32z1 alternative package:
apt-get install lib32z1
Let’s install the next package:
apt-get install libmotif4
This package is also not available. You should download and install this package manually. Download the libmotif4_2.3.4-8ubuntu1_amd64.deb file from a free resource. Save the downloaded deb file to a custom directory, for example, /home/user1/Downloads, before you can install this package.
The workflow of installing deb packages in Ubuntu is the following (execute commands with root privileges):
sudo dpkg -i package_name.deb
sudo apt-get -f install
In this case, we run the commands for installing packages as a regular user, for example, user1 by using sudo. Press Ctrl+D to exit the root session and to turn back to the user1 session in the console (terminal).
Go to the directory where the downloaded files are stored:
cd /home/user1/Downloads
Download the file by using a direct link:
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
The next package cannot be installed automatically:
sudo apt-get install libpthread-stubs0
E: Unable to locate package libpthread-stubs0
Download and install this package manually.
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
Similarly install the next package:
sudo apt-get install lsb-cxx
E: Unable to locate package lsb-cxx
You can download the lsb-cxx package manually.
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
Install one more package:
sudo apt-get install pdksh
E: Package ‘pdksh’ has no installation candidate
The workflow for installing the pdksh package is the same. This package can be downloaded here.
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 requires the installation of the 32-bit version of the libstdc++5 package that is not installed on Ubuntu 16 automatically. Here’s how you can install this package manually.
The next commands are executed as root. Create a temporary directory to download the package:
mkdir /tmp/libstdc++5
cd /tmp/libstdc++5
Download the package (links to the 32-bit and 64-bit packages are shown):
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
Install the downloaded packages with dpkg:
dpkg --force-architecture -i libstdc++5_3.3.6-30_i386.deb
*Note:* If links don’t work, newer versions of packages can be published instead of older versions. In this case, visit a web page in the browser and copy the correct links to the needed deb packages:
http://mirrors.edge.kernel.org/ubuntu/pool/universe/g/gcc-3.3/
Reboot the Linux machine to apply the changes.
init 6
You have to create symbolic links (symlinks) to make the file and directory structure used in Ubuntu similar to the file structure in Red Hat. Create the symlinks to make a file system structure appear identical to the Red Hat file system structure to prevent errors during Oracle installation.
Run commands as 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
The above commands help prevent errors, such as:
Now let’s prevent one more error: /lib64/libgcc_s.so.1: File or directory does not exist, while creating lib/liborasdkbase.so.11.1 in ins_rdbms.mk. Go to the /lib64 directory and execute the command:
cd /lib64
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 .
Don’t miss the dot at the end of the command.
Set the Linux version as Red Hat Linux release 5 in /etc/redhat-release. Red Hat Linux distributions store their version in that file.
echo ‘Red Hat Linux release 5’ > /etc/redhat-release
Now you need to configure the user environment for the oracle user.
Login as oracle if you have opened the console as another user:
su oracle
Run the commands as oracle:
cd
vim ~/.bashrc
Add the following lines to the *.bashrc* file:
(但是这样配置会导致oracle用户下vim不可用)
# 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= O R A C L E H O M E / b i n : ORACLE_HOME/bin: ORACLEHOME/bin:PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64; export LD_LIBRARY_PATH
CLASSPATH= O R A C L E H O M E / j l i b : ORACLE_HOME/jlib: ORACLEHOME/jlib:ORACLE_HOME/rdbms/jlib; export CLASSPATH
umask 022
Apply the settings:
source ~/.bashrc
You should restart Ubuntu now. Note that settings will be applied after reboot even without running source ~/.bashrc.
init 6
We’re almost done with the preparations for installing Oracle. There’s just a few more steps before you can start the installer and install Oracle on Ubuntu. After rebooting the Ubuntu machine, log in as oracle in the graphical user interface of Ubuntu.
Open a web browser.(下载并解压文件)
In our example, two downloaded files are saved to /home/oracle/Downloads for convenience:
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
Open the console in Ubuntu and run the following commands as oracle. Go to the directory where the downloaded files are stored:
cd /home/oracle/Downloads
or cd ~/Downloads/
Unzip installation files from the downloaded zip archives:
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
The extracted files are stored in:
/home/oracle/Downloads/database
Now you are ready to run the installer and install Oracle on Ubuntu.
Go to the directory to which the installation files were downloaded. Run commands as oracle in the console started in the GUI session.
cd /home/oracle/Downloads/database (找到你解压好的文件目录,执行安装程序)
Run the Oracle installer:
./runInstaller
如果本地操作安装打不开图形化界面:如下
解决:
1.按n退出安装
2.切换到root用户,输入命令如下,
su - root
password
DISPLAY=:0.0
export DISPLAY
ehco $DISPLAY
xhost
xhost +
3.切换到oracle用户,输入命令如下:
su - oracle
DISPLAY=:0.0
export DISPLAY
echo $DISPLAY
再重新运行安装,即可解决
1. Configure Security Updates
Untick the “I wish to receive security updates via My Oracle Support” checkbox.
Click Next to go to the next step of the Oracle installation wizard.
You will see the message: You have not provided an email address. Do you wish to remain uninformed of critical security issues in your configuration? Ignore this message and hit Yes.
2. Installation Option
Select Create and configure a database.
此处可以先不选创建实例,选择第二项
3. System Class
Select Server Class, which is an advanced option for installing Oracle database on Ubuntu.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBDNjWPt-1654610338790)(C:\Users\14370\Desktop\Select-a-server-class-when-you-install-Oracle-on-Ubuntu.webp)]
4. Grid Options
Select Single instance database installation as the type of database installation.
5. Install type
Select Advanced install as the installation type. This option allows you to set passwords, character sets, languages, storage options, etc.
6. Product Languages
Select the needed languages. In this example, English and English (United Kingdom) are selected.
可以选择添加简体中文
7. Database Edition
Select Enterprise Edition for a database that you are going to install.
8. Select Oracle base location
Usually the Oracle base directory and Oracle home directory are used.
Oracle Base: /u01/app/oracle
Software location: /u01/app/oracle/product/11.2.0/dbhome_1
9. Create Inventory
The directory that is used to store Oracle installation files is called the “Oracle inventory directory”.
Inventory Directory: /u01/app/oraInventory
oraInventory Group name: oinstall
10. Configuration Type
Select the type of the database you want to create:
General Purpose / Transaction Processing
11. Database Identifiers
You can define the same value for a global database name and Oracle Service Identifier.
Global database name: ORADB11G
Oracle Service Identifier (SID): ORADB11G
12. Configuration options
There are four tabs in this step. You can set the configuration on each tab as follows:
Memory: Enable Automatic Memory Management (default).
Character sets: Use Unicode (AL32UTF8).
Security: Assert all new security settings (default).
Sample schemas: Create database with sample schemas (however, you can leave the default value).
13. Management options
You can leave the default parameters.
14. Database storage
Read the recommendations displayed in the window and select File system.
Specify database file location: /u01/app/oracle/oradata
15. Backup and Recovery
At this point you can select the option: Do not enable automated backups (default).
Backups are important, but it is better to configure Oracle database backups after you install Oracle on Ubuntu.
16. Schema passwords
You can select Use the same password for all accounts. Enter a password and confirm the password.
17. Operating System Groups
Read the description shown in the window and select the required groups.
Database Administrator (OSDBA) Group: dba
Database Operator (OSOPER) Group: oinstall
18. Prerequisite checks
Now the Oracle installer checks whether system configuration meets the prerequisites. Warnings will appear for this step. The OS Kernel Parameter semmni was configured above, but the failed status is displayed for this parameter.
OS Kernel Parameter: semmni Failed
You can check this parameter value to check that everything is correct. Check the semmni parameter with the command (run as root):
/sbin/sysctl -a | grep sem
kernel.sem = 250 32000 100 128
or
cat /proc/sys/kernel/sem
250 32000 100 128
If the last value is no less than 128, then everything is OK, and you can ignore this warning.
19. Summary
Check the configuration summary to make sure that you have configured all settings as needed. You can save the response file (db.rsp) as it may come in handy when you need to install Oracle on multiple Linux machines or if you are going to install Oracle on Ubuntu Server without the GUI.
Now you can monitor how the Oracle installer is copying files until the installer proceeds to the Link binaries stage.
This stage is one of the most difficult stages of installing Oracle database on Ubuntu Linux. The probability of getting errors on this step is high. In the current example, the following error is encountered when we install Oracle 11g on Ubuntu 16:
Error in invoking target ‘install’ of makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’. See ‘/u01/app/oraInventory/logs/installActions2020-01-22_12-53-06PM.log’ for details.
Notice that similar errors can occur even if you install Oracle on Oracle Linux. The name of your log file should be different.
*Note:* Files with .mk extension are makefiles and are used to compile programs. A makefile determines which “pieces” of program to compile and which files of the program must be compiled and linked together. Some components of Oracle software are written in Java (for example, Oracle Universal Installer that has a GUI) and some components are written on C. The components written on Java must be interpreted without compiling (Java is multiplatform), whereas the components written on C must be compiled and linking binaries and libraries is the required stage of this process. Oracle uses this approach to add more flexibility and allow the installation of Oracle on different operating systems (Windows, Linux, Solaris). Another benefit is the reduced size of the installer. The disadvantage is that errors may occur in the linking binaries stage during the installation process of Oracle. In most cases, you should add the appropriate flags by editing .mk files to fix linking issues.
Let’s find out how to fix link binaries errors that occur when installing Oracle database on Ubuntu Linux.
Login as oracle via SSH to the Ubuntu machine and check the log file:
tail -n 100 /u01/app/oraInventory/logs/installActions2020-01-22_12-53-06PM.log
用命令行看log属实是太费眼了,可以找个好用的编辑器看
When you read the log output, pay attention to the line that explains the error.
INFO: /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk:11: recipe for target ‘ctxhx’ failed
ins_ctx.mk:11 refers you to the line 11 of the ins_ctx.mk file.
Let’s open the ins_ctx.mk file and check line 11 of that file.
vim /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
In the navigation mode of vim type :set number to see the line numbers.
Let’s find line number 11.
When using the navigation mode in vim, you can find the needed string with the command:
/LINK_CTXHX
Edit the following section:
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
Line number 11 must be edited as follows:
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
Save the ins_ctx.mk and quit vim.
Now go back to the Oracle installation error window and click Retry.
The installation process continues, but in a few seconds another error is displayed when Building Agent Libraries:
Error in invoking target ‘agent nmhs’ of makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk’.
Run the following commands as oracle to fix this issue:
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
Note: sed is a stream text editor that is used to save time of editing the .mk files comparing to editing them with vim or other interactive text editors.
After running the above two commands, click Retry in the Oracle installation error window. You can see that the error is fixed and installing Oracle database on Ubuntu Linux is going on. However, in a few seconds another error occurs when Linking RDBMS Executables:
Error in invoking target ‘all_no_orcl’ of makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk’.
Run the following commands as oracle to fix this error and a few other similar errors:
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
Then go back to the error window and click Retry. Now the installation process should resume without errors.
此处执行这几个sed 命令有可能不能解决问题,还是得根据log中的具体报错进行处理
可以参考开头给出的第二个链接,也就是:https://www.cnblogs.com/pxg950110/p/793909492_2.html 根据具体错误修改mk文件
Oracle Database Configuration Assistant (DBCA) will open after passing the Link binaries stage.
We’re almost at the finish line of installing Oracle database on Ubuntu.
Run these two scripts as root:
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
On the screenshot below you can see that the scripts have been executed successfully.
The installation of Oracle Database was successful.
If you see this notification, you can close the Oracle installer window.
(如果不选择创建实例,则不会出现note)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iTreLc2X-1654610338799)(https://www.nakivo.com/blog/wp-content/uploads/2020/02/The-installation-of-Oracle-Database-was-successful-on-Ubuntu-Linux.webp)]
Open a web browser on your Ubuntu machine running Oracle and check whether Oracle is running by opening the web interface of Oracle Database Control Manager. The following links can be used to do this:
https://localhost:1158/em
https://ubuntu-oracle11:1158/em
https://192.168.101.11:1158/em
You can also try to connect to the Ubuntu machine running Oracle from another host of your network.
Define the connection parameters.
User Name: SYS
Password: Your password that has been set during Oracle installation
Connect As: SYSDBA
Below you can see the screenshot of the Oracle Enterprise Manager for when Oracle is running correctly.
Oracle is now installed, and now we should configure the database to start automatically once Ubuntu is booted. You should edit the /etc/oratab configuration file to set Oracle to start during system boot.
Run the command as root.
vim /etc/oratab
Replace N to Y at the end of the line:
ORADB11G:/u01/app/oracle/product/11.2.0/dbhome_1:Y
Before setting Oracle to start automatically, you should understand how to start Oracle components manually. This will also help for diagnostics. Run these commands as oracle user.
Start the database:
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
Stop the database:
$ORACLE_HOME/bin/dbshut $ORACLE_HOME
Start the Database Control Enterprise Manager that provides a web interface for database control:
emctl start dbconsole
Stop the Database Control Manager:
emctl stop dbconsole
Check the Database Control Manager Status:
emctl status dbconsole
Start the listener:
$ORACLE_HOME/bin/lsnrctl start
Stop the listener:
$ORACLE_HOME/bin/lsnrctl stop
Check the status of the listener:
$ORACLE_HOME/bin/lsnrctl status
Start the Database Configuration Assistant (in the GUI shell, not in the SSH cosole):
dbca
The Oracle listener can be configured by editing the file:
vim $ORACLE_HOME/network/admin/listener.ora
Connecting to the database in the console:
sqlplus / as sysdba;
Let’s explore how to set Oracle to start automatically during Ubuntu startup. After editing /etc/oratab, you should create a startup script in the /etc/init.d/ directory.
Create the new file of the Oracle startup script in Ubuntu (run the command as root):
vim /etc/init.d/oracle
Add the following content to that file:
#!/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 O R A C L E O W N R − c " ORACLE_OWNR -c " ORACLEOWNR−c"ORACLE_HOME/bin/dbstart $ORACLE_HOME"
echo “lsnrctl start”
source “/home/oracle/.bashrc” && su O R A C L E O W N R − c " ORACLE_OWNR -c " ORACLEOWNR−c"ORACLE_HOME/bin/lsnrctl start"
#Optional : for Enterprise Manager software only
echo “emctl start dbconsole”
source “/home/oracle/.bashrc” && su O R A C L E O W N R − c " ORACLE_OWNR -c " ORACLEOWNR−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 O R A C L E O W N R − c " ORACLE_OWNR -c " ORACLEOWNR−c"ORAClE_HOME/bin/emctl stop dbconsole"
source “/home/oracle/.bashrc” && su O R A C L E O W N R − c " ORACLE_OWNR -c " ORACLEOWNR−c"ORACLE_HOME/bin/lsnrctl stop"
source “/home/oracle/.bashrc” && su O R A C L E O W N R − c " ORACLE_OWNR -c " ORACLEOWNR−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
Set the correct permissions:
chown oracle:oinstall /etc/init.d/oracle
chmod 0775 /etc/init.d/oracle
Make this script start right after operating system startup (available for default runlevels):
update-rc.d oracle defaults
You can edit the startup priority if needed.
Run the script to stop Oracle (you can run this script as root):
/etc/init.d/oracle stop
If you want to start Oracle, run this script with the command:
/etc/init.d/oracle start
*Note:* Pay attention to the following line and similar lines in the Oracle startup script:
source “/home/oracle/.bashrc” && su O R A C L E O W N R − c " ORACLE_OWNR -c " ORACLEOWNR−c"ORACLE_HOME/bin/dbstart $ORACLE_HOME"
First we set the shell to read the settings stored in the *.bashrc* system profile of the oracle user including variables such as ORACLE_HOSTNAME, ORACLE_BASE, PATH etc. that are needed for Oracle components to run properly. After the bash settings of the oracle user are applied to the current shell session, the next command is executed to start Oracle database.
What is the difference between su - and su?
user1@hostname:~$ su - username2 – this command runs the command line shell session as the selected user (username2) with the settings of the selected user (username2) as if you were logged in as username2 when creating a new shell session directly (from scratch). Environment variables of username2 are used in this shell session.
user1@hostname:~$ su username2 – this command runs the command line shell as the selected user (username2) with the settings of the current user (user1) and environment variables of the user1 are inherited by username2 in this shell session.
su -c (–command) means that a specified command must be run as the selected user.
Let’s review some possible issues that may occur when you install Oracle on Ubuntu and whether there are methods to fix them.
Database Configuration Assistant cannot create a database and an error occurs.
ORA-12547: TNS:lost contact.
Log files for the current operation are located at:
/u01/app/oracle/cfgtoollogs/dbca/ORADB11G
Check the log file:
tail -n 100 /u01/app/oracle/cfgtoollogs/dbca/ORADB11G/cloneDBCreation.log
Pay attention to these strings:
oracleORADB11G: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
ORA-12547: TNS:lost contact
One of the reasons for this error message being displayed is the absence of libraries related to the appropriate packages—libaio1, libaio-dev. Check whether the mentioned packages are installed, otherwise install them:
sudo apt-get install libaio1
sudo apt-get install libaio-dev
It may happen that you are running the script as root and see the message:
“Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name”.
Oracle doesn’t start automatically when Ubuntu boots in this situation. If this error message is displayed when starting Oracle Enterprise Manager 11g Database Control, then you should check environment variables.
How to check the ORACLE_UNQNAME?
You can check the ORACLE_UNQNAME (run commands as oracle).
sqlplus / as sysdba;
SQL> SELECT name, db_unique_name FROM v$database;
SQL> exit
Edit /etc/profile (as root):
vim /etc/profile
Add the line in the end of the /etc/profile file:
ORACLE_UNQNAME=ORADB11G; export ORACLE_UNQNAME
Restart the Ubuntu machine on which Oracle is installed.
Now this error should not appear when running the script and Oracle should start after running the /etc/init.d/oracle start command manually. However, Oracle still doesn’t start automatically during startup of Ubuntu Linux. The reason of this issue is that environment variables are not set for the shell where the script is running. See the explanation of the Oracle startup script above and go over your script carefully.
Ubuntu 18 has newer versions of Linux system libraries that are greatly compatible with Oracle 11g R2. There’s a high probability that you will get errors on the Link Binaries stage of Oracle installation. For example:
Error in invoking target ‘links proc gen_pcscfg’ of makefile ’ u01/app/oracle/product/11.2.0/dbhome_1/precomp/lib/ins_precomp.mk '.
That’s why Ubuntu 16 is used in this tutorial. Of course, you can try to install Oracle 11g on Ubuntu 18 but be prepared for some difficulties. You may need to install packages and libraries of the older versions and, thereby downgrading the Ubuntu operating system.
The workflow of installing Oracle database on Ubuntu 18 is similar to installing Oracle database on Ubuntu 16 (for Oracle 11g R2 EE). In the Link Binaries stage when errors occur, you should analyze logs, research the documentation, and fix linking errors.
The following command may be useful for manually relinking libraries after editing files:
$ORACLE_HOME/bin/relink all
Oracle still doesn’t start automatically during startup of Ubuntu Linux. The reason of this issue is that environment variables are not set for the shell where the script is running. See the explanation of the Oracle startup script above and go over your script carefully.
Ubuntu 18 has newer versions of Linux system libraries that are greatly compatible with Oracle 11g R2. There’s a high probability that you will get errors on the Link Binaries stage of Oracle installation. For example:
Error in invoking target ‘links proc gen_pcscfg’ of makefile ’ u01/app/oracle/product/11.2.0/dbhome_1/precomp/lib/ins_precomp.mk '.
[外链图片转存中…(img-xmj4hd9A-1654610338800)]
That’s why Ubuntu 16 is used in this tutorial. Of course, you can try to install Oracle 11g on Ubuntu 18 but be prepared for some difficulties. You may need to install packages and libraries of the older versions and, thereby downgrading the Ubuntu operating system.
The workflow of installing Oracle database on Ubuntu 18 is similar to installing Oracle database on Ubuntu 16 (for Oracle 11g R2 EE). In the Link Binaries stage when errors occur, you should analyze logs, research the documentation, and fix linking errors.
The following command may be useful for manually relinking libraries after editing files:
$ORACLE_HOME/bin/relink all
This blog post guided you through the installation of Oracle 11g R2 Enterprise Edition, which is a much more complex process than the installation of Oracle XE (Express Edition). Installing Oracle database on Ubuntu requires that you perform manual configuration of files and system parameters. Installing Oracle on Ubuntu Linux is not an easy task, but Oracle Enterprise Edition offers many advantages. The Oracle installation steps that require great attention on your part are installing Ubuntu packages, linking binaries, and creating a startup script. If your versions of Ubuntu and Oracle are the same as the versions used in this post, follow the step-by-step tutorial for a successful Oracle installation. After deploying the Oracle database don’t forget to make backups. Visit the NAKIVO forum to discuss this topic and many more interesting ones.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。