主頁 > 資料庫 > Oracle Linux7.8 下離線 一鍵靜默安裝Oracle12c

Oracle Linux7.8 下離線 一鍵靜默安裝Oracle12c

2020-09-10 08:45:58 資料庫

目錄

    • 安裝前的準備
      • 最小安裝OracleLinux7.8(centos7.8一樣)
      • 安裝oracle需要的依賴包
    • 準備Oracle安裝包
    • 準備一鍵安裝腳本 并執行
        • 腳本使用安裝前配置
  • 問題及解決方法:
      • 錯誤碼ORA-28040

之前下載centos8.2 來安裝oracle12c 發現怎么都裝不成功,最后發現
oracle官方Linux7 系列之支持oracle 最高版本到18c linux8系列 只有oracle 19c支持,故果斷下載oracle linux 7.8(跟centos7.8安裝類似 )
安裝oracle12c

腳本為一鍵靜默安裝,因為考慮到服務器不能聯網的特點,連同必須的rpm包一起打包,真正做到了【一鍵靜默離線安裝oracle12c!】

安裝前的準備

最小安裝OracleLinux7.8(centos7.8一樣)

(文末附下載)
安裝詳細程序不做介紹,一步一步即可
主要選擇軟體包的時候,選擇基本的開發環境包和兼容包即可,

在這里插入圖片描述

安裝oracle需要的依賴包

需要rmp包串列如下:(附下載)

binutils-2.27-43.base.0.1.el7_8.1.x86_64.rpm
compat-libstdc++-33-3.2.3-72.el7.i686.rpm
cpp-4.8.5-39.0.5.el7.x86_64.rpm
gcc-4.8.5-39.0.5.el7.x86_64.rpm
gcc-c++-4.8.5-39.0.5.el7.x86_64.rpm
gcc-gfortran-4.8.5-39.0.5.el7.x86_64.rpm
glibc-2.17-307.0.1.el7.1.i686.rpm
glibc-devel-2.17-307.0.1.el7.1.i686.rpm
gpm-libs-1.20.7-6.el7.x86_64.rpm
gssproxy-0.7.0-28.el7.x86_64.rpm
keyutils-1.5.8-3.el7.x86_64.rpm
ksh-20120801-142.0.1.el7.x86_64.rpm
libaio-0.3.109-13.el7.i686.rpm
libaio-devel-0.3.109-13.el7.i686.rpm
libaio-devel-0.3.109-13.el7.x86_64.rpm
libbasicobjects-0.1.1-32.el7.x86_64.rpm
libcollection-0.7.0-32.el7.x86_64.rpm
libevent-2.0.21-4.el7.x86_64.rpm
libgcc-4.8.5-39.0.5.el7.i686.rpm
libgcc-4.8.5-39.0.5.el7.x86_64.rpm
libgfortran-4.8.5-39.0.5.el7.x86_64.rpm
libgomp-4.8.5-39.0.5.el7.x86_64.rpm
libini_config-1.3.1-32.el7.x86_64.rpm
libnfsidmap-0.25-19.el7.x86_64.rpm
libpath_utils-0.2.1-32.el7.x86_64.rpm
libquadmath-4.8.5-39.0.5.el7.x86_64.rpm
libquadmath-devel-4.8.5-39.0.5.el7.x86_64.rpm
libref_array-0.1.5-32.el7.x86_64.rpm
libstdc++-4.8.5-39.0.5.el7.i686.rpm
libstdc++-4.8.5-39.0.5.el7.x86_64.rpm
libstdc++-devel-4.8.5-39.0.5.el7.i686.rpm
libstdc++-devel-4.8.5-39.0.5.el7.x86_64.rpm
libtirpc-0.2.4-0.16.el7.x86_64.rpm
libverto-libevent-0.2.5-4.el7.x86_64.rpm
libX11-1.6.7-2.el7.i686.rpm
libX11-1.6.7-2.el7.x86_64.rpm
libX11-common-1.6.7-2.el7.noarch.rpm
libXau-1.0.8-2.1.el7.i686.rpm
libXau-1.0.8-2.1.el7.x86_64.rpm
libxcb-1.13-1.el7.i686.rpm
libxcb-1.13-1.el7.x86_64.rpm
libXext-1.3.3-3.el7.i686.rpm
libXext-1.3.3-3.el7.x86_64.rpm
libXi-1.7.9-1.el7.i686.rpm
libXi-1.7.9-1.el7.x86_64.rpm
libXtst-1.2.3-1.el7.i686.rpm
libXtst-1.2.3-1.el7.x86_64.rpm
lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm
mailx-12.5-19.el7.x86_64.rpm
net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
nfs-utils-1.3.0-0.66.0.1.el7_8.x86_64.rpm
nss-softokn-freebl-3.44.0-8.0.1.el7_7.i686.rpm
quota-4.01-19.el7.x86_64.rpm
quota-nls-4.01-19.el7.noarch.rpm
rpcbind-0.2.0-49.el7.x86_64.rpm
smartmontools-7.0-2.el7.x86_64.rpm
sysstat-10.1.5-19.el7.x86_64.rpm
tcp_wrappers-7.6-77.el7.x86_64.rpm
unixODBC-2.3.1-14.0.1.el7.x86_64.rpm
unixODBC-devel-2.3.1-14.0.1.el7.x86_64.rpm
vim-common-7.4.629-6.0.1.el7.x86_64.rpm
vim-enhanced-7.4.629-6.0.1.el7.x86_64.rpm
vim-filesystem-7.4.629-6.0.1.el7.x86_64.rpm
wget-1.14-18.el7_6.1.x86_64.rpm
zlib-1.2.7-18.el7.i686.rpm
zlib-devel-1.2.7-18.el7.i686.rpm
zlib-devel-1.2.7-18.el7.x86_64.rpm

這些依賴包下載后打包成oracle_pkg.tar 并放入/Data/soft檔案夾下
本文已經將rmp打包完畢 直接下載即可使用,
oracle12c所需要的庫檔案下載

準備Oracle安裝包

把Oracle12C原安裝包"linuxx64_12201_database.zip" 放入 /Data/soft
這個linuxx64_12201_database.zip需要去oracle 官網下載即可
或者在網盤里下載
兩個鏈接下載哪個都可以
下載鏈接1
下載鏈接2

準備一鍵安裝腳本 并執行

一鍵安裝腳本借鑒spdir大神的 https://github.com/spdir/oracle-single-install
并進行了修改,可以靈活自定義安裝oracle的路徑和源檔案位置并支持不聯網的情況下安裝oracle12c

腳本使用安裝前配置

root用戶執行(盡量系統為純凈環境)

  1. 安裝前請將Oracle 12C安裝包放置在/Data/soft目錄下,如果是其他目錄修改腳本中的softdir變數
  2. 系統需要具備512MB的交換磁區
  3. 并配置以下資訊
    本機IP地址 HostIP 設定改成自己的IP
    腳本是通過
HostIP=`ip a | grep ens32 | grep inet |awk '{print $2}'|cut -d / -f 1`

注意上面的ens32 是自己電腦的網卡名稱,如果是eth0 或者其他名字請更換為正確的網卡名稱,

  • Oracle用戶密碼 OracleUserPasswd 默認為oracle
  • Oracle資料庫管理員密碼 ORACLE_DB_PASSWD 默認為 Oracle#123
  • Oracle SID/ServerName SID 默認為 orcl12c
  • 是否安裝實體 IS_INSTANCE
    • 0-不安裝實體
    • 1-安裝單實體(默認)
    • 2-安裝cdb : 因為CDB在初始化程序中需要輸入引數,需要手動初始化,具體步驟會在最后進行提示
  • 設定單實體默認字符編碼SINGLE_CHARSET
    • 1-AL32UTF8
    • 2-ZHS16GBK默認
  • 選擇配置靜默安裝組態檔的獲取方式Get_Config_Method
    • 0-遠程
    • 2-本地獲取(默認)(腳本執行根目錄下需要有conf目錄存放組態檔)
      • db_install.rsp 資料庫安裝組態檔
      • dbca_single.rsp 資料庫單實體初始化組態檔
      • initcdb.ora CDB初始化組態檔

腳本以及conf檔案打包下載地址:
一鍵腳本以及組態檔下載
一鍵安裝腳本部分內容:

#!/bin/bash
#oracle 12c
#local host ip

datadir=/Data
softdir=/Data/soft
HostIP=`ip a | grep ens32 | grep inet |awk '{print $2}'|cut -d / -f 1`

#oracle user password
OracleUserPasswd="oracle"
#default `systemOracle.com`
read -p "please enter the password you want to set for SYS,SYSMAN,SYSTEM&DBSNMP[at least 8 characters with digits, upper and lower case letters [default:Oracle#123]:" ORACLE_DB_PASSWD
 if [ -z "$ORACLE_DB_PASSWD" ];then
        ORACLE_DB_PASSWD="Oracle#123"
        fi
#SID/SERVERNAME,default `orcl12c`
read -p "Please input oracle server SID[ex: orcl12c]: " SID
 if [ -z "$SID" ];then
        SID="orcl12c"
        fi
# Install single instance choose charset
# 1-AL32UTF8(default), 2-ZHS16GBK
# Currently only supports single instance, does not support pdb
SINGLE_CHARSET='2'
# Install instance
#0-no,1-singleInstance,2-cdb
IS_INSTANCE='1'
# Choose configure file path
# 0-remote(default)  1-local
Get_Config_Method="1"
#---------------------------------------------------------------------------------#
#Global environment variable
if [[ ${SID} == "" ]];then
  SID="oriedb"
fi
root_path=$softdir
response='/home/oracle/response'
MemTotle=$(grep -r 'MemTotal' /proc/meminfo | awk -F ' ' '{print int($2/1024/1024+1)}')
ORACLE_HOME=${datadir}/oracle/product/12.2.0/db_1
con_name="
sqlplus / as sysdba<< EOF
show con_name;
exit;
EOF
"
web_plugin="
sqlplus / as sysdba<< EOF
exec dbms_xdb_config.sethttpport(1522);
exit;
EOF
"
cdb_sql="
sqlplus / as sysdba<< EOF
shutdown abort;
create spfile from pfile='"$ORACLE_HOME/dbs/initcdb.ora"';
startup nomount;
CREATE DATABASE ${SID}
USER SYS IDENTIFIED BY pass
USER SYSTEM IDENTIFIED BY pass
LOGFILE GROUP 1 ('"${datadir}/oracle/oradata/${SID}/redo01a.log"','"${datadir}/oracle/oradata/${SID}/redo01b.log"')
SIZE 100M BLOCKSIZE 512,
GROUP 2 ('"${datadir}/oracle/oradata/${SID}/redo02a.log"','"${datadir}/oracle/oradata/${SID}/redo02b.log"')
SIZE 100M BLOCKSIZE 512
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '"${datadir}/oracle/oradata/${SID}/system01.dbf"' SIZE 700M
SYSAUX DATAFILE '"${datadir}/oracle/oradata/${SID}/sysaux01.dbf"' SIZE 550M
DEFAULT TABLESPACE deftbs
DATAFILE '"${datadir}/oracle/oradata/${SID}/deftbs01.dbf"' SIZE 500M
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '"${datadir}/oracle/oradata/${SID}/temp01.dbf"' SIZE 20M
UNDO TABLESPACE undotbs1
DATAFILE '"${datadir}/oracle/oradata/${SID}/undotbs01.dbf"' SIZE 200M
ENABLE PLUGGABLE DATABASE
SEED
FILE_NAME_CONVERT = ('"${datadir}/oracle/oradata/${SID}/"',
'${datadir}/oracle/oradata/pdbseed/')
SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
SYSAUX DATAFILES SIZE 100M
USER_DATA TABLESPACE usertbs
DATAFILE '${datadir}/oracle/oradata/pdbseed/usertbs01.dbf' SIZE 200M;
exit
EOF
"

#Judgment parameter
function j_para() {
  #判斷必要引數是否存在
  if [[ ${HostIP} == '' ]];then
    echo -e "\033[34mInstallNotice >>\033[0m \033[31mPlease config HostIP\033[0m"
    exit
  fi
  if [ -e $datadir ]
	then
    echo "The default installation directory for oracle[$datadir] already exists. Please specify a new installation directory to continue!"
    read -p "Please input installation directory for oracle[Ex: /Data]: " datadir
	 if [ -z "$datadir" ];then
        datadir="/Data"
        fi
fi
mkdir $datadir && chmod 777 $datadir 

  #判斷資料庫包檔案是否存在
  if [ ! -f ${softdir}/linuxx64_12201_database.zip ]; then
    echo -e "\033[34mInstallNotice >>\033[0m \033[31mlinuxx64_12201_database.zip not found\033[0m"
    exit
  fi
  if [[ ${Get_Config_Method} == "1" ]]; then
    if [[ ${IS_INSTANCE} == '1' ]]; then
      if [[ ! -f ${root_path}/conf/db_install.rsp || ! -f ${root_path}/conf/dbca_single.rsp ]]; then
        echo -e "\033[34mInstallNotice >>\033[0m \033[31m ./conf/db_install.rsp or ./conf/dbca_single.rsp file not found\033[0m"
        exit
      fi
    elif [[ ${IS_INSTANCE} == '2' ]]; then
      if [[ ! -f ${root_path}/conf/initcdb.ora ]]; then
        echo -e "\033[34mInstallNotice >>\033[0m \033[31m ./conf/initcdb.ora file not found\033[0m"
        exit
      fi
    else
      if [[ ! -f ${root_path}/conf/db_install.rsp ]]; then
        echo -e "\033[34mInstallNotice >>\033[0m \033[31m ./conf/db_install.rsp file not found\033[0m"
        exit
      fi
    fi
  fi
}

#install package
function install_package() {
if [[ ${Get_Config_Method} == "1" ]]; then
	 #判斷包檔案是否存在
  if [ ! -f ${softdir}/oracle_pkg.tar ]; then
    echo -e "\033[34mInstallNotice >>\033[0m \033[31m oracle_pkg.tar not found\033[0m"
    exit
  fi
	mkdir -p /Data/packages
	mv ${softdir}/oracle_pkg.tar /Data/packages
    cd /Data/packages #切換到目錄
	tar xvf oracle_pkg.tar #解壓依賴包
	yum localinstall *.rpm --nogpgcheck
  else
     yum 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 gcc gcc-c++ libXext libXext.i686 zlib-devel zlib-devel.i686 unzip wget vim epel-release
  fi
}

#base_config
function base_config() {
  dbhostname= ${HOSTNAME}_${HostIP##*.}
  echo "${HostIP}  ${dbhostname}" >> /etc/hosts
  hostnamectl set-hostname dbhostname
  ping -c 3 $HOSTNAME
  #close selinux
  sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  setenforce 0
  #close firewalld
  systemctl stop firewalld && systemctl disable firewalld
  #add user and group
  groupadd oinstall && groupadd dba && groupadd oper && useradd -g oinstall -G dba,oper oracle \
  && echo "$OracleUserPasswd" | passwd oracle --stdin
  #mkdir oracle need directory
  orcl_home=$datadir
  mkdir -p ${orcl_home}/oracle/product/12.2.0/db_1 && chmod -R 775 ${orcl_home}/oracle \
  && chown -R oracle:oinstall ${orcl_home}
  #modify some file
  echo '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
  ' >> /etc/sysctl.conf  && sysctl -p
  echo '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
  ' >> /etc/security/limits.d/20-nproc.conf
  echo 'session  required   /lib64/security/pam_limits.so
  session  required   pam_limits.so
  ' >> /etc/pam.d/login
  echo 'if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
     ulimit -p 16384
     ulimit -n 65536
    else
     ulimit -u 16384 -n 65536
    fi
  fi
  ' >> /etc/profile
  #add oracle environmental variable
  echo '# Oracle Settings
  export TMP=/tmp
  export TMPDIR=$TMP
  export ORACLE_HOSTNAME=DB
  export ORACLE_UNQNAME=oriedb
  export ORACLE_BASE=/data/app/oracle
  export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
  export ORACLE_SID=oriedb
  export PATH=/usr/sbin:$PATH
  export PATH=$ORACLE_HOME/bin:$PATH
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  ' > /tmp/oracleInstallTmp.txt

  if [[ ${SID} != 'oriedb' ]];then
    sed -i "s/oriedb/${SID}/g" /tmp/oracleInstallTmp.txt
  fi
  if [[ ${datadir} != '/data/app' ]];then
     sed -i "s#/data/app#${datadir}#g" /tmp/oracleInstallTmp.txt
  fi
   if [[ ${dbhostname} != '=DB' ]];then
     sed -i "s#=DB#=${dbhostname}#g" /tmp/oracleInstallTmp.txt
  fi
  
  cat /tmp/oracleInstallTmp.txt >> /home/oracle/.bash_profile && bash /home/oracle/.bash_profile
  rm -rf /tmp/oracleInstallTmp.txt
}

#option oracle file
function oracle_file() {
  #Decompression package
  unzip ${softdir}/linuxx64_12201_database.zip -d ${softdir}
  chown -R oracle:oinstall ${softdir}/database
  #get install config file
  mkdir -p ${response} && cd ${response}
  # delete old config
  rm -rf {db_install.rsp,dbca_single.rsp}
  # get config method
  if [[ ${Get_Config_Method} == "1" ]]; then
    cp ${root_path}/conf/db_install.rsp .
    cp ${root_path}/conf/dbca_single.rsp .
  else
    echo "ERROR,please put db_install.rsp &db_install.rsp in conf directory"
	exit
  fi
  #modify config file
  if [[ ${ORACLE_DB_PASSWD} != "" ]];then
    sed -i "s/systemOracle.com/${ORACLE_DB_PASSWD}/g" dbca_single.rsp
  fi
  #option memory gt 4G
  if [[ ${MemTotle} -gt 4 ]];then
    sed -i 's/automaticMemoryManagement=true/automaticMemoryManagement=false/g' \
     /home/oracle/response/dbca_single.rsp
  fi
  #modify config file `SID`
  if [[ ${SID} != 'oriedb' ]];then
     sed -i "s/oriedb/${SID}/g" db_install.rsp
     sed -i "s/oriedb/${SID}/g" dbca_single.rsp
  fi
  if [[ ${datadir} != '/data/app' ]];then
     sed -i "s#/data/app#${datadir}#g" db_install.rsp
     sed -i "s#/data/app#${datadir}#g" dbca_single.rsp
  fi
  #modify oracle single instance default charset
  if [[ ${SINGLE_CHARSET} == '2' ]]; then
     sed -i 's/characterSet=AL32UTF8/characterSet=ZHS16GBK/g' dbca_single.rsp
  fi
  #copy config file to oracle home
  cp ${softdir}/database/response/netca.rsp ${response}/netca.rsp
  chown -R oracle:oinstall ${response}
  
 echo -e "\n\nThis program uniformly sets the password for sys, system, sysman and DBSNMP accounts."
echo "User defines the following environment variables:"
echo ">> ORACLE_HOME is: $datadir/oracle/product/12.2.0/db_1"
echo ">> ORACLE_BASE is: $datadir/oracle"
echo ">> Database SID is: $SID"
echo ">> SYS&SYSMAN.. user's password is set: $ORACLE_DB_PASSWD "
read -p "Press Enter to continue ..."
}

#start install oracle software and start listen
function install_oracle() {
  #start install oracle
  oracle_out='/tmp/oracle.out'
  su - oracle -c "${softdir}/database/runInstaller -force -silent -noconfig \
  -responseFile ${response}/db_install.rsp -ignorePrereq" 1> ${oracle_out}
  echo -e "\033[34mInstallNotice >>\033[0m \033[32moracle install starting \033[05m...\033[0m"
  while true; do
    grep '[FATAL] [INS-10101]' ${oracle_out} &> /dev/null
    if [[ $? == 0 ]];then
      echo -e "\033[34mInstallNotice >>\033[0m \033[31moracle start install has [ERROR]\033[0m"
      cat ${oracle_out}
      exit
    fi
    cat /tmp/oracle.out  | grep sh
    if [[ $? == 0 ]];then
      `cat /tmp/oracle.out  | grep sh | awk -F ' ' '{print $2}' | head -1`
	  if [[ $? == 0 ]]; then
        echo -e "\033[34mInstallNotice >>\033[0m \033[32mScript 1 run ok\033[0m"
	  else
	    echo -e "\033[34mInstallNotice >>\033[0m \033[31mScript 1 run faild\033[0m"
	  fi
      `cat /tmp/oracle.out  | grep sh | awk -F ' ' '{print $2}' | tail -1`
	  if [[ $? == 0 ]];then
        echo -e "\033[34mInstallNotice >>\033[0m \033[32mScript 2 run ok\033[0m"
	  else
	    echo -e "\033[34mInstallNotice >>\033[0m \033[31mScript 2 run faild\033[0m"
	  fi
      #start listen
      echo -e "\033[34mInstallNotice >>\033[0m \033[32mOracle start listen \033[05m...\033[0m"
      su - oracle -c "netca /silent /responsefile ${response}/netca.rsp"
      netstat -anptu | grep 1521
      if [[ $? == 0 ]]; then
        echo -e "\033[34mInstallNotice >>\033[0m \033[32mOracle run listen\033[0m"
        break
      else
        echo -e "\033[34mInstallNotice >>\033[0m \033[31mOracle no run listen\033[0m"
        exit
      fi
    fi
  done
}

#install oracle single instance
function single_instance() {
  echo -e "\033[34mInstallNotice >>\033[0m \033[32mStart install single instance \033[05m...\033[0m"
  #此安裝程序會輸入三次密碼,超級管理員,管理員,庫(這些密碼也可以在組態檔中寫)
  su - oracle -c "dbca -silent -createDatabase  -responseFile ${response}/dbca_single.rsp"
  su - oracle -c "mkdir -p ${datadir}/oracle/oradata/${SID}/"
  su - oracle -c "${con_name}" > /tmp/oracle.out1
  su - oracle -c "${web_plugin}"
  grep "${SID}" /tmp/oracle.out1
  if [[ $? == 0 ]];then
    echo -e "\033[34mInstallNotice >>\033[0m \033[32mOracle and instances install successful\033[0m"
    finish
    echo -e "\033[34mYou can visit (http://${HostIP}:1522/em) for web management.\033[0m"
  else
    echo -e "\033[34mInstallNotice >>\033[0m \033[31mOracle install successful,but instances init faild\033[0m"
  fi
  rm -rf /tmp/oracle.out1
  exit
}

#install oracle cdb instance
function cdb_pdb() {
  echo -e "\033[34mInstallNotice >>\033[0m \033[32mStart install CDB \033[05m...\033[0m"
  INIT_CDB_FILE="${datadir}/oracle/product/12.2.0/db_1/dbs/initcdb.ora"
  rm -rf ${INIT_CDB_FILE}
  if [[ ${Get_Config_Method} == "1" ]]; then
    cp ${root_path}/conf/initcdb.ora ${INIT_CDB_FILE}
  else
      wget https://raw.githubusercontent.com/spdir/oracle-single-install/master/conf/initcdb.ora -O ${INIT_CDB_FILE}
  fi
  
  if [[ ${SID} != 'oriedb' ]];then
    sed -i "s/oriedb/${SID}/g" ${INIT_CDB_FILE}
  fi
   if [[ ${datadir} != '/data/app' ]];then
     sed -i "s/\/data\/app/${datadir}/g"  ${INIT_CDB_FILE}
  fi
  if [[ ${MemTotle} -gt 4 ]];then
    cdb_mem=`expr ${MemTotle} / 3`
    proc=`expr 150 \* ${cdb_mem}`
    sed -i "s/memory_target=1G/memory_target=${cdb_mem}G/g" ${INIT_CDB_FILE}
    sed -i "s/processes = 150/processes = ${proc}/g" ${INIT_CDB_FILE}
  fi
  chown -R oracle:oinstall ${INIT_CDB_FILE}
  su - oracle -c "
  mkdir -p ${datadir}/oracle/oradata/${SID}
  mkdir -p ${datadir}/oracle/oradata/pdbseed
  mkdir -p ${datadir}/oracle/admin/${SID}/adump
  mkdir -p ${datadir}/oracle/fast_recovery_area
  "
  echo ${cdb_sql}
  su - oracle -c "${cdb_sql}"
  su - oracle -c "sed -i '35s/util/Util/g' ${datadir}/oracle/product/12.2.0/db_1/rdbms/admin/catcdb.pl"
  echo -e '\033[42;31mFollow the steps to run the following commands\033[0m
  \033[34m1. $ \033[32msu - oracle\033[0m\033[0m
  \033[34m2. $ \033[32mcd ${datadir}/oracle/product/12.2.0/db_1/perl/lib/5.22.0/x86_64-linux-thread-multi/Hash/\033[0m\033[0m
  \033[34m3. $ \033[32mexport PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/perl/bin:$ORACLE_HOME/jdk/bin:$PATH\033[0m\033[0m
  \033[34m4. $ \033[32msqlplus / as sysdba\033[0m\033[0m
  \033[34m5. SQL > \033[32m@?/rdbms/admin/catcdb.sql\033[0m\033[0m
  \033[34m   Enter value for 1: \033[32m${datadir}/oracle/product/12.2.0/db_1/rdbms/admin\033[0m\033[0m
  \033[34m   Enter value for 2: \033[32m${datadir}/oracle/product/12.2.0/db_1/rdbms/admin/catcdb.pl\033[0m\033[0m
  \033[34m   Enter new password for SYS: \033[32msys user password\033[0m\033[0m
  \033[34m   Enter new password for SYSTEM: \033[32msystem user password\033[0m\033[0m
  \033[34m   Enter temporary tablespace name: \033[32mtablespace name\033[0m\033[0m
  \033[34m6. SQL > \033[32mshow con_name;\033[0m\033[0m
  \033[34m7. SQL > \033[32mshow pdbs;\033[0m\033[0m'
  echo -e '\033[33mThe initialization process is relatively long. Please wait patiently.\033[0m'
  echo -e '\033[33mCDB use reference: \033[34mhttps://www.cnblogs.com/zhichaoma/p/9328765.html\033[0m'
  exit
}

#install oracle instance
function oracle_instance() {
  #安裝Oracle實體
  if [[ ${IS_INSTANCE} == '1' ]]; then  #install single instance
    single_instance
  elif [[ ${IS_INSTANCE} == '2' ]];then   #install oracle cdb
    cdb_pdb
  else  # not install instance
    echo -e "\033[34mInstallNotice >>\033[0m \033[32mOracle install successful, but there are no instances of installation\033[0m"
    exit
  fi
}
function finish()
{
echo "Oracle install successful"
echo ">> ORACLE_HOME is: $datadir/oracle/product/12.2.0/db_1"
echo ">> ORACLE_BASE is: $datadir/oracle"
echo ">> Database SID is: $SID"
echo ">> SYS&SYSMAN.. user's password is set: $ORACLE_DB_PASSWD "
}

function main() {
  j_para && \
  install_package && \
  base_config && \
  oracle_file && \
  install_oracle && \
  oracle_instance
}

#run script
main

https://download.csdn.net/download/cuman/12820728
https://download.csdn.net/download/cuman/12820878
https://pan.baidu.com/s/1YvgmT0_Pm7y4O2XOxlFc3g

上面檔案如果都下載好
服務器/Data/soft 目錄完整檔案應該為
在這里插入圖片描述

cd /Data/soft
tar xvf oracleLinux7_install_oracle12c.tar
chmod +x oracleLinux7_install_oracle12c.sh
sh oracleLinux7_install_oracle12c.sh 

腳本默認安裝目錄/Data

oracle安裝包位置 /Data/soft

如果修改請修改 datadir和softdir的變數值,

腳本提示輸入oracle 用戶密碼 默認Oracle#123

腳本提示輸入SID 默認 orcl12c

本腳本在oracle linux 7.8 上驗證通過,

附:

oracle Linux 7.8 下載地址:

oracle Linux 7.8 下載地址

問題及解決方法:

PLSQL無法鏈接的錯誤:

錯誤碼ORA-28040

修改 $ORACLE_HOME\NETWORK\ADMIN\sqlnet.ora 檔案,網上提供了兩種版本的修改:

a、增加一行配置如下

SQLNET.ALLOWED_LOGON_VERSION=8

b、增加兩行配置如下“

SQLNET.ALLOWED_LOGON_SERVER=8

SQLNET.ALLOWED_LOGON_CLIENT=8

錯誤碼ORA-01017

#在 錯誤碼ORA-28040之前創建的用戶需要修改密碼
sqlplus / as sysdba
alter user dbuserbasic identified by 123456;

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1505.html

標籤:其他

上一篇:EAS報表開發----收付明細

下一篇:Laravel框架中連表查詢

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more