本文部分操作流程借鉴Linux下安装Oracle12C详解,并在此基础上记录一些个人遇到的问题,同时对原文进行了扩展说明。
首先是最基本要求:物理内存至少1G,占用硬盘至少15G
一、oracle11g、12c下载
二、准备工作
(一)关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 查看防火墙状态
systemctl status firewalld.service
(二)关闭selinux
#查看是否开启
sestatus
#临时关闭
setenforce 0
#永久关闭
vi /etc/selinux/config
#修改内容
SELINUX=disabled
(三) 安装必要包
12C
yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install gcc -y
yum install ksh -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install make -y
yum install nfs-utils -y
yum install net-tools -y
yum install smartmontools -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y
为了便于下载离线包
yum reinstall --dowloadonly --downloaddir=/opt/setup_packages install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel
11g
yum -y install bc binutils elfutils-libelf gcc gcc-c++ glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio-devel libaio-devel.i686 libcap libXrender libX11 libXau libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libibverbs make policycoreutils smartmontools sysstat xdpyinfo elfutils-libelf-devel compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel ksh libaio-devel numactl-devel unixODBC unixODBC-devel
(四)创建swap
参考安装oracle12c swap不足
官方文档推荐:RAM<16G,swap为RAM的1.5倍;16G<=RAM<=64G,swap=RAM; >64G,swap为RAM的一半
#以16G内存为例,如设置不够,修改报busy,按以下方法执行
[root@VM-0-4-centos bin]# dd if=/dev/zero of=/home/swap bs=1024 count=16384000
dd: failed to open ‘/home/swap’: Text file busy
[root@VM-0-4-centos bin]# ^C
[root@VM-0-4-centos bin]# swapoff -a
[root@VM-0-4-centos bin]# dd if=/dev/zero of=/home/swap bs=1024 count=16384000
16384000+0 records in
16384000+0 records out
16777216000 bytes (17 GB) copied, 124.01 s, 135 MB/s
[root@VM-0-4-centos bin]# mkswap /home/swap
Setting up swapspace version 1, size = 16383996 KiB
no label, UUID=43b2b531-f722-4778-ab1f-5b9c3e8c0392
[root@VM-0-4-centos bin]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
[root@VM-0-4-centos bin]# free -m
total used free shared buff/cache available
Mem: 15884 1831 172 32 13881 13682
Swap: 15999 0 15999
[root@VM-0-4-centos bin]#
三、创建 oracle 分区(硬盘空间不足时)
# 查看硬盘及分区信息(启动Disk开头的就是硬盘,Device开头的就是分区)
fdisk -l
# 创建分区(/dev/sdb 是硬盘,是你需要创建分区的硬盘,创建分区后会生成 /dev/sdb1,如果本来有sdb1,则会出现sdb2)
fdisk /dev/sdb
# 格式化新创建的分区
mkfs.xfs /dev/sdb1
# 将分区添加到 /etc/fstab 文件中,使之开机自动挂载(编辑保存 fstab 文件后不会立即生效)
vim /etc/fstab
/dev/sdb1 /u01 xfs defaults 0 0
四、创建 oracle 目录(结合第三步)
# 创建目录
mkdir /u01
# 重新加载文件 /etc/fstab 所有内容。该操作会忽略所有已经完成的操作,所以多次执行,只会有第一次能看到效果。
mount -a
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 12G 8.7G 57% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 13M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 2.0G 179M 1.9G 9% /boot
/dev/mapper/centos-home 10G 33M 10G 1% /home
tmpfs 781M 4.0K 781M 1% /run/user/42
tmpfs 781M 52K 781M 1% /run/user/0
/dev/sdb 20G 33M 20G 1% /u01
五、创建oracle用户与用户组、目录权限
# 创建oinstall和dba组
# groupadd -g 为新组使用 GID
# 组ID (GID)就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
# 创建oracle用户
useradd -u 54321 -g oinstall -G dba,oper oracle
# 设置oracle密码
passwd oracle
# 查看创建结果
id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper)
六、配置内核参数
内核参数是一个很重要的优化系统性能的配置项,比如配置信号量,I/O,共享内存等参数配置,参考官方文档进行详细配置,官方文档对这方面有很详细的说明。如果你和我一样只是安装个Oracle用来学习那只需要使用官方文档中建议的最低配置就行。新增/etc/sysctl.d/98-oracle.conf文件,添加以下内核参数:
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
使配置生效
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf
七、配置linux内核参数参数
为了提高Oracle软件性能,需要为Oracle用户添加以下shell配置:
为oracle用户设置Shell限制:为了优化性能,需要添加oracle用户的限制参数。进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证。 (文中所需要的软件包加最下面微信免费获取)
#vim /etc/security/limits.conf //在文件末尾添加下面内容
vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
八、设置shell配置文件
vim /etc/profile
添加以下内容,保存退出
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
生效
source /etc/profile
九、设置创建的数据目录权限
mkdir -p /u01/app
chown -R oracle:oinstall /u01
chmod -R 775 /u01
十、配置环境变量
su - oracle
vim ~/.bash_profile
#创建一个配置文件
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
#Oracle
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
执行命令使环境变量生效
source ~/.bash_profile
十一、解压oracle12c-linux-centos-x64.zip
#root
unzip oracle12c-linux-centos-x64.zip
chown -R oracle:oinstall database
su - oracle
cd /opt/database
#先安装图形工具(此步的用户要oracle用户直接登录,不能使用su - oracle,以上只是展示)
#为了防止弹窗无法正常显示,加上参数
./runInstaller -jreLoc /etc/alternatives/jre_1.8.0
十二、安装图形化界面(如果没有图形界面)
(一)下载安装vncviewer
vncviewer下载地址
本文选择Standalone X64版本
(二)安装VNC server
需要放开5901端口
#新版vnc安装方法已被如下指令代替
yum install tigervnc-server
首次启动会要求设置密码,用来在客户端访问时使用,后面可以使用vncpasswd 修改
[root@VM-0-4-centos opt]# vncserver
You will require a password to access your desktops.
Password:
Password must be at least 6 characters - try again
Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:
xauth: file /root/.Xauthority does not exist
#记住此处生成的号码标识,代表几号gui窗口
New 'VM-0-4-centos:1 (root)' desktop is VM-0-4-centos:1
Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/VM-0-4-centos:1.log
(三)与客户端vncviewer建立连接
查看是否安装Gnome桌面环境【vnc viewer连接黑屏可能没安装这个桌面环境】
yum grouplist
安装Gnome桌面环境
yum groupinstall "GNOME Desktop"
包很大有600多M
#重启
[root@VM-0-4-centos opt]# vncserver -kill :1
Killing Xvnc process ID 17662
#启动,对应如上的gui编号
[root@VM-0-4-centos opt]# vncserver :1
New 'VM-0-4-centos:1 (root)' desktop is VM-0-4-centos:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/VM-0-4-centos:1.log
点击客户端vncviewer左上角File,然后点击New Connection:
这里只需要填2个地方:
即VNC Server和Name(只是备注名)
VNC Server就是你需要访问的服务器的地址IP,注意:地址后面还要加上:1(对应服务端gui编号)(有时候连不上,我是换了一个2就可以了)
点击OK,创建连接
再只需双击这个连接,即可启动。
ps:如下即可配合客户端vnc打开窗口
使用vncserver –list 可查看启动了多少个桌面
十三、正式安装
客户端vncviewer打开终端执行
su - oracle
cd /opt/database/
./runInstaller
最经常遇到的就是报错 Could not execute auto check for display colors
在Linux/Unix类操作系统上的GUI应用程序使用X Window系统(X Window System),它旨在允许多个用户使用窗口化的应用程序通过网络访问计算机。 DISPLAY环境变量用来设置将图形显示到何处。直接登录图形界面或者登录命令行界面后使用startx启动图形,DISPLAY环境变量自动设置为:0:0,此时可以打开终端,输入图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上。
#此处尝试过DISPLAY=:0.0,死活都不弹出图形界面,改成:1.0后成功(oracle用户下也用:1.0)
[root@localhost ~]# export DISPLAY=:1.0
[root@localhost ~]# cd /usr/bin
#这个命令将允许别的用户启动的图形程序将图形显示在当前屏幕上.
[root@localhost ~]# xhost +
access control disabled, clients can connect from any host
#时钟测试
[root@hgLiao ~]# yum install xorg-x11-apps
#当出现Warning: Missing charsets in String to FontSet conversion时
#输入export LANG=C即可解决
[root@localhost ~]# export LANG=C
[root@localhost ~]# xclock
oracle对应的选择显示界面
[oracle@VM-0-4-centos database]$ export DISPLAY=:1.0
#为了防止出现弹窗不显示的BUG,加上参数
[oracle@VM-0-4-centos database]./runInstaller -jreLoc /etc/alternatives/jre_1.8.0
成功启动图形化界面
相关步骤见
Linux下安装Oracle12C详解第13章
执行2个sh
[root@phoyclxag38kkwuf home]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@hgLiao ~]# /u01/app/oracle/product/12.2.0.1/db_1/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.2.0.1/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] :
yes
Installing Oracle Trace File Analyzer (TFA).
Log File: /u01/app/oracle/product/12.2.0.1/db_1/install/root_hgLiao_2023-04-21_17-24-33-332468918.log
Finished installing Oracle Trace File Analyzer (TFA)
[root@hgLiao ~]#
为了更好的理解oracle安装过程,我们将数据库安装与数据库创建分开
安装数据库
相关报错:
1、报错的日志文件中提示INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14’
网上说换从其他系统中复制一个过来,但是我复制失败,系统不识别,把原文件重命名一次,再改回原名字libstdc++.so.5就可以了就可以了
2.
重新安装gcc相关包,特别是cpp-*
3.
按报错路径打开文件,加入红色部分并保存退出
4.
按报错路径打开文件,加入红色部分并保存退出(lnnz11)
十四、监听器
[oracle@hgLiao ~]$ netca
如果出现报错,是由于/etc/hosts表里IP或主机名问题导致。
[root@hgLiao ~]# cat /etc/hostname
hgLiao
[root@hgLiao ~]# vim /etc/hosts
#对比环境变量中的$ORACLE_HOST的值是否一致
修改hosts文件后退出安装程序,重新netca
十五、dbca
注:11g的dbca参考此处RedHat7.9安装Oracle11g
根据需要设置Global database name(也是SID),不勾选Create as Container database,创建完数据库后要设置ORACLE_SID变量为这个SID,注意,大小写敏感!“Global database name”作为注册时的service name与SID不同,客户端连接时指定service name
此步可能报错[DBT-06103] The port (5,500) is already in use.实际任何端口都不行,问题出在hostname上
vim /etc/hosts 添加如下最后一行
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.1.30 phoyclxag38kkwuf.novalocal phoyclxag38kkwuf
安装比较慢
配置不高的服务器运行相当缓慢
数据库建完会自动启动,设置ORACL_SID为之前填写的SID,然后就可以sqlplus / as sysdba登录了。
十二、TNS配置(服务端)
[oracle@phoyclxag38kkwuf bin]$ netmgr
已经自动设置好了
十三、服务端与客户端(配置plsqldev)
服务端需要配置listener.ora,tnsnames.ora
客户端要配置tnsnames.ora(只要把服务端的tns复制过来,HOST改为服务端IP即可)
主要步骤就是:下载plsql与oracle client ,特别注意位数要相同,一般都是32位
配置3个环境变量,配置plsql库文件
我的服务端参考
[oracle@phoyclxag38kkwuf admin]$ pwd
/u01/app/oracle/product/12.2.0.1/db_1/network/admin
[oracle@phoyclxag38kkwuf admin]$ ls
listener.ora samples shrept.lst tnsnames.ora
listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = phoyclxagxxxx.novalocal)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
tnsnames.ora
LISTENER_ASSETS =
(ADDRESS = (PROTOCOL = TCP)(HOST = phoyclxagxxxx.novalocal)(PORT = 1521))
ASSETS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = phoyclxagxxxx.novalocal)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = assets)
)
)
我的客户端参考
cyun_assets =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 117.xx.xx.181)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = assets)
)
)
至此安装完成
十四 防火墙相关(需要放开1521商品,plsql工具才可以访问)
1、查看防火墙状态
systemctl status firewalld
2、如果不是显示active状态,需要打开防火墙
systemctl start firewalld
3、查看所有已开放的临时端口(默认为空)
firewall-cmd --list-ports
4、 查看所有永久开放的端口(默认为空)
firewall-cmd --list-ports --permanent
5、 添加临时开放端口(例如:比如我修改ssh远程连接端口是223,则需要开放这个端口)
firewall-cmd --add-port=223/tcp
6、 添加永久开放的端口(例如:223端口)
firewall-cmd --add-port=223/tcp --permanent
需要重启防火墙生效
7、关闭临时端口
firewall-cmd --remove-port=80/tcp
8、 关闭永久端口
firewll-cmd --remove-port=80/tcp --permanent
9、 配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld