Oracle12C 安装非容器数据库
1.安装环境准备
1.1 条件准备
-
Oracle安装包:linuxx64_12201_database.zip
-
SSH远程工具:Mobax
-
VM ware虚拟机:centos7.6(内存:2G, Swap: 3G 磁盘: 40G)
-
网路环境:内网
-
其他软件包:rlwrap-0.37-1.el6.x86_64.rpm
1.2 配置安装环境
使用MobaX以root用户登录虚拟机进行以下操作
-
修改主机名
[root@localhost ~]# hostnamectl set-hostname oracle
-
修改本地dns文件
填写真实ip和主机名
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.66 oracle
-
重新挂载系统光盘镜像
-
挂载光盘
[root@oracle]# mount /dev/cdrom /mnt mount: /mnt: <u>WARNING</u>: device write-protected, mounted read-only.
-
创建本地仓库
[root@oracle]# mkdir /yums
-
创建本地仓库
[root@oracle mnt]# cp -r Packages /yums/ [root@oracle mnt]# cp -r repodata /yums/ [root@oracle /]# rm -rf /etc/yum.repos.d/* [root@oracle /]# vi /etc/yum.repos.d/BaseOS.repo [BaseOS] name=BaseOS baseurl=file:///yums gpgcheck=0 enabled=1 [root@oracle /]# yum makecache BaseOS 181 MB/s | 2.6 MB 00:00 Metadata cache created.
* 安装ORACLE先决条件的软件包
yum install -y bc
yum install -y compat-libcap1*
yum install -y compat-libcap*
yum install -y binutils
yum install -y compat-libstdc++-33
yum install -y elfutils-libelf
yum install -y elfutils-libelf-devel
yum install -y gcc
yum install -y gcc-c++
yum install -y glibc-2.5
yum install -y glibc-common
yum install -y glibc-devel
yum install -y glibc-headers
yum install -y ksh libaio
yum install -y libaio-devel
yum install -y libgcc
yum install -y libstdc++
yum install -y libstdc++-devel
yum install -y make
yum install -y sysstat
yum install -y unixODBC
yum install -y unixODBC-devel
yum install -y binutils*
yum install -y compat-libstdc*
yum install -y elfutils-libelf*
yum install -y gcc*
yum install -y glibc*
yum install -y ksh*
yum install -y libaio*
yum install -y libgcc*
yum install -y libstdc*
yum install -y make*
yum install -y sysstat*
yum install -y libXp*
yum install -y glibc-kernheaders
yum install -y net-tools-*
-
修改内核文件
[root@oracle /]# vim /etc/sysctl.conf # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/. # # Vendors settings live in /usr/lib/sysctl.d/. # To override a whole file, create a new file with the same in # /etc/sysctl.d/ and put new settings there. To override # only specific settings, add a file with a lexically later # name in /etc/sysctl.d/ and put new settings there. # # For more information, see sysctl.conf(5) and sysctl.d(5). kernel.shmmax = 1073741823 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 fs.file-max = 6815744 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 9000 65500 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_tw_reuse = 1 #net.core.somaxconn = 262144 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_probes = 6 net.ipv4.tcp_keepalive_intvl = 5 net.ipv4.tcp_timestamps = 0 fs.aio-max-nr = 1048576 net.ipv4.conf.all.rp_filter = 2 [root@oracle /]# sysctl -p kernel.shmmax = 1073741823 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 fs.file-max = 6815744 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 9000 65500 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_tw_reuse = 1 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_probes = 6 net.ipv4.tcp_keepalive_intvl = 5 net.ipv4.tcp_timestamps = 0 fs.aio-max-nr = 1048576 net.ipv4.conf.all.rp_filter = 2
* 修改系统限制文件
```bash
[root@oracle /]# vi /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
-
限制使用进程数
[root@oracle /]# vim /etc/pam.d/login session required /lib/security/pam_limits.so session required pam_limits.so
-
修改环境变量
if [ USER = "oracle" ]; then
if [ SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi[root@oracle /]# vim /etc/profile # By default, we want umask to get set. This sets it for login shell # Current threshold for system reserved uid/gids is 200 # You could check uidgid reservation validity in # /usr/share/doc/setup-*/uidgid file if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do if [ -r "$i" ]; then if [ "${-#*i}" != "$-" ]; then . "$i" else . "$i" >/dev/null fi fi done unset i unset -f pathmunge if [ -n "${BASH_VERSION-}" ] ; then if [ -f /etc/bashrc ] ; then # Bash login shells run only /etc/profile # Bash non-login shells run only /etc/bashrc # Check for double sourcing is done in /etc/bashrc. . /etc/bashrc fi fi if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
-
创建用户和用户组
groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba,oper oracle
mkdir -p /u01/app/oracle
mkdir -p /u01/oraInventory
chown -R oracle.oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
[root@oracle /]# groupadd oinstall [root@oracle /]# groupadd dba [root@oracle /]# groupadd oper [root@oracle /]# useradd -g oinstall -G dba,oper oracle [root@oracle /]# mkdir -p /u01/app/oracle [root@oracle /]# mkdir -p /u01/oraInventory [root@oracle /]# chown -R oracle.oinstall /u01 [root@oracle /]# chown -R oracle:oinstall /u01/app/oracle [root@oracle /]# chmod -R 775 /u01/app/oracle
-
修改oracle用户密码
passwd oracle
[root@oracle /]# passwd oracle Changing password for user oracle. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully.
-
配置Oracle用户环境变量
[oracle@oracle ~]$ su - oracle [oracle@oracle ~]$ vim .bash_profile
export EDITOR=vi
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
export INVENTORY_LOCATION=/u01/oraInventory
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export
NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"export PATH=ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:PATH:$HOME/bin
umask 022、[oracle@oracle ~]$ vim .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs export EDITOR=vi export TMP=/tmp export TMPDIR=$TMP export ORACLE_SID=orcl export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1 export INVENTORY_LOCATION=/u01/oraInventory export TNS_ADMIN=$ORACLE_HOME/network/admin export LD_LIBRARY_PATH=$ORACLE_HOME/lib export NLS_LANG="American_america.zhs16gbk" export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS" export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin umask 022 [oracle@oracle ~]$ source .bash_profile
-
上传Oracle压缩包到/u01下
2. 安装Oracle数据软件
2.1 安装准备
-
解压缩安装包
[root@oracle u01]# unzip linuxx64_12201_database.zip
-
修改database文件目录权限
[root@oracle u01]# chown -R oracle:oinstall database/
-
切换到oracle用户安装数据库软件
[oracle@oracle ~]$ cd /u01/database/ [oracle@oracle database]$ export DISPLAY=192.168.100.6:0.0 [oracle@oracle database]$ ./runInstaller
注:如果报一下错误,尝试以root用户安装xdpyinfo
[oracle@oracle database]$ ./runInstaller Starting Oracle Universal Installer... Checking Temp space: must be greater than 500 MB. Actual 9210 MB Passed Checking swap space: must be greater than 150 MB. Actual 1978 MB Passed Checking monitor: must be configured to display at least 256 colors >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<< Some requirement checks failed. You must fulfill these requirements before continuing with the installation,
注:如果报以下错误,日志显示为缺少 libnsl.so.1,需安装libnsl.so.1
[oracle@oracle database]$ cat /tmp/OraInstall2022-11-12_03-04-59PM/oraInstall2022-11-12_03-04-59PM.err java.lang.UnsatisfiedLinkError: /tmp/OraInstall2022-11-12_03-04-59PM/oui/lib/linux64/liboraInstaller.so: libnsl.so.1: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) at java.lang.Runtime.load0(Runtime.java:809) at java.lang.System.load(System.java:1086) at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.loadNativeLib(OiipuUnixOps.java:364) at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.<clinit>(OiipuUnixOps.java:128) at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreamsForLog(OiicPullSession.java:5382) at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreams(OiicPullSession.java:5482) at oracle.sysman.oii.oiic.OiicAPIInstaller.initInstallEnvironment(OiicAPIInstaller.java:506) at oracle.install.driver.oui.OUIInstallDriver.load(OUIInstallDriver.java:422) at oracle.install.ivw.db.driver.DBSetupDriver.load(DBSetupDriver.java:289) at oracle.install.commons.base.driver.common.Installer.run(Installer.java:516) at oracle.install.ivw.common.util.OracleInstaller.run(OracleInstaller.java:133) at oracle.install.ivw.db.driver.DBInstaller.run(DBInstaller.java:139) at oracle.install.commons.util.Application.startup(Application.java:1072) at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:181) at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:198) at oracle.install.commons.base.driver.common.Installer.startup(Installer.java:566) at oracle.install.ivw.db.driver.DBInstaller.startup(DBInstaller.java:127) at oracle.install.ivw.db.driver.DBInstaller.main(DBInstaller.java:165) ---# Begin Stacktrace #--------------------------- ID: oracle.install.commons.util.exception.AbstractErrorAdvisor:8 oracle.install.commons.base.driver.common.InstallerException: [INS-10102] Installer initialization failed. at oracle.install.commons.base.driver.common.Installer.run(Installer.java:534) at oracle.install.ivw.common.util.OracleInstaller.run(OracleInstaller.java:133) at oracle.install.ivw.db.driver.DBInstaller.run(DBInstaller.java:139) at oracle.install.commons.util.Application.startup(Application.java:1072) at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:181) at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:198) at oracle.install.commons.base.driver.common.Installer.startup(Installer.java:566) at oracle.install.ivw.db.driver.DBInstaller.startup(DBInstaller.java:127) at oracle.install.ivw.db.driver.DBInstaller.main(DBInstaller.java:165) Caused by: oracle.install.commons.base.driver.common.SetupDriverException: [INS-10012] Setup driver initialization failed. at oracle.install.driver.oui.OUIInstallDriver.load(OUIInstallDriver.java:431) at oracle.install.ivw.db.driver.DBSetupDriver.load(DBSetupDriver.java:289) at oracle.install.commons.base.driver.common.Installer.run(Installer.java:516) ... 8 more Caused by: java.lang.UnsatisfiedLinkError: no oraInstaller in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.loadNativeLib(OiipuUnixOps.java:380) at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.<clinit>(OiipuUnixOps.java:128) at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreamsForLog(OiicPullSession.java:5382) at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreams(OiicPullSession.java:5482) at oracle.sysman.oii.oiic.OiicAPIInstaller.initInstallEnvironment(OiicAPIInstaller.java:506) at oracle.install.driver.oui.OUIInstallDriver.load(OUIInstallDriver.java:422) ... 10 more ---# End Stacktrace #-----------------------------
安装方法:
[root@oracle ~]# dnf install libnsl
2.2 安装软件过程
点击“Yes”继续
用root用户先后执行这两个脚本
[root@oracle ~]# /u01/oraInventory/orainstRoot.sh
Changing permissions of /u01/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/oraInventory to oinstall.
The execution of the script is complete.
[root@oracle ~]# /u01/app/oracle/product/12.2.0/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/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] :
Oracle Trace File Analyzer (TFA - User Mode) is available at :
/u01/app/oracle/product/12.2.0/db_1/suptools/tfa/release/tfa_home/bin/tfactl
OR
Oracle Trace File Analyzer (TFA - Daemon Mode) can be installed by running this script :
/u01/app/oracle/product/12.2.0/db_1/suptools/tfa/release/tfa_home/install/roottfa.sh
[root@oracle ~]#
脚本会等待用户输入,一路按回车即可
点击“OK”继续下一步
安装成功,点击“Close”关闭即可
3. 创建监听程序
3.1创建监听过程
- 输入netca创建监听器
[oracle@oracle ~]$ export DISPLAY=192.168.100.6:0.0
[oracle@oracle ~]$ netca
-
创建过程
一路点击“Next”即可
选择“No”, 可以根据需求决定是否创建另一个监听器。
点击“Finish”
3. 创建数据库实例
3.1 创建过程
[oracle@oracle ~]$ dbca
注:先不创建快速恢复区,安装成功后,也可以再配置快速恢复区。
先选择ASMM,这个同样也可以通过参数修改
注:如果练习的话,可以选择示例schema
点击“Finish”
安装完毕,点击“Close”即可
[oracle@oracle ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 13-NOV-2022 21:33:48
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 13-NOV-2022 20:33:34
Uptime 0 days 1 hr. 0 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
输入lsnrctl status,可以看到orcl实例已经注册到监听器上了。
切换root用户可以安装以下内容,解决在sqlplus中按上下键无法查看执行过的命令的问题
[root@oracle u01]$ yum -y install rlwrap-0.37-1.el6.x86_64.rpm
在oracle用户家目录中的.bash_profile中追加以下内容
[oracle@oracle ~]$ vim .bash_profile
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'