内容大多来自网络博客、贴吧,如果侵犯了你的权益,告诉我,我删掉。
这个脚本,我自己再centos7.8+oracle19.3是测试过了的。具体在各自环境上跑,可能有细节需要调整。
#!/bin/sh
SOFTDIR=/oracle/app/oracle/product/19.3.0/dbhome_1
LOGFILE=/tmp/install_oracle.log
BASE_DIR=$(pwd)
VG_NAME=centos
########################################
#check vg room
vgs | grep -w ${VG_NAME} > /dev/null
if [ $? -eq 1 ];then
echo "vg ${VG_NAME} does not exist,please check!"
exit 1
fi
_vg_left=$(vgs | grep -w ${VG_NAME} | grep [0-9]*g | awk '{print $NF}' | sed 's/..*//')
if [ 40 -ge ${_vg_left:-0} ];then
echo "vg ${VG_NAME} useful room less than 40G "
exit 1
fi
###########################################################
##install software needed by oracle 19c
mv /etc/yum.repos.d/*.repo /tmp
echo "
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
##################
#begin install
yum install -y bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libX11 libXau libXi libXtst libgcc librdmacm libstdc++ libstdc++-devel libxcb libibverbs make smartmontools sysstat compat-libcap1 compat-libstdc++-33 unzip
#Check software
####################################################
for _rpm in bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libX11 libXau libXi libXtst libgcc librdmacm libstdc++ libstdc++-devel libxcb libibverbs make smartmontools sysstat compat-libcap1 compat-libstdc++-33 unzip
do
rpm -qa | grep -w ${_rpm} >/dev/null
if [ $? -ne 0 ]
then
echo "${_rpm} not installed"
exit 2
fi
done
########################################
#Create Oracle Filesystem
########################################
echo "Create Oracle Filesystem" >> $LOGFILE
lvcreate -L 20G -n oracle ${VG_NAME}
echo "lvcreate -L 20G -n oracle ${VG_NAME}.... OK=$?" >>$LOGFILE
vgs >> $LOGFILE
lvs >> $LOGFILE
df -h >> $LOGFILE
mkdir -p /oracle
mkfs.xfs /dev/${VG_NAME}/oracle
echo "mkfs.xfs /dev/${VG_NAME}/oracle...OK=$?" >> $LOGFILE
mount /dev/${VG_NAME}/oracle /oracle
echo "mount /dev/${VG_NAME}/oracle /oracle...OK=$?" >> $LOGFILE
mount >> $LOGFILE
echo "/dev/mapper/${VG_NAME}-oracle /oracle xfs defaults 0 0">> /etc/fstab
########################################
#Remove Default profile scripts
########################################
echo "Remove Default profile scripts" >> $LOGFILE
cd /etc/profile.d
mv oracle.sh oracle.sh.bak
mv oracle.csh oracle.csh.bak
########################################
#Delete Default User and Groups
########################################
echo "Delete Default User and Groups" >> $LOGFILE
/usr/sbin/userdel oracle
/usr/sbin/userdel grid
/usr/sbin/groupdel oinstall
/usr/sbin/groupdel dba
/usr/sbin/groupdel oper
/usr/sbin/groupdel backupdba
/usr/sbin/groupdel dgdba
/usr/sbin/groupdel kmdba
/usr/sbin/groupdel asmdba
/usr/sbin/groupdel asmoper
/usr/sbin/groupdel racdba
########################################
#Create User and Groups
########################################
echo "Create User and Groups" >> $LOGFILE
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
/usr/sbin/useradd -u 54331 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba grid
########################################
#Create Home directory and Software directory
########################################
echo "Create Home directory and Software directory" >> $LOGFILE
mkdir -p /home/oracle
mkdir -p /oracle/app/oracle/product/19.3.0/dbhome_1
##########################################
#当前测试环境为vmware,通过vm共享主机上的文件,因此路径是 /mnt/hgfs/Iso/V982063-01.zip
#如果不是,需要修改
unzip /mnt/hgfs/Iso/V982063-01.zip -d /oracle/app/oracle/product/19.3.0/dbhome_1
chown -R oracle:oinstall /oracle/app/oracle/product/19.3.0/dbhome_1
chmod -R 755 /home/oracle
chmod -R 755 /oracle
chown -R oracle:oinstall /home/oracle
chown -R oracle:oinstall /oracle
ls -l / >> $LOGFILE
########################################
#Set kernel parameters
########################################
echo "Set kernel parameters" >> $LOGFILE
MEMORY_SIZE=`grep MemTotal /proc/meminfo|awk -F ' ' '{print $2}'`
MEMORY_SIZE_BYTES=`echo $MEMORY_SIZE*1024|bc`
echo "
kernel.shmall = $MEMORY_SIZE_BYTES
kernel.shmmax = $MEMORY_SIZE_BYTES
kernel.shmmni = 4096
kernel.sem = 2500 32000 1024 1280
fs.file-max = 6815744
fs.aio-max-nr = 1048576
###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
vm.hugetlb_shm_group = 302
" >>/etc/sysctl.conf
/sbin/sysctl -p
########################################
#Create oraInst.loc
########################################
echo "Create oraInst.loc" >> $LOGFILE
echo "
inventory_loc=/oracle/app/oraInventory
inst_group=oinstall
" >/etc/oraInst.loc
########################################
#Create .bash_profile
########################################
echo "Create .profile" >> $LOGFILE
echo "
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
if [ -t 0 ]; then
stty intr ^C
fi
stty erase '^H'
umask 022
export ORACLE_SID=
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_PATH=.:$ORACLE_BASE/dba_scripts/sql:$ORACLE_HOME/rdbms/admin
export SQLPATH=$ORACLE_HOME/sqlplus/admin
export NLS_LANG="AMERICAN_CHINA.ZHS16GBK"
export ORA_NLS11=$ORACLE_HOME/nls/data
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
#####################################
#下面三个需要rlwrap 支持,是可选的
#####################################
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias asmcmd='rlwrap asmcmd'
" >/home/oracle/.bash_profile
chown oracle:oinstall /home/oracle/.bash_profile
#Create Oracle Data Filesystem
########################################
echo "Create Oracle Filesystem" >> $LOGFILE
lvcreate -L 20G -n u01 ${VG_NAME}
echo "lvcreate -L 20G -n u01 ${VG_NAME}.... OK=$?" >>$LOGFILE
vgs >> $LOGFILE
lvs >> $LOGFILE
df -h >> $LOGFILE
mkdir -p /u01
mkfs.xfs /dev/${VG_NAME}/u01
echo "mkfs.xfs /dev/${VG_NAME}/u01...OK=$?" >> $LOGFILE
mount /dev/${VG_NAME}/u01 /u01
chown -R oracle:oinstall /u01
echo "mount /dev/${VG_NAME}/u01 /u01...OK=$?" >> $LOGFILE
mount >> $LOGFILE
echo "/dev/mapper/${VG_NAME}-u01 /u01 xfs defaults 0 0">> /etc/fstab
#################################################
cd $SOFTDIR
echo "$SOFTDIR/runInstaller -silent -force -noconfig -ignorePrereq
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/oracle/app/oraInventory
ORACLE_BASE=/oracle/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_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
oracle.install.db.rootconfig.executeRootScript=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.ConfigureAsContainerDB=true
oracle.install.db.config.starterdb.managementOption=DEFAULT
oracle.install.db.config.starterdb.omsPort=0
oracle.install.db.config.starterdb.enableRecovery=false
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata" >>$LOGFILE
mkdir -p /home/oracle
mkdir -p /oracle/app/oracle/product/19.3.0/dbhome_1
chmod -R 755 /home/oracle
chmod -R 755 /oracle
chown -R oracle:oinstall /home/oracle
chown -R oracle:oinstall /oracle
ls -l >> $LOGFILE
su - oracle -c "$SOFTDIR/runInstaller -silent -force -noconfig -ignorePrereq
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/oracle/app/oraInventory
ORACLE_BASE=/oracle/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_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
oracle.install.db.rootconfig.executeRootScript=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.ConfigureAsContainerDB=true
oracle.install.db.config.starterdb.managementOption=DEFAULT
oracle.install.db.config.starterdb.omsPort=0
oracle.install.db.config.starterdb.enableRecovery=false
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata "<<EOF
yuqq
EOF
#########################################################
#安装的时候需要输入root密码,记得改成你自己的root密码
#########################################################
#############################################
#sh /oracle/app/oracle/product/19.3.0/dbhome_1/root.sh <<EOF
sh /oracle/app/oracle/product/19.3.0/dbhome_1/root.sh
#########################
#oracle安装文件解压缩到 $ORACLE_HOME ,解压缩后是6.6G
#oracle安装完成后 7.1G
# /dev/mapper/${VG_NAME}-oracle 20G 7.1G 13G 36% /oracle
#####################################
#create db
su - oracle -c "dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE
-gdbname QQ -sid QQ
-createAsContainerDatabase TRUE
-numberOfPDBs 1
-pdbName lhrpdb2
-pdbAdminPassword lhr
-sysPassword lhr -systemPassword lhr
-datafileDestination '/u01/app/oracle/oradata'
-recoveryAreaDestination '/u01/app/oracle/flash_recovery_area'
-redoLogFileSize 50
-storageType FS
-characterset AL32UTF8 -nationalCharacterSet AL16UTF16
-sampleSchema true
-totalMemory 2048
-databaseType OLTP
-emConfiguration NONE"
############################################
#create /tmp/netca.rsp
echo "
[GENERAL]
RESPONSEFILE_VERSION="19.3"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"} " >/tmp/netca.rsp
####################################
#create LISTENER
su - oracle -c "netca -silent -responsefile /tmp/netca.rsp"
########################################################################
安装完成后,务必修改oracle用户下的.bash_profile文件ORACLE_SID配置。
如果没有修改,直接登录,会报错:
Enter user-name:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
########################################################################