由于多次安装踩坑,所以本次写了一份12c安装的完整版。可以直接使用。
一、安装数据库基本信息
名称 | 值 |
主机名 | database |
操作系统 | CentOS Linux release 8.5.2111 |
Oracle用户名/密码 | oracle |
Oracle 版本 | 12c Enterprise Edition Release 12.2.0.1.0 |
oracle用户SID | orcl |
Pdb的SID | orclpdb |
ORACLE_BASE | /data/app/oracle |
ORACLE_HOME | /data/app/oracle/product/12.2.0/db_1 |
IP | 192.168.49.148/24 |
二、安装前环境准备
将jdk上传到/tmp下
tar? -zxvf? /tmp/openjdk-11+28_linux-x64_bin.tar.gz?? -C? /opt/
echo "export JAVA_HOME=/opt/jdk-11
export PATH=\$JAVA_HOME/bin:\$PATH" >> ~/.bash_profile
. ~/.bash_profile
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service ?#禁止firewall开机启动
systemctl status firewalld.service #查看firewall状态
#/etc/hosts
echo "192.168.49.148 database">> /etc/hosts
#/etc/hostname
echo "database" > /etc/hostname
#/etc/sysconfig/network
echo "database" >> /etc/sysconfig/network
执行reboot重启环境
改为SELINUX=disabled
sed -i 's/enforcing/disabled/g' /etc/selinux/config
备份原有的yum源文件,以便需要时恢复:
mv /etc/yum.repos.d/CentOS-* /tmp/
下载并安装阿里云的CentOS 8源配置文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
清理缓存
yum clean all
执行以下命令生成缓存
yum makecache
yum -y install binutils
yum -y install gcc
yum -y install gcc-c++
yum -y install glibc
yum -y install glibc.i686
yum -y install glibc-devel
yum -y install glibc-devel.i686
yum -y install ksh
yum -y install libgcc
yum -y install libgcc.i686
yum -y install libstdc++
yum -y install libstdc++.i686
yum -y install libstdc++-devel
yum -y install libstdc++-devel.i686
yum -y install libaio
yum -y install libaio.i686
yum -y install libaio-devel
yum -y install libaio-devel.i686
yum -y install libXext
yum -y install libXext.i686
yum -y install libX11
yum -y install libX11.i686
yum -y install libxcb
yum -y install libxcb.i686
yum -y install libXi
yum -y install libXi.i686
yum -y install make sysstat
yum -y install libnsl.x86_64
rpm -q? binutils \
gcc \
gcc-c++ \
glibc \
glibc.i686 \
glibc-devel \
glibc-devel.i686 \
ksh \
libgcc \
libgcc.i686\
libstdc++ \
libstdc++.i686 \
libstdc++-devel \
libstdc++-devel.i686 \
libaio \
libaio.i686 \
libaio-devel \
libaio-devel.i686 \
libXext \
libXext.i686 \
libX11 \
libX11.i686 \
libxcb \
libxcb.i686 \
libXi \
libXi.i686 \
make sysstat \
libnsl.x86_64
groupadd oinstall
groupadd oper
groupadd dba
groupadd backupdba
groupadd dgdba
groupadd kmdba
groupadd racdba
useradd -g oinstall -G oper,dba,backupdba,dgdba,kmdba,racdba -p `openssl passwd -1 "oracle"` -d /home/oracle oracle
当前用户下(可不执行):
echo "export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=/data/app/oracle/product/12.2.0/db_1
export ORACLE_SID=orcl
# sqlplus 使用的一些.so文件
export LD_LIBRARY_PATH=\$ORACLE_HOME/stage/ext/lib
PATH=\$PATH:\$HOME/.local/bin:\$HOME/bin:\$ORACLE_HOME/bin
export PATH " >> ~/.bash_profile
. ~/.bash_profile
Oracle用户下:
su - oracle
echo "export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=/data/app/oracle/product/12.2.0/db_1
export ORACLE_SID=orcl
# sqlplus 使用的一些.so文件
export LD_LIBRARY_PATH=\$ORACLE_HOME/stage/ext/lib
PATH=\$PATH:\$HOME/.local/bin:\$HOME/bin:\$ORACLE_HOME/bin
export PATH " >> ~/.bash_profile
. ~/.bash_profile
shmall=$(echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` / (`getconf PAGESIZE` / 1024)" | bc)
shmmax=$(echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` * 1024 * 0.8" | bc? | sed 's#\..*$##')
cat << EOF > /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF
sysctl -p
修改/etc/security/limits.conf
cat << EOF > /etc/security/limits.conf
oracle?? soft?? nproc??? 131072
oracle?? hard?? nproc??? 131072
oracle?? soft?? nofile?? 131072
oracle?? hard?? nofile?? 131072
oracle?? soft?? stack??? 10240
oracle?? hard?? stack??? 32768
oracle?? soft?? memlock? 50000000
oracle?? hard?? memlock? 50000000
EOF
Login添加oracle信息
echo "session required /lib64/security/pam_limits.so
session required pam_limits.so" >> /etc/pam.d/login
三、oracle安装
建议安装文件放到/tmp下
unzip? linuxx64_12201_database.zip
mkdir -p /data/app/oracle/product/12.2.0/db_1
chown -R oracle:oinstall /data
安装:安装直接解压到database目录即可,进入database目录,用oracle用户运行
su? -? oracle
cd? /tmp/database/
./runInstaller -silent -force \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/data/app/oraInventory \
ORACLE_HOME=/data/app/oracle/product/12.2.0/db_1 \
ORACLE_BASE=/data/app/oracle \
oracle.install.db.InstallEdition=EE \
oracle.install.db.isCustomInstall=false \
oracle.install.db.DBA_GROUP=dba \
oracle.install.db.OPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
oracle.install.db.OSDGDBA_GROUP=dgdba \
oracle.install.db.OSKMDBA_GROUP=kmdba \
oracle.install.db.OSRACDBA_GROUP=racdba \
DECLINE_SECURITY_UPDATES=true
su? -
/data/app/oraInventory/orainstRoot.sh
/data/app/oracle/product/12.2.0/db_1/root.sh
su? - oracle
cd $ORACLE_HOME
netca -silent -responseFile `pwd`/assistants/netca/netca.rsp
lsnrctl status
三、初始化实例(二选一)
方法一:使用资源文件
编辑assistants/dbca/dbca.rsp
gdbName=
SID=
templateName=General_Purpose.dbc
sysPassword=
systemPassword=
characterSet=
nationalCharacterSet=
初始化数据库
dbca -createdatabase -silent -responseFile `pwd`/assistants/dbca/dbca.rsp
方法二:使用命令参数
多租户(二选一,本次使用该配置)
dbca -silent -createDatabase \
?-templateName General_Purpose.dbc \
?-gdbname orcl -sid orcl -responseFile NO_VALUE \
?-characterSet AL32UTF8 \
?-sysPassword oracle \
?-systemPassword oracle \
?-createAsContainerDatabase true \
?-numberOfPDBs 1 \
?-pdbName orclpdb \
?-pdbAdminPassword oracle \
?-databaseType MULTIPURPOSE \
?-memoryMgmtType auto_sga \
?-totalMemory 1536 \
?-storageType FS \
?-datafileDestination "/data/app/oracle/oradata/" \
?-redoLogFileSize 50 \
?-emConfiguration NONE \
?-ignorePreReqs
注意:此处提示是密码设置过于简单,忽略。
简单配置(二选一,不带PDB库)
dbca -silent -createDatabase \
?-templateName General_Purpose.dbc \
?-gdbname orcl -sid orcl -responseFile NO_VALUE \
?-characterSet AL32UTF8 \
?-sysPassword oracle \
?-systemPassword oracle \
?-emConfiguration NONE \
?-ignorePreReqs