记录在云服务器上安装配置Oracle的过程,以便忘记后回顾🤦♂️
系统及软件版本
- 腾讯云CentOS 7.6 64位 1核2G
- Oracle 11g
下载Oracle 11g
Oracle官方网站,我的机器安装的是CentOS7 64位系统,因此下载的Oracle版本也是64位的。然后将文件通过Xftp上传到 /db/
安装依赖包
安装之前,首先将yum源更改为aliyun源,这样下载速度快一些。
1
2
3
4
5
6cd /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修改完成后,安装依赖包:
1
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
使用如下命令检查依赖包是否安装完整:
1
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 没有安装,执行 yum -y install pdksh,发现CentOS 7 没有相关安装包可用,通过wget命令直接下载pdksh的rpm包,我下载到了/tmp/
1
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/
1
2cd /tmp
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm再次检查依赖包是否安装完整
1
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用户组和用户
执行命令:
1
2
3
4groupadd oinstall
groupadd dba
groupadd asmdba
useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
添加完成后,查看oracle用户
1
id oracle
初始化oracle用户的密码
1
passwd oracle
配置hostname(本地IP映射)
配置命令
1
vim /etc/hosts
127.0.0.1 centos-orcl
测试hostname
1
ping -c 3 centos-orcl
优化OS内核参数
kernel.shmmax 参数设置为物理内存的一半
1
2
3
4
5
6
7
8
9
10
11
12
13vim /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使参数生效
1
sysctl -p
限制oracle用户的shell权限
编辑文件
1
2
3
4
5
6vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 655361
2
3
4vim /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so1
2
3
4
5
6
7
8
9
10vim /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让环境变量立即生效
1
source /etc/profile
创建oracle安装目录
创建目录
1
2
3
4
5
6mkdir -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用户环境变量
编辑文件
1
2
3
4
5
6
7
8
9
10
11
12
13su - 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"以上配置完成后,个人建议重启下系统
1
reboot
解压oracle压缩文件到/db
命令
1
2
3
4cd /db/
unzip linux.x64_11gR2_database_1of2.zip -d /db
unzip linux.x64_11gR2_database_2of2.zip -d /db解压完成后
1
2
3
4mkdir -p /db/etc/response/
cp /db/database/response/* /db/etc/response/
vim /db/etc/response/db_install.rsp1
2
3
4
5
6
7
8
9
10
11
12oracle.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-orcl
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开始安装
1
2su - oracle
./runInstaller -silent -ignorePrereq -responseFile /db/etc/response/db_install.rsp安装期间可以使用tail命令监听oracle的安装日志,比如:
1
tail -f /db/app/oracle/inventory/logs/installActions2017-07-12_03-48-37PM.log
安装完成,提示
Successfully Setup Software
,回车即可。1
2
3su root
sh /db/app/oracle/inventory/orainstRoot.sh
sh /db/app/oracle/product/11.2.0/root.sh
配置静默监听
配置命令
1
2
3su - oracle
netca /silent /responsefile /db/etc/response/netca.rsp查看监听端口
1
netstat -tnulp | grep 1521
静默创建数据库
TOTALMEMORY
设置为总内存的80%1
vi /db/etc/response/dbca.rsp
1
2
3
4
5
6
7
8
9
10GDBNAME = "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"执行静默建库
1
dbca -silent -responseFile /db/etc/response/dbca.rsp
查看oracle实例进程
1
ps -ef | grep ora_ | grep -v grep
查看监听状态
1
lsnrctl status
登录sqlplus,查看实例状态
1
2
3sqlplus /nolog
conn sys/oracle@orcl as sysdba
select * from v$version;激活scott用户
1
2alter user scott account unlock;
alter user scott identified by tiger;创建用户并授权
1
2create user lihtao identified by "232408"
grant connect,resource to lihtao;
Navicat远程连接Oracle
开放1521端口
1
2firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload如果是服务器,则需要在安全组中配置相应的规则。
下载 instantclient-basic,解压压缩文件。
配置Navicat
设置Oracle开机启动
编辑文件
1
2
3vi /db/app/oracle/product/11.2.0/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME1
2
3vi /db/app/oracle/product/11.2.0/bin/dbshut
ORACLE_HOME_LISTNER=$ORACLE_HOME1
2
3vi /etc/oratab
orcl:/db/app/oracle/product/11.2.0:Y1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52vi /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
1
systemctl enable oracle
可能遇到的问题
交换空间
解决方法:创建交换空间
- 检查 Swap 空间在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。运行以下命令:
1
swapon -s
如果返回的信息概要是空的,则表示 Swap 文件不存在。
- 检查文件系统在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。运行以下命令:
1
df -hal
- 创建并允许 Swap 文件下面使用 dd 命令来创建 Swap 文件。检查返回的信息,还剩余足够的硬盘空间即可。
1 | 1 dd if=/dev/zero of=/swapfile bs=1024 count=512k |
参数解读:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。
格式化并激活 Swap 文件上面已经创建好 Swap 文件,还需要格式化后才能使用
1
mkswap /swapfile
激活 Swap
1
swapon /swapfile
以上步骤做完,再次运行命令
1
swapon -s
你会发现返回的信息概要:
1
2Filename Type Size Used Priority
/swapfile file 524284 0 -1
如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:
1
/swapfile swap swap defaults 0 0
最后,赋予 Swap 文件适当的权限:
1
2chown root:root /swapfile
chmod 0600 /swapfile
权限不足
为了防止oracle安装时没有文件或者文件夹的权限,建议通过
chown
命令更改/db
文件夹为oracle这个账号所有。1
chown -R oracle:oinstall /db/
参考:https://blog.csdn.net/Kenny1993/article/details/75038670
参考:https://blog.csdn.net/qq_35893120/article/details/80655645
参考:https://blog.csdn.net/sunhua2013/article/details/78396445