1、 關閉selinux
1.1 sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
1.2 或者手動編輯 vi /etc/selinux/config將SELINUX=enforcing改為SELINUX=disabled
1.3 執行setenforce 0
2、 關閉防火牆firewall
2.1關閉防火牆
systemctl status firewalld.service
systemctl stop firewalld.service
3、安裝依賴包
3.1 檢查依賴包安裝情況
rpm -q binutils compat-libcap1 vsftpd gcc gcc-c++ glibc-devel glibc elfutils-libelf-devel compat-libcap1 libaio-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat unixODBC unixODBC-devel
3.2 使用yum源安裝所需依賴包
yum -y install binutils compat-libcap1 vsftpd gcc gcc-c++ glibc-devel glibc elfutils-libelf-devel compat-libcap1 libaio-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat unixODBC unixODBC-devel
4、修改主機名(可選)
設置主機名hostnamectl set-hostname xxxxx
xxxxx為主機名
hostnamectl set-hostname hairundb
5、修改內核參數
# vi /etc/sysctl.conf
在最后添加(注意重復參數,不能小於以下數值)
kernel.shmall = 2097152
kernel.shmmax = 1073741824
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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 = 1048576
保存退出
啟用配置
# /sbin/sysctl -p
6、修改用戶限制文件
# vi /etc/security/limits.conf
在最后添加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
保存退出
7、關聯設置
# vi /etc/pam.d/login
在最后添加
session required /lib64/security/pam_limits.so
session required pam_limits.so
保存退出
8、設置系統環境變量
# vi /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
保存退出
使環境變量生效
# source /etc/profile
9、創建oracle系統用戶
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
檢查oracle用戶權限
id oracle
10、創建oracle安裝目錄
mkdir -p /opt/oracle/product/11r2
mkdir /opt/oracle/oradata
mkdir /opt/oracle/inventory
mkdir /opt/oracle/flash_recovery_area
11、將oracle用戶加入到sudo組
# vi /etc/sudoers
在root ALL=(ALL) ALL這一行下加入
oracle ALL=(ALL) ALL
強制保存退出(:wq!)
12、修改oracle用戶環境變量
# vi /home/oracle/.bash_profile
在最后添加(ORACLE_SID=XXX按實際情況修改)
export ORACLE_BASE=/opt/oracle;
export ORACLE_HOME=/opt/oracle/product/11r2;
export ORACLE_SID=ora11;
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
保存退出
使環境變量生效
# source /home/oracle/.bash_profile
查看環境變量
# env
13、修改hosts文件
# vi /etc/hosts
在最后添加
主機ip 主機名hairundb
14、root用戶登錄,把數據庫安裝包上傳至/opt/oracle目錄下
chown -R oracle:oinstall /opt/oracle
chmod -R 775 /opt/oracle
15、安裝oracle數據庫
切換至oracle用戶
su - oracle
解壓安裝包文件(如果沒有unzip命令,可以先登錄root用戶,使用yum源安裝:yum -y install unzip)
cd /opt/oracle
unzip oracle.zip
編輯oracle數據庫基准配置文件
vi /opt/oracle/database/response/db_install.rsp
輸入(:set number)顯示行號
修改
oracle.install.option=INSTALL_DB_SWONLY //29行 安裝類型,只安裝數據庫軟件
ORACLE_HOSTNAME=hairundb //37行 主機名稱通過hostname查看
UNIX_GROUP_NAME=oinstall //42 行 安裝組
INVENTORY_LOCATION=/opt/oracle/inventory //49 行INVENTORY目錄
SELECTED_LANGUAGES=en,zh_CN //86 行 選擇語言
ORACLE_HOME=/opt/oracle/product/11r2 //91 行oracle_home
ORACLE_BASE=/opt/oracle //96 行oracle_base
oracle.install.db.InstallEdition=EE //107 行oracle版本
oracle.install.db.DBA_GROUP=dba //154行dba用戶組
oracle.install.db.OPER_GROUP=oinstall //160行oper用戶組
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //189行數據庫類型,一般用途
oracle.install.db.config.starterdb.globalDBName=ora11 //194行globalDBName
oracle.install.db.config.starterdb.SID=ora11 //199行SID
oracle.install.db.config.starterdb.memoryLimit=800 //229行自動管理內存的最小內存(M)
oracle.install.db.config.starterdb.password.ALL=oracle //262行所有數據庫用戶使用同一個密碼
DECLINE_SECURITY_UPDATES=true //400行設置安全更新
編譯安裝oracle
cd /opt/oracle/database/
chmod -R 750 /opt/oracle/database/
./runInstaller -silent -responseFile /opt/oracle/database/response/db_install.rsp -ignorePrereq
安裝過程中新開一個root窗口,執行
/opt/oracle/inventory/orainstRoot.sh
/opt/oracle/product/11r2/root.sh
執行完成后返回oracle界面按下回車鍵完成安裝
vi /opt/oracle/database/response/netca.rsp
修改
INSTALL_TYPE=""custom""
netca /silent /responseFile /opt/oracle/database/response/netca.rsp
檢查監聽文件
ll /opt/oracle/product/11r2/network/admin/
查看監聽端口(root用戶執行)
netstat -tnulp | grep 1521
vi /opt/oracle/database/response/dbca.rsp
修改
SID = "ora11" 、、170行 SID
SYSPASSWORD = "oracle" //212行
SYSTEMPASSWORD = "oracle" //221行
SYSMANPASSWORD = "oracle" //252行
DBSNMPPASSWORD = "oracle" 、、262行
DATAFILEDESTINATION =/opt/oracle/oradata //360行
RECOVERYAREADESTINATION=/opt/oracle/flash_recovery_area //370行
CHARACTERSET = "ZHS16GBK" //418行 字符集
GDBNAME = "ora11" //713行 全局名
cd /opt/oracle/product/11r2/bin/
dbca -silent -responseFile /opt/oracle/database/response/dbca.rsp
等待建庫完成
檢查實例進程
ps -ef | grep ora_ | grep -v grep
數據庫實例連接測試
查看監聽狀態
lsnrctl status
使用sqlplus命令測試連接oracle
sqlplus / as sysdba
SQL> conn /as sysdba
登錄數據庫
sqlplus /nolog
SQL> conn /as sysdba
SQL> startup
16、修改Oracle數據庫密碼180天限制
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL> select * from dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
17、修改Oracle數據庫嘗試登錄失敗次數限制(默認10次,更改為無限制)
SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
18、修改Oracle數據庫無法導出空表的問題
SQL> alter system set deferred_segment_creation=false;
以root用戶登錄:命令:exit
vi /etc/oratab
ora11:/data/oracle/product/11r2:N中的 N 改成 Y
vi /opt/oracle/product/11r2/bin/dbstart
注釋原有的ORACLE_HOME_LISTNER行,新增一行 export ORACLE_HOME_LISTNER=$ORACLE_HOME
vi /opt/oracle/product/11r2/bin/dbshut
注釋原有的ORACLE_HOME_LISTNER行,新增一行 export ORACLE_HOME_LISTNER=$ORACLE_HOME
編寫自啟動腳本
vi /etc/init.d/oracle
添加
#!/bin/sh
# chkconfig: 345 99 10
##其中chkconfig:345 99 10 是指腳本將為運行級3、4、5啟動Oracle 10g服務,啟動優先級為99,關閉優先級為10
# description: Oracle auto start-stop script.
# /etc/rc.d/init.d/oracle
# description: starts the oracle database
ORA_HOME=/opt/oracle/product/11r2
ORA_OWNER=oracle
case "$1" in
start)
echo -n "Starting Oracle Databases: "
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" >> /var/log/oracle
echo "Done."
echo -n "Starting Oracle Listeners: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" >> /var/log/oracle
echo "Done."
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole" >> /var/log/oracle
echo "Done."
echo ""
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
stop)
echo -n "Shutting Down Oracle Listeners: "
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole" >> /var/log/oracle
echo "Done."
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo -n "Shutting Down Oracle Databases: "
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" >> /var/log/oracle
echo "Done."
echo ""
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
;;
restart)
echo -n "Restarting Oracle Databases: "
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" >> /var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" >> /var/log/oracle
echo "Done."
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole" >> /var/log/oracle
echo "Done."
echo ""
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "---------------------------------------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
*)
echo "Usage: oracle { start | stop | restart }"
exit 1
esac
exit 0
賦予執行權限
chmod 755 /etc/init.d/oracle
創建軟鏈接
ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S10oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc4.d/S10oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc5.d/S10oracle
添加自啟動服務
chkconfig --add oracle
chkconfig --level 345 oracle on
chkconfig --list|grep oracle
重啟數據庫
service oracle restart
重啟服務器,測試數據庫是否啟動
sqlplus / as sysdba
SQL> conn /as sysdba
SQL> startup