1. 程式人生 > >centos7.3系統中安裝oracle11g並使用Navicat遠端連線教程

centos7.3系統中安裝oracle11g並使用Navicat遠端連線教程

最近在阿里雲上買了個輕量級伺服器,centos7.3版本,在裝oracle11g並實現Navicat遠連的時候出現了很多bug,在網上搜的時候發現沒有一篇部落格是可以完全適用的,所以把這些過程整理出來,希望能幫助後面的同學少走彎路。

  1. 建立swap分割槽 命令1:dd if=/dev/zero of=/home/swap bs=1024 count=2097152 命令2:mkswap /home/swap 命令3:swapon /home/swap 檢視分割槽情況,若有Swap分割槽則為正確 命令4:free -m 命令5:vim /etc/fstab 新增一行 /home/swap swap swap defaults 0 0
    否則重啟後swap分割槽會失效
  2. 建立使用者和使用者組 命令1:groupadd oinstall 命令2:groupadd dba 命令3:useradd -g oinstall -G dba -m oracle 命令4:groups oracle 命令5:passwd oracle 命令6:id oracle
  3. 建立安裝目錄和許可權 命令1:mkdir -p /data/oracle 命令2:mkdir -p /data/oraInventory 命令3:mkdir -p /data/database 命令4:cd /data 命令5:chown -R oracle:oinstall /data/oracle
    命令6:chown -R oracle:oinstall /data/oraInventory 命令7:chown -R oracle:oinstall /data/database
  4. 修改OS系統標識 命令1:vim /etc/redhat-release 修改為redhat-7
  5. 關閉防火牆和selinux(阿里雲中已經關閉)
  6. 修改核心引數 命令1:vim /etc/sysctl.conf 增加如下內容:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1

#設定最大開啟檔案數
fs.file-max = 6815744
fs.aio-max-nr = 1048576
#共享記憶體的總量,8G記憶體設定:2097152*4k/1024/1024
kernel.shmall = 2097152
#最大共享記憶體的段大小
kernel.shmmax = 2147483648
#整個系統共享記憶體端的最大數
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#可使用的IPv4埠範圍
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

命令2:sysctl -p 使檔案生效 命令3:vim /etc/security/limits.conf 增加如下內容:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
  1. 配置oracle使用者的環境變數 命令1:vim /home/oracle/.bash_profile 增加如下內容
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
#oracle啟動資料庫例項名
export ORACLE_SID=orcl11g
#新增系統環境變數
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin/samples
  1. 安裝需要的rpm包 命令1:yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel libXtst sysstat ksh make libXi compat-libcap1
  2. 解壓兩個安裝檔案到對應的資料夾下 命令1:yum -y install zip unzip 命令2:unzip /opt/soft/linux.x64_11gR2_database_1of2.zip -d /data/database/ 命令3:unzip /opt/soft/linux.x64_11gR2_database_2of2.zip -d /data/database/
  3. 進行安裝 命令1:su - oracle 命令2:cd /data/database/database 命令3:./runInstaller -silent -ignorePrereq -ignoreSysPrereqs -responseFile /data/database/database/response/db_install.rsp
  4. 另開一個終端使用root使用者執行 命令1:/data/oraInventory/orainstRoot.sh 命令2:/data/oracle/product/11.2.0/db_1/root.sh 執行完後第11步的終端介面會出現Successfully Setup Software,按回車即可
  5. 配置tnsnames.ora 命令1:vim /data/oracle/product/11.2.0/db_1/network/admin/samples/tnsnames.ora 新增如下內容:
alioracle =  
     (DESCRIPTION =   
        (ADDRESS_LIST =   
            (ADDRESS = (PROTOCOL = TCP)(HOST =0.0.0.0)(PORT = 1521))   
        )   
        (CONNECT_DATA =   
            (SERVICE_NAME = orcl)   
        )   
)
  1. 建庫 命令1:cd /data/oracle/product/11.2.0/db_1/bin 命令2:./dbca -silent -responseFile /data/database/database/response/dbca.rsp 這個時候xshell中會清屏,全是黑的,不要慌,隨便輸入點東西,回車,再隨便輸入點東西,在回車,就開始建庫了
  2. 配置listener.ora 命令1:vim /data/oracle/product/11.2.0/db_1/network/admin/samples/listener.ora 新增以下內容:
LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=
      (ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521))  
  )
)
 
SID_LIST_LISTENER= 
	(SID_LIST= 
		(SID_DESC= 
			(GLOBAL_DBNAME=orcl) 
			(SID_NAME=orcl11g) 
			(ORACLE_HOME=/data/oracle/product/11.2.0/db_1)
			 (PRESPAWN_MAX=20) 
			 (PRESPAWN_LIST= 
			 (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
		)
	)
)
  1. 去阿里雲控制檯,找到安全組,去新增1521埠的配置規則,否則用公網ip連線不到oracle資料庫,這一步很關鍵,否則無法用公網ip遠端連線。
  2. 開啟監聽 命令1:lsnrctl start 命令1:lsnrctl stop 命令1:lsnrctl status 開啟後可在Windows命令列介面中使用telnet 公網ip 1521來測試網路是否連通
  3. 登入sqlplus,檢視例項狀態 命令1:sqlplus / as sysdba 啟用scott使用者 命令2:alter user scott account unlock; 命令3:alter user scott identified by Tcc123456;
  4. 修改Oracle開機啟動檔案 命令1:vim /data/oracle/product/11.2.0/db_1/bin/dbstart 把ORACLE_HOME_LISTNER=$1 改成ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1 命令2:vim /data/oracle/product/11.2.0/db_1/bin/dbshut 把ORACLE_HOME_LISTNER=$1 改成ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1 命令3:vim /etc/oratab 把orcl11g:/data/oracle/product/11.2.0/db_1:N 改為orcl11g:/data/oracle/product/11.2.0/db_1:Y 命令4:vim /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=/data/oracle/product/11.2.0/db_1
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
  1. 設定Oracle開機啟動 命令1:systemctl enable oracle 命令2:cd /data/oracle/product/11.2.0/db_1/bin/ 命令3:chmod 6751 oracle 命令4:cd /var/tmp 命令5:chown -R oracle:oinstall .oracle
  2. 系統重啟後需要執行的操作 命令1:su - oracle 命令2:lsnrctl start 命令3:sqlplus / as sysdba 並在SQL中執行startup即可,此時已經可以用Navicat遠連了。