Linux服务器下安装Oracle数据库比较复杂,配置较为繁琐,在这里做一个记录
数据库版本:Oracle 11g
服务器系统:CentOS 7.8
1. 环境检查
1.1 检查内存要求
安装Oracle数据库11 g第2版(11.2)的内存要求:
最小:1 GB内存
推荐:2 GB 内存或更多
要查看内存大小,请输入以下命令
grep MemTotal /proc/meminfo
要查看交换空间大小,请输入以下命令
交换空间其实就是windows的虚拟内存,在内存不够的情况下,会把虚拟内存当内存用
grep SwapTotal /proc/meminfo
1.2 配置交换空间
-
创建交换分区文件所在的文件夹
mkdir -p /data/swapon
-
接下来创建交换分区文件
if:读取文件,of:写出文件,bs:每次读写字节大小(块的大小,单位:字节),count:块的数量。其中这里代表1gb的交换分区,计算规则 = bs*count = 大概1gb。一般虚拟缓存是内存的2倍比较好,但是到了4g以上就没有什么效果了,也就是说如果您的内存是4g,虚拟缓存也只要配置4g即可。
dd if=/dev/zero of=/data/swapon/swap_file bs=1M count=1024
-
把刚才创建的文件转为 swap格式
mkswap /data/swapon/swap_file
-
激活交换空间
swapon /data/swapon/swap_file
-
校验结果
grep SwapTotal /proc/meminfo
2. 安装依赖
yum -y install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static elfutils-libelf-devel ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel libXp*
3. 创建oracle用户和用户组
Oracle建议使用新的用户和用户组来安装Oracle
3.1 创建用户组
groupadd oinstall
groupadd dba
3.2 创建用户
-g:指定主要分组
-G:指定次要分组
oracle:用户名
useradd -g oinstall -G dba oracle
3.3 修改oracle用户密码
passwd oracle
3.4 查看结果
id oracle
4. 配置内核参数
vim /etc/sysctl.conf
将下面配置加入文件末尾
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmax=536870912
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
更新内核参数
sysctl -p
5. 配置资源限制
vim /etc/sysctl.conf
将下面配置加入文件末尾(oracle为刚才新建的用户)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
6. 准备安装
6.1 创建所需要的目录
mkdir -p /var/lib/oracle/product/11.2.0 && mkdir /var/lib/oracle/oradata && mkdir /var/lib/oracle/flash_recovery_area && mkdir /var/lib/oracle/inventory
6.2 修改目录的所属者权限
chown -R oracle:oinstall /var/lib/oracle
chmod -R 777 /var/lib/oracle
6.3 上传安装压缩包
上传压缩包至/var/lib/oracle目录,安装包到Oracle官网下载
6.4 解压
如果没有unzip,请先执行yum install unzip,安装unzip
cd /var/lib/oracle
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
6.5 修改静默安装Oracle的响应文件
vim /var/lib/oracle/database/response/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY #约29行
ORACLE_HOSTNAME=localhost #约37行
UNIX_GROUP_NAME=oinstall #约42行
INVENTORY_LOCATION=/data0/oracle/inventory #约47行
SELECTED_LANGUAGES=en,zh_CN #约78行
ORACLE_HOME=/data0/oracle/product/11.2.0 #约83行
ORACLE_BASE=/data0/oracle #约88行
oracle.install.db.InstallEdition=EE #约99行
oracle.install.db.DBA_GROUP=dba #约142行
oracle.install.db.OPER_GROUP=dba #约147行
DECLINE_SECURITY_UPDATES=true #约385行
7. 开始安装
7.1 添加环境变量
-
可以只添加oracle用户的环境变量,这样仅oracle用户可以使用sqlplus命令
su - oracle #切换成oracle用户
vim /home/oracle/.bash_profile #打开环境变量配置文件
ORACLE_BASE=/var/lib/oracle ORACLE_HOME=$ORACLE_BASE/product/11.2.0 ORACLE_SID=orcl PATH=$PATH:$ORACLE_HOME/bin export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
source /home/oracle/.bash_profile #立即更新配置文件
-
也可以添加全局环境变量,这样所有用户都可以使用sqlplus命令
vim /etc/profile #打开环境变量配置文件
ORACLE_BASE=/var/lib/oracle ORACLE_HOME=$ORACLE_BASE/product/11.2.0 ORACLE_SID=orcl PATH=$PATH:$ORACLE_HOME/bin export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
source /etc/profile #立即更新配置文件
7.2 安装Oracle 11g
-
安装Oracle
cd /var/lib/oracle/database #切换到对应文件准备安装
./runInstaller -silent -ignorePrereq -ignoreSysPrereqs -responseFile /var/lib/oracle/database/response/db_install.rsp #执行静默安装
看到日志文件会持续输出安装信息没有输入异常信息,则表明安装过程正常;直到输出运行脚本提示以及Successfully Setup Software。
-
执行脚本
su sh /var/lib/oracle/inventory/orainstRoot.sh sh /var/lib/oracle/product/11.2.0/root.sh
-
配置监听
su - oracle export DISPLAY=localhost:0.0 #设置回显 netca -silent -responseFile /var/lib/oracle/database/response/netca.rsp #安装监听
-
查看端口信息
netstat -tnulp | grep 1521
7.3 安装数据库实例
-
配置数据库响应文件
su - oracle vim /var/lib/database/response/dbca.rsp
GDBNAME="orcl" #约78行 SID="orcl" #约149行 SYSPASSWORD="oracle" #约190行,前面的注释要打开,这个是SYS用户的密码 SYSTEMPASSWORD="oracle" #约200行,前面的注释要打开,这个是SYSTEM用户的密码 SYSMANPASSWORD="oracle" #约231行,前面的注释要打开,这个是SYSMAN用户的密码 DBSNMPPASSWORD="oracle" #约241行,前面的注释要打开,这个是DBSNMP用户的密码 DATAFILEDESTINATION="/data0/oracle/oradata" #约357行,注释要打开,配置dbf文件的目录 RECOVERYAREADESTINATION="/data0/oracle/fast_recovery_area" #约367行,注释要打开 CHARACTERSET="ZHS16GBK" #约415行 TOTALMEMORY="1638" #约540行
-
安装数据库
su - oracle dbca -silent -responseFile /var/lib/database/response/dbca.rsp
8. 其它配置
8.1 开启实例
第一次不用开启,如果重启,需要开启
su - oracle #切换到 oracle用户
ps -ef | grep ora_ #查看进程状态
lsnrctl 命令是一个 监听管理命令, 它有以下3个功能:
命令 | 功能 |
---|---|
lsnrctl status | 查看监听状态 |
lsnrctl start | 启动监听 |
lsnrctl stop | 停止监听 |
8.2 设置开机自动启动
-
修改启动数据
su vim /etc/oratab
orcl:/var/lib/oracle/product/11.2.0:Y
-
修改启动文件
vim /var/lib/oracle/product/11.2.0/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME #修改该键的值
-
修改关闭文件
vim /var/lib/oracle/product/11.2.0/bin/dbshut
ORACLE_HOME_LISTNER=$ORACLE_HOME #修改该键的值
-
修改本地文件
vim /etc/rc.d/rc.local
su oracle -lc "/data0/oracle/product/11.2.0/bin/lsnrctl start" #添加该行 su oracle -lc "/data0/oracle/product/11.2.0/bin/dbstart" #添加该行
-
修改本地参数数据的执行权限
chmod +x /etc/rc.d/rc.local
8.2 乱码问题
sqlplus / as sysdba
SQL> conn / as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> alter database open;
SQL> alter database character set INTERNAL_USE UTF8;
SQL> shutdown immediate;
SQL> startup;
SQL> exit;
8.3 修改端口
-
修改监听服务
lsnrctl stop #停止服务 cd /var/lib/oracle/product/11.2.0/network/admin vim listener.ora # 修改PORT=1521成PORT=11521 PORT = 你需要的端口号,我这里是11521
-
修改tnsnames
vim tnsnames.ora #修改PORT=1521成PORT=11521 PORT = 你需要的端口号,我这里是11521
-
重启oracle
su - oracle sqlplus / as sysdba; alter system set local_listener="(address=(protocol=tcp)(host=localhost)(port=你需要的端口号))" exit; lsnrctl start # 注意:这里的host的值就是listener.ora中HOST的值,而port的值就是您需要修改的端口
8.4 解决Linux下sqlplus无法使用退格键和方向键的问题
CentOS下的sqlplus和windows下的sqlplus不同,在输入命令时不可以使用上下键、删除键等,很不方便,偶然间发现rlwrap可以实现这个功能。
-
首先下载和安装readline
yum install readline*
-
然后去下载和安装rlwrap(链接失效请更换其它版本)
wget http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-0.30.tar.gz tar -zxvf rlwrap-0.30.tar.gz cd rlwrap-0.30 ./configure make make install
-
在oracle环境变量文件中添加
vim /home/oracle/.bash_profile
alias sqlplus='rlwrap sqlplus' #添加该行 alias rman='rlwrap rman' #添加该行
-
立即生效
source /home/oracle/.bash_profile