最近在阿里云上买了个轻量级服务器,centos7.3版本,在装oracle11g并实现Navicat远连的时候出现了很多bug,在网上搜的时候发现没有一篇博客是可以完全适用的,所以把这些过程整理出来,希望能帮助后面的同学少走弯路。
- 建立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分区会失效 - 创建用户和用户组
命令1:groupadd oinstall
命令2:groupadd dba
命令3:useradd -g oinstall -G dba -m oracle
命令4:groups oracle
命令5:passwd oracle
命令6:id oracle
- 创建安装目录和权限
命令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
- 修改OS系统标识
命令1:vim /etc/redhat-release
修改为redhat-7 - 关闭防火墙和selinux(阿里云中已经关闭)
- 修改内核参数
命令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
- 配置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
- 安装需要的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
- 解压两个安装文件到对应的文件夹下
命令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/
- 修改安装配置信息
命令1:vim /data/database/database/response/db_install.rsp
修改信息为
https://blog.csdn.net/sinat_32998977/article/details/79437014
中的第10步 - 进行安装
命令1:su - oracle
命令2:cd /data/database/database
命令3:./runInstaller -silent -ignorePrereq -ignoreSysPrereqs -responseFile /data/database/database/response/db_install.rsp
- 另开一个终端使用root用户运行
命令1:/data/oraInventory/orainstRoot.sh
命令2:/data/oracle/product/11.2.0/db_1/root.sh
执行完后第11步的终端界面会出现Successfully Setup Software,按回车即可 - 配置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:cd /data/oracle/product/11.2.0/db_1/bin
命令2:./dbca -silent -responseFile /data/database/database/response/dbca.rsp
这个时候xshell中会清屏,全是黑的,不要慌,随便输入点东西,回车,再随便输入点东西,在回车,就开始建库了 - 配置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))
)
)
)
- 去阿里云控制台,找到安全组,去添加1521端口的配置规则,否则用公网ip连接不到oracle数据库,这一步很关键,否则无法用公网ip远程连接。
- 开启监听
命令1:lsnrctl start
命令1:lsnrctl stop
命令1:lsnrctl status
开启后可在Windows命令行界面中使用telnet 公网ip 1521来测试网络是否连通 - 登录sqlplus,查看实例状态
命令1:sqlplus / as sysdba
激活scott用户
命令2:alter user scott account unlock;
命令3:alter user scott identified by Tcc123456;
- 安装并激活Navicat for Oracle
下载链接:http://pan.baidu.com/s/1pKJGgVh 密码:2c06
https://blog.csdn.net/endlessseaofcrow/article/details/78226837
此时已经可以通过Navicat远程连接oracle数据库了 - 修改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
- 设置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
- 系统重启后需要执行的操作
命令1:su - oracle
命令2:lsnrctl start
命令3:sqlplus / as sysdba
并在SQL中执行startup即可,此时已经可以用Navicat远连了。