主頁 >  其他 > Oracle Linux7.8 下離線 一鍵靜默安裝Oracle12c

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

2020-09-10 09:04:56 其他

目錄

    • 安裝前的準備
      • 最小安裝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/qita/1564.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)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more