12.2 + Centos7.5
安裝日志:
--查看內存
free -h # 或者使用 Free 查看內存和交換空間
--查看內核
uname -a
uname -r
--安裝依賴包
Package Requirements(軟件包需求),以下是 Oracle Database 11g 第2版(11.2)所需的軟件包列表:(其中后綴為 .el7.i686 需要從互聯網上下載,而其他安裝包可以由 CentOS 7.4 映像文件提供 )
ping www.baidu.com
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum list
yum -y install telnet
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libxcb libXi make sysstat compat-libcap1 unixODBC unixODBC-devel
yum -y install compat-libstdc++-33.i686
yum -y install glibc.i686
yum -y install glibc-devel.i686
yum -y install libaio.i686
yum -y install ksh
yum -y install libaio-devel.i686
yum -y install libgcc.i686
yum -y install libstdc++.i686
yum -y install libstdc++-devel.i686
yum -y install libxcb.i686
yum -y install libX11.i686
yum -y install libXau.i686
yum -y install libXi.i686
yum -y install libXtst.i686
yum -y install libXrender.i686
yum -y install libXrender-devel.i686
# Oracle Linux 7和Red Hat Enterprise Linux 7必須安裝以下或更高版本的包:
bc
binutils #≧-2.23.52.0.1-12.el7 (x86_64)
compat-libcap1 #≧-1.10-3.el7 (x86_64)
compat-libstdc++-33.i686 #≧-3.2.3-71.el7 (i686)
compat-libstdc++-33 #≧-3.2.3-71.el7 (x86_64)
glibc.i686 #≧-2.17-36.el7 (i686)
glibc #≧-2.17-36.el7 (x86_64)
glibc-devel.i686 #≧-2.17-36.el7 (i686)
glibc-devel #≧-2.17-36.el7 (x86_64)
ksh
libaio.i686 #≧-0.3.109-9.el7 (i686)
libaio #≧-0.3.109-9.el7 (x86_64)
libaio-devel.i686 #≧-0.3.109-9.el7 (i686)
libaio-devel #≧-0.3.109-9.el7 (x86_64)
libgcc.i686 #≧-4.8.2-3.el7 (i686)
libgcc #≧-4.8.2-3.el7 (x86_64)
libstdc++.i686 #≧-4.8.2-3.el7 (i686)
libstdc++ #≧-4.8.2-3.el7 (x86_64)
libstdc++-devel.i686 #≧-4.8.2-3.el7 (i686)
libstdc++-devel #≧-4.8.2-3.el7 (x86_64)
libxcb.i686 #≧-1.9-5.el7 (i686)
libxcb #≧-1.9-5.el7 (x86_64)
libX11.i686 #≧-1.6.0-2.1.el7 (i686)
libX11 #≧-1.6.0-2.1.el7 (x86_64)
libXau.i686 #≧-1.0.8-2.1.el7 (i686)
libXau #≧-1.0.8-2.1.el7 (x86_64)
libXi.i686 #≧-1.7.2-1.el7 (i686)
libXi #≧-1.7.2-1.el7 (x86_64)
libXtst.i686 #≧-1.2.2-1.el7 (i686)
libXtst #≧-1.2.2-1.el7 (x86_64)
libXrender.i686 #≧ (i686)
libXrender #≧ (x86_64)
libXrender-devel.i686 #≧ (i686)
libXrender-devel #≧ (x86_64)
make #≧-3.82-19.el7 (x86_64)
net-tools #≧-2.0-0.17.20131004git.el7 (x86_64) (for Oracle RAC and Oracle Clusterware)
nfs-utils #≧-1.3.0-0.21.el7.x86_64 (for Oracle ACFS)
smartmontools #≧-6.2-4.el7 (x86_64)
sysstat #≧-10.1.5-1.el7 (x86_64)
--禁用selinx,防火牆,並設置用戶名
setenforce 0
sed -i -e 's@^SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config
systemctl disable firewalld.service && systemctl stop firewalld.service
hostnamectl set-hostname "hnsi-gwy"
# 配置主機IP地址和主機名的變量,然后在文件 /etc/hosts 的最后一行下面插入新的行
hostip=`routel |grep host |grep -v '127.0.0' | awk 'NR==1{ print }' | awk '{ print $1 }'`
sed -i '$a\'$hostip' '$HOSTNAME' '$HOSTNAME'' /etc/hosts
設置內核參數 將設置的參數打印,並重定向到 /etc/sysctl.d/99-sysctl.conf文件中
/usr/bin/cat >/etc/sysctl.d/99-sysctl.conf << EOF
# This is a parameter set for Oracle database tuning
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 83886080
kernel.shmmax = 17179869184
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=1048586
# Kernel.shmmax (parameter) is set to 50% of the physical memory
# kernel.shmall = 2097152
# kernel.shmmax = 536870912
# kernel.shmmni = 4096
EOF
[root@wjq soft]# sysctl –a //讓內核參數文件立即生效
shmmax=物理內存*80%*80%,單位是字節
kernel.shmmax:表示單個共享內存段的最大值,以字節為單位,此值一般為物理內存的一半,不過大一點也沒關系,這里設定的為4GB,即“4294967295/1024/1024/1024=4G”。
kernel.shmmin:表示單個共享內存段的最小值,默認為1byte
kernel.shmall:表示整個系統范圍內可用共享內存頁的總量,單位是頁(page),在32位系統上一頁等於4kB,也就是4096字節。計算公式是:shmmax/PAGE_SIZE
kernel.shmmni:表示整個系統范圍內內存段的最大數量,一般為4096.
ip_local_port_range :表示端口的范圍。在監聽器幫助客戶端進程和服務器進程建立連接時,會用到指定范圍內的端口。
kernel.sem :表示設置的信號量,這4個參數內容大小固定。
net.core.rmem_default :表示接收套接字緩沖區大小的缺省值(以字節為單位)。
net.core.rmem_max :表示接收套接字緩沖區大小的最大值(以字節為單位)
net.core.wmem_default :表示發送套接字緩沖區大小的缺省值(以字節為單位)。
net.core.wmem_max :表示發送套接字緩沖區大小的最大值(以字節為單位)。
9、 修改資源控制文件
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
資源限制是針對單個進程的限制,不是針對整個系統總的設置
修改limits.conf以后,將馬上生效。但是,如果用戶已經登錄系統,那么對於該用戶的限制將在下一次用戶重新登錄以后才生效。如果要讓對該用戶的限制生效,只能讓該用戶注銷然后重新登錄就可以了。
/etc/security/limits.conf
core - 限制內核文件的大小
date - 最大數據大小
fsize - 最大文件大小
memlock - 最大鎖定內存地址空間
nofile - 打開文件的最大數目
rss - 最大持久設置大小
stack - 最大棧大小
cpu - 以分鍾為單位的最多 CPU 時間
noproc - 進程的最大數目
as - 地址空間限制
maxlogins - 此用戶允許登錄的最大數目
nofile - 打開文件的最大數目,該值不能等於/proc/sys/fs/file-max,如果等於file-max且打開的文件句柄的數量達到file-max,用戶將不能登陸操作系統。
--創建用戶和組
groupadd -g 1100 oinstall
groupadd -g 1001 dba
useradd -u 600 -g oinstall -G dba oracle
passwd oracle
--創建目錄
mkdir -p /home/u01/app/oracle/product/12.2.0/dbhome_1
chown -R oracle:oinstall /home/u01
chmod -R 775 /home/u01
解壓安裝包,設置環境變量
unzip linuxx64_12201_database.zip
vi .bash_profile
# .bash_profile
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=hnsi-gwy; export ORACLE_HOSTNAME
ORACLE_UNQNAME=SIBCGWY; export ORACLE_UNQNAME
ORACLE_BASE=/home/u01/app/oracle; export ORACLE_BASE
DB_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=SIBCGWY; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export PS1='${LOGNAME}@${HOSTNAME}:${PWD}:SID=\e[31;1m${ORACLE_SID}\e[0m> '
export CLASSPATH
--相應文件模板的存放位置
find / -name *.rsp
[oracle@hnsi-gwy database]$ find /home/u01/ -name *.rsp
/home/u01/soft/database/response/dbca.rsp
/home/u01/soft/database/response/netca.rsp
/home/u01/soft/database/response/db_install.rsp
瀏覽響應文件內容
sed -n '/^[^#]/p' response/db_install.rsp
編輯Oracle數據庫軟件響應文件db_install.rsp
vim db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/u01/app/oraInventory
ORACLE_HOME=/home/u01/app/oracle/product/12.2.0/dbhome_1
ORACLE_BASE=/home/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.rac.configurationType=
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=false
oracle.install.db.racOneServiceName=
oracle.install.db.rac.serverpoolName=
oracle.install.db.rac.serverpoolCardinality=
oracle.install.db.config.starterdb.type=
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.ConfigureAsContainerDB=true
oracle.install.db.config.PDBName=
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.password.PDBADMIN=
oracle.install.db.config.starterdb.managementOption=false
oracle.install.db.config.starterdb.omsHost=
oracle.install.db.config.starterdb.omsPort=
oracle.install.db.config.starterdb.emAdminUser=
oracle.install.db.config.starterdb.emAdminPassword=
oracle.install.db.config.starterdb.enableRecovery=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
COLLECTOR_SUPPORTHUB_URL=
--獲取幫助,啟動靜默安裝
在靜默安裝Oracle軟件之前,如果沒有配置/etc/hosts文件,將會出現如五(1)的錯誤。
./runInstaller -help
./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /home/u01/soft/database/response/db_install.rsp
You can find the log of this install session at:
/home/u01/app/oraInventory/logs/installActions2020-04-10_02-25-01AM.log
--配置監聽器
瀏覽Oracle監聽響應文件netca.rsp
[oracle@wjq database]$ sed -n '/^[^#]/p' response/netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="12.2"
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"}
編輯監聽器配置響應文件netca.rsp
[oracle@wjq database]$ vim response/netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="12.2"
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"}
靜默安裝監聽器
$ORACLE_HOME/bin/netca -silent -responsefile /home/u01/soft/database/response/netca.rsp
查看監聽狀態,並啟動監聽器
lsnrctl status
--創建數據庫
瀏覽Oracle數據庫響應文件dbca.rsp
sed -n '/^[^#]/p' response/dbca.rsp
編輯響應文件dbca.rsp
vim response/dbca.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=SIBCGWY
sid=SIBCGWY
databaseConfigType=
RACOneNodeServiceName=
policyManaged=
createServerPool=
serverPoolName=
cardinality=
force=
pqPoolName=
pqCardinality=
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=sibp_gwy
useLocalUndoForPDBs=
pdbAdminPassword=
nodelist=
templateName=General_Purpose.dbc
sysPassword=Orcl2020
systemPassword=Orcl2020
oracleHomeUserPassword=Orcl2020
emConfiguration=
emExpressPort=5500
runCVUChecks=
dbsnmpPassword=
omsHost=
omsPort=
emUser=
emPassword=
dvConfiguration=
dvUserName=
dvUserPassword=
dvAccountManagerName=
dvAccountManagerPassword=
olsConfiguration=
datafileJarLocation=
datafileDestination=
recoveryAreaDestination=
storageType=
diskGroupName=
asmsnmpPassword=
recoveryGroupName=
characterSet=AL32UTF8
nationalCharacterSet=
registerWithDirService=
dirServiceUserName=
dirServicePassword=
walletPassword=
listeners=LISTENER
variablesFile=
variables=
initParams=
sampleSchema=true
memoryPercentage=
databaseType=
automaticMemoryManagement=FALSE
totalMemory=0
靜默創建數據庫
$ORACLE_HOME/bin/dbca -silent -createDatabase -responseFile /home/u01/soft/database/response/dbca.rsp
[root@hnsi-gwy ~]# more /home/u01/app/oracle/cfgtoollogs/dbca/SIBCGWY/SIBCGWY.log
[ 2020-04-10 02:59:08.949 EDT ] Copying database files
DBCA_PROGRESS : 1%
DBCA_PROGRESS : 2%
[ 2020-04-10 02:59:18.593 EDT ] ORA-27104: system-defined limits for shared memory was misconfigured
DBCA_PROGRESS : 3%
[ 2020-04-10 02:59:18.595 EDT ] ORA-01034: ORACLE not available
[ 2020-04-10 02:59:18.596 EDT ] ORA-01034: ORACLE not available
[ 2020-04-10 02:59:23.765 EDT ] DBCA_PROGRESS : DBCA Operation failed.
解決:
vi /etc/sysctl.d/99-sysctl.conf
kernel.shmall = 2097152 #改為83886080
測試實例是否注冊成功和能否登錄到數據庫
lsnrctl status
--停庫停監聽打補丁
壓縮包:
17p6880880_122010_Linux-x86-64.zip
20191015DBp30138470_122010_Linux-x86-64.zip
20191015OJVMp30133625_122010_Linux-x86-64.zip
cd soft/
unzip /tmp/20191015DBp30138470_122010_Linux-x86-64.zip
$ORACLE_HOME/OPatch/opatch version
cd $ORACLE_HOME/
mv OPatch OPatchbak
unzip /tmp/17p6880880_122010_Linux-x86-64.zip
$ORACLE_HOME/OPatch/opatch version
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/u01/soft/30138470 -oh $ORACLE_HOME
$ORACLE_HOME/OPatch/opatch apply /tmp/30138470 -analyze
$ORACLE_HOME/OPatch/opatch apply /tmp/30138470
報錯
Prerequisite check "CheckSystemCommandAvailable" failed.
OPatch failed with error code 73
解決:
參考 Doc ID 1581604.1
yum -y install psmisc
OPatch found the word "error" in the stderr of the make command.
Please look at this stderr. You can re-run this make command.
Stderr output:
chmod: changing permissions of ‘/home/u01/app/oracle/product/12.2.0/dbhome_1/bin/extjobO’: Operation not permitted
make: [iextjob] Error 1 (ignored)
$ORACLE_HOME/OPatch/opatch apply /tmp/30133625 -analyze
$ORACLE_HOME/OPatch/opatch apply /tmp/30133625
啟動數據庫、監聽
cd $ORACLE_HOME/OPatch
./datapatch -verbose
驗證是否打補丁成功
set lines 200 pages 200
select * from dba_registry_history;
dbca -silent -deleteDatabase -sourcedb SIBCGWY -sid SIBCGWY -sysDBAUserName system -sysDBAPassword Orcl2020
$ORACLE_HOME/bin/dbca -silent -createDatabase -responseFile /home/u01/soft/database/response/dbca.rsp