一、背景
最近公司有個項目需要一個oracle測試實例來測試一下數據異構遷移到mysql,然後我就用靜默安裝試了一下。花了兩個小時終於搞完了,感覺還是用圖形化安裝更好一點。下面列的是我的步驟,但是並沒有詳細的說明每一步的原理(以後有時間再補充吧)。
安裝前:
說明:
內存需大於1G,swap適當調整(和內存差不多也行),
硬盤空間要滿足所需軟件的大小,要求/tmp 分區不少於 400M ,安裝目錄大於4G
Linux下安裝oracle對內核參數的要求說明:
kernel.shmall爲物理內存除以pagesize
kernel.shmmax爲物理內存的一半
fs.file-max爲512乘以processes(如128個process,則爲65536)
環境:
centos 6.5
oracle 11g 11.2.0.1.0
1.yum 安裝所需要的依賴包
yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel ksh
2.創建用戶和組
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle #密碼暫定爲oracle
3.
vim /etc/hosts
vim /etc/selinux/config
setenforce 0
4.調整內核參數
echo "net.core.rmem_default = 262144">>/etc/sysctl.conf
echo "net.core.rmem_max = 16777216">>/etc/sysctl.conf
echo "net.core.wmem_default = 262144">>/etc/sysctl.conf
echo "net.core.wmem_max = 16777216">>/etc/sysctl.conf
echo "fs.file-max=6815744">>/etc/sysctl.conf
echo "fs.aio-max-nr = 1048576">>/etc/sysctl.conf
echo "net.core.netdev_max_backlog=10000">>/etc/sysctl.conf
echo "net.core.somaxconn=4096">>/etc/sysctl.conf
echo "net.ipv4.ip_local_port_range=9000 65500">>/etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout=5">>/etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_intvl=20">>/etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_probes=3">>/etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time=60">>/etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog=4096">>/etc/sysctl.conf
echo "net.ipv4.tcp_mem=8388608 12582912 16777216">>/etc/sysctl.conf
echo "net.ipv4.tcp_rmem=8192 87380 16777216">>/etc/sysctl.conf
echo "net.ipv4.tcp_synack_retries=2">>/etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1">>/etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle=0">>/etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse=1">>/etc/sysctl.conf
echo "net.ipv4.tcp_wmem=8192 65536 16777216">>/etc/sysctl.conf
echo "net.netfilter.nf_conntrack_max=1200000">>/etc/sysctl.conf
echo "net.nf_conntrack_max=1200000">>/etc/sysctl.conf
echo "vm.extra_free_kbytes=512000">>/etc/sysctl.conf
echo "vm.min_free_kbytes=2097152">>/etc/sysctl.conf
echo "vm.mmap_min_addr=4096">>/etc/sysctl.conf
echo "vm.swappiness=1">>/etc/sysctl.conf
echo "net.ipv4.tcp_max_tw_buckets = 15000">>/etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128">>/etc/sysctl.conf
sysctl -p
5.設置limits
vim /etc/security/limits.d/90-nproc.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 2047
oracle hard nofile 65536
oracle soft stack 10240
6.解壓
(解壓到了/tmp/下了,解壓後的文件爲 /tmp/database)
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
7.
mkdir -p /oracle/product/11.2.0.1/db_1
mkdir -p /oradata
mkdir -p /oracle/inventory
mkdir -p /oracle/fast_recovery_area
chown -R oracle:oinstall /oracle
chmod -R 755 /oracle
語句的作用依次爲:前面創建的目錄主要作用爲Oracle家目錄、數據文件存放位置,安裝日誌存放位置,快速恢復區
修改屬組,修改權限
8.
su - oracle
vim .bash_profile
ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1/db_1
ORACLE_SID=orclwx
ORACLE_TERM=xterm
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM PATH
source .bash_profile
修改/etc/profile文件
[root@oracle ~]# vim /etc/profile
裏面內容添加:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
[root@oracle4 ~]# source /etc/profile
9.
vim /tmp/database/response/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=oracle
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/oracle/inventory
SELECTED_LANGUAGES=en,zh_TW,zh_CN
ORACLE_HOME=/oracle/product/11.2.0.1/db_1
ORACLE_BASE=/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orclwx
oracle.install.db.config.starterdb.SID=orclwx
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
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.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
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=
DECLINE_SECURITY_UPDATES=
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
10.
vim /etc/pam.d/login
64bit server添加以下內容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
11.安裝oracle軟件(最重要的一步)
su - oracle
cd database
./runInstaller -silent -force -responseFile /tmp/database/response/db_install.rsp
-ignorePrereq
忽略運行先決條件檢查。
對該步進行解釋:
1.先不加參數 -ignorePrereq 執行runInstaller。如果報錯的話,查看日誌(至於查看哪個日誌?界面會顯示出來),然後對該日誌文件執行: cat /tmp/OraInstall2019-03-26_07-28-28PM/installActions2019-03-26_07-28-28PM.log |grep -C3 -i Error . 看一下報錯,將內核參數報錯解決(除缺i386包的錯誤,其他的錯誤都解決)。
2.然後再執行,如果只報i386的錯了,就可以加上面這個參數忽略他
12.
su - root
bash /oracle/inventory/orainstRoot.sh
bash /oracle/product/11.2.0.1/db_1/root.sh
13.配置監聽,網絡
su - oracle
/oracle/product/11.2.0.1/db_1/bin/netca /silent /responseFile /tmp/database/response/netca.rsp
14.靜默安裝數據庫
$ORACLE_HOME/bin/dbca -silent -responseFile /tmp/database/response/dbca.rsp -systemPassword oracle
15.登錄
su - oracle
sqlplus / as sysdba
16.安裝rlwrap
yum install -y rlwrap-0.42-1.el6.x86_64.rpm
17.登錄
su - oracle
rlwrap sqlplus / as sysdba
18.增加help
SQL> startup;
SQL> @ ?/\sqlplus/\admin/\help/\hlpbld.sql ?/\sqlplus/\admin/\help/\helpus.sql
報錯:
1.Exception in thread "main" java.lang.NoClassDefFoundError
unset DISPLAY
2.[SEVERE] - 未指定電子郵件地址
Response File中必須指定DECLINE_SECURITY_UPDATES=true
3.
libaio-0.3.105 (i386)
glibc-2.3.4-2.41 (i686)
compat-libstdc++-33-3.2.3 (i386)
libaio-devel-0.3.105 (i386)
libgcc-3.4.6 (i386)
libstdc++-3.4.6 (i386)
unixODBC-2.2.11 (i386)
unixODBC-devel-2.2.11 (i386)
pdksh-5.2.14 以上加參數忽略