CentOS 7靜默(無圖形化界面)安裝Oracle 11g
准備CentOS 7 系統環境
我以 CentOS-7-x86_64-DVD-1511.iso 為例,簡述Oracle 11g的安裝過程。
由於是使用靜默模式(silent)安裝的,無需使用圖形化界面,我選擇了最小安裝的服務器版的CentOS 7。
安裝過程可參考 https://jingyan.baidu.com/article/fd8044fade8ac35031137a82.html
安裝完成后,只有命令行界面。
為了方便命令操作,我使用了遠程連接工具Xshell
我在這里和大家分享下綠色版的XshellXftpPortable:
http://pan.baidu.com/s/1pL5DL4B
下載后解壓即可使用
下載 Oracle 11g
Oracle官方網站
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
我的機器安裝的是CentOS7 64位系統,因此下載的Oracle版本也是64位的
11.2.0.2.0 zlinux64版本的Oracle是安裝在IBM服務器的,CentOS 7是無法安裝的。
下載完成后,有兩個壓縮文件
linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip
通過Xftp將壓縮文件上傳到 /db/
安裝依賴包
安裝依賴包之前,個人建議將yum源修改為aliyun源,下載速度快些,執行如下命令即可:
cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
修改成功后,安裝如下依賴包:
yum -y install binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel
yum -y install binutils \ compat-libstdc++-33 \ elfutils-libelf \ elfutils-libelf-devel \ expat \ gcc \ gcc-c++ \ glibc \ glibc-common \ glibc-devel \ glibc-headers \ libaio \ libaio-devel \ libgcc \ libstdc++ \ libstdc++-devel \ make \ pdksh \ sysstat \ unixODBC \ unixODBC-devel
安裝完成后顯示如下界面
使用如下命令檢查依賴是否安裝完整
rpm -q \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel | grep "not installed"
發現 pdksh 沒有安裝
rpm -q \ binutils \ compat-libstdc++-33 \ elfutils-libelf \ elfutils-libelf-devel \ expat \ gcc \ gcc-c++ \ glibc \ glibc-common \ glibc-devel \ glibc-headers \ libaio \ libaio-devel \ libgcc \ libstdc++ \ libstdc++-devel \ make \ pdksh \ sysstat \ unixODBC \ unixODBC-devel | grep "not installed"
執行 yum -y install pdksh,發現CentOS 7 沒有相關安裝包可用

通過wget命令直接下載pdksh的rpm包,我下載到了/tmp/
wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
下載完成后,進入 /tmp/
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
再次檢查依賴包是否安裝完整
rpm -q \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel | grep "not installed"
到此依賴包安裝完整
添加oracle用戶組和用戶
groupadd oinstall
groupadd dba
groupadd asmadmin
groupadd asmdba
useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
添加完成后,查看oracle用戶
id oracle
初始化oracle用戶的密碼
passwd oracle
配置hostname(本機IP映射)
hostnamectl set-hostname centos-orcl
vim /etc/hosts
192.168.154.154 centos-oracle
測試hostname
ping -c 3 centos-oracle
優化OS內核參數
kernel.shmmax 參數設置為物理內存的一半
vim /etc/sysctl.conf
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmni=4096
kernel.shmmax = 1073741824
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
使參數生效
sysctl -p
限制oracle用戶的shell權限
vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vim /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
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
創建oracle安裝目錄
mkdir -p /db/app/oracle/product/11.2.0
mkdir /db/app/oracle/oradata
mkdir /db/app/oracle/inventory
mkdir /db/app/oracle/fast_recovery_area
chown -R oracle:oinstall /db/app/oracle
chmod -R 775 /db/app/oracle
配置oracle用戶環境變量
su - oracle
vim .bash_profile
umask 022
export ORACLE_HOSTNAME=centos-orcl
export ORACLE_BASE=/db/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=ORCL
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
以上配置完成后,個人建議重啟下系統
reboot
解壓oracle壓縮文件到 /db
cd /db/
unzip linux.x64_11gR2_database_1of2.zip -d /db
unzip linux.x64_11gR2_database_2of2.zip -d /db
解壓完成后
mkdir /db/etc/
cp /db/database/response/* /db/etc/
vim /db/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
DECLINE_SECURITY_UPDATES=true
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/db/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOSTNAME=centos-oracle
ORACLE_HOME=/db/app/oracle/product/11.2.0
ORACLE_BASE=/db/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
=================
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=centos-oracle UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/db/app/oracle/inventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=/db/app/oracle/product/11.2.0 ORACLE_BASE=/db/app/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=dba oracle.install.db.CLUSTER_NODES= oracle.install.db.config.starterdb.type= oracle.install.db.config.starterdb.globalDBName= oracle.install.db.config.starterdb.SID= 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=true PROXY_HOST= PROXY_PORT= PROXY_USER= PROXY_PWD=
開始安裝
su - oracle
cd /db/database/
./runInstaller -silent -ignorePrereq -responseFile /db/etc/db_install.rsp
安裝期間可以使用tail命令監看oracle的安裝日志
tail -f /db/app/oracle/inventory/logs/installActions2017-07-12_03-48-29PM.log
安裝完成,提示Successfully Setup Software.
根據提示完成配置
su root
sh /db/app/oracle/inventory/orainstRoot.sh
sh /db/app/oracle/product/11.2.0/root.sh
配置靜默監聽
su - oracle
netca /silent /responsefile /db/etc/netca.rsp
或者
如果沒有啟動修改下面文件后 lsnrctl start
[oracle@localhost ~]$ cat /db/app/oracle/product/11.2.0/network/admin/listener.ora
# listener.ora Network Configuration File: /db/app/oracle/product/11.2.0/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = centos-oracle)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /db/app/oracle
查看監聽端口
netstat -tnulp | grep 1521

靜默創建數據庫
TOTALMEMORY 設置為總內存的80%
vi /db/etc/dbca.rsp
GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/db/app/oracle/oradata
RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area
CHARACTERSET = "AL32UTF8"
TOTALMEMORY = "1638"
[GENERAL] RESPONSEFILE_VERSION = "11.2.0" OPERATION_TYPE = "createDatabase" [CREATEDATABASE] GDBNAME = "orcl" SID = "orcl" TEMPLATENAME = "General_Purpose.dbc" SYSPASSWORD = "Zc4GVmOzNQ2XrinI" SYSTEMPASSWORD = "SYSTEMPASSWORD" SYSMANPASSWORD = "Zc4GVmOzNQ2XrinI" DBSNMPPASSWORD = "Zc4GVmOzNQ2XrinI" DATAFILEDESTINATION =/db/app/oracle/oradata RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area CHARACTERSET = "AL32UTF8" TOTALMEMORY = "1638" [createTemplateFromDB] SOURCEDB = "myhost:1521:orcl" SYSDBAUSERNAME = "system" TEMPLATENAME = "My Copy TEMPLATE" [createCloneTemplate] SOURCEDB = "orcl" TEMPLATENAME = "My Clone TEMPLATE" [DELETEDATABASE] SOURCEDB = "orcl" [generateScripts] TEMPLATENAME = "New Database" GDBNAME = "orcl11.us.oracle.com" [CONFIGUREDATABASE] [ADDINSTANCE] DB_UNIQUE_NAME = "orcl11g.us.oracle.com" NODELIST= SYSDBAUSERNAME = "sys" [DELETEINSTANCE] DB_UNIQUE_NAME = "orcl11g.us.oracle.com" INSTANCENAME = "orcl11g" SYSDBAUSERNAME = "sys"
執行靜默建庫
dbca -silent -responseFile /db/etc/dbca.rsp
查看oracle實例進程
ps -ef | grep ora_ | grep -v grep
查看監聽狀態
lsnrctl status
cp -a /db/app/oracle/admin/orcl/pfile/init.ora.522018105539 /db/app/oracle/product/11.2.0/dbs/initORCL.ora
====================
以默認參數文件(SPFILE)開啟實例,裝載默認的數據庫,並打開數據庫。
等於以下三個命令
sqlplus /as sysdba
startup nomount
alter database mount
alter database open
==============================================
創建目錄文件
[root@localhost ~]# cat /etc/oracle/olr.loc
olrconfig_loc = /db/app/oracle/product/11.2.0/cdata/centos-oracle.olr
CRS_HOME = /db/app/oracle/product/11.2.0/
touch /db/app/oracle ......olr
===================
reboot
lsnrctl start
登錄sqlplus,查看實例狀態
sqlplus / as sysdba
select status from v$instance;
查看數據庫編碼
select userenv('language') from dual;
查看數據庫版本信息
select * from v$version;
1.用有dba權限的用戶登錄:sys用戶
2.創建一個新用戶:create user abc identified by 123456;
3.授予DBA權限: grant connect,resource,dba to abc;
ok,創建好了,就可以用abc這個用戶登錄了,abc用戶擁有dba權限。
Navicat遠程連接Oracle
開放1521端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload
官方網站
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
下載 instantclient-basic,解壓壓縮文件
下載Navicat
http://pan.baidu.com/s/1c2GP9U4
打開Navicat,工具→選項
打開OCI界面,在右側OCI library一欄中選擇instantclient-basic解壓目錄下的oci.dll,然后點擊確定。
重啟Navicat,點擊連接,選中Oracle
IP為Oracle服務器的IP地址,服務名為Oracle的實例名,可忽略大小寫
select instance_name from v$instance;
用戶名使用剛激活的scott,密碼為tiger,填完以上信息后點擊連接測試
到此Navicat遠程連接Oracle數據庫成功
設置Oracle開機啟動
vi /db/app/oracle/product/11.2.0/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME
vi /db/app/oracle/product/11.2.0/bin/dbshut
ORACLE_HOME_LISTNER=$ORACLE_HOME
vi /etc/oratab
orcl:/db/app/oracle/product/11.2.0:Y
vi /etc/rc.d/init.d/oracle
- #! /bin/bash
- # oracle: Start/Stop Oracle Database 11g R2
- #
- # chkconfig: 345 90 10
- # description: The Oracle Database is an Object-Relational Database Management System.
- #
- # processname: oracle
- . /etc/rc.d/init.d/functions
- LOCKFILE=/var/lock/subsys/oracle
- ORACLE_HOME=/db/app/oracle/product/11.2.0
- ORACLE_USER=oracle
- case "$1" in
- 'start')
- if [ -f $LOCKFILE ]; then
- echo $0 already running.
- exit 1
- fi
- echo -n $"Starting Oracle Database:"
- su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
- su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
- su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
- touch $LOCKFILE
- ;;
- 'stop')
- if [ ! -f $LOCKFILE ]; then
- echo $0 already stopping.
- exit 1
- fi
- echo -n $"Stopping Oracle Database:"
- su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
- su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
- su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
- rm -f $LOCKFILE
- ;;
- 'restart')
- $0 stop
- $0 start
- ;;
- 'status')
- if [ -f $LOCKFILE ]; then
- echo $0 started.
- else
- echo $0 stopped.
- fi
- ;;
- *)
- echo "Usage: $0 [start|stop|status]"
- exit 1
- esac
- exit 0
開機啟動oracle
systemctl enable oracle
開機啟動問題
oracle ORA-12547: TNS:lost contact
cd /db/app/oracle/product/11.2.0/bin/
chmod 6751 oracle
TNS-12555: TNS:permission denied
cd /var/tmp
chown -R oracle:oinstall .oracle