安装 oracle 11.2.0.4

安装 oracle 11.2.0.4

我们是在Oracle linux 7.5下安装的,所以一切都非常简单。
注意,安装时最好先安装软件,再创建实例,而不是一次就同时安装全部。

准备工作

准备工作非常简单,oracle准备好了所有的依赖库,一行yum就搞定了,这个yum安装时,顺便创建好了oracle用户

# 11g需要的库,天知道他们为什么少了elfutils-libelf-devel 
yum -y install oracle-rdbms-server-11gR2-preinstall elfutils-libelf-devel 

# 检查一下oracle用户是否已经自动创建好了
su - oracle

# 检查一次hosts是否设置正确,下面命令应该能ping到本机地址
ping `hostname`

运行安装脚本

  • 注意以下命令都是用oracle用户执行的
  • 解压oracle的安装包,正常是解压两个zip文件,解压出一个database的目录,然后运行里面的runInstall
  • 注意只安装软件,先不要创建实例
  • base应该是 /u01/app/oracle
  • 修改一下software location, 将dbhome_1修改为EE,我们装的是Enterpirce Edition版的
  • 如果我们事先已经配置好了环境变量,所以上面的其实不用改,都自动的
  • 安装检查时,会报pdksh的错误,这个可以忽略的,保证一下安装了ksh就可以
  • 如果出现了其他问题可运行fix脚本修复,但这个文档因为已经做完了所有的准备工作,所以理论上没有其他问题

安装过程会报错,解决办法:

vi /u01/app/oracle/product/11.2.0/EE/sysman/lib/ins_emagent.mk

# 搜索MK_EMAGENT_NMECTL,修改为
$(MK_EMAGENT_NMECTL) -lnnz11

# 然后重试

root身份执行

软件安装的最后一步

/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/EE/root.sh

创建实例

以oracle用户身份

# 先创建网络监听,只需要创建一次
netca

# 然后创建数据库实例,可以重复运行该命令,创建多个实例
dbca
  • sid=orcl (以后方便复制)
  • 数据库保存文件路径为:/u01/oradata
  • 外加硬盘时,请将oradata迁移到其他地方,然后ln回来
  • 也可以直接将/u01作为硬盘挂接点

创建完成后,sid会写在 /etc/oratab, 忘了sid时,可以查看

测试oracle

# 运行sqlplus 一dba的方式
sqlplus / as sysdba

进入SQL>提示符
如果hosts没有配置错误,环境变量没有配置错误,可看到oracle的版本信息

-- 查看实例状态
select status from v$instance;

-- 查询服务器端的字符集
select userenv('language') from dual;

-- 查看服务名,一般也是 orcl
show parameter service_names;

  • 查看状态
lsnrctl status
  • 查看SID
vi /etc/oratab 

配置防火墙

# 打开oracle监听端口:1521
firewall-cmd --zone=public --add-port=1521/tcp  --permanent
firewall-cmd --zone=public --add-port=1158/tcp  --permanent
firewall-cmd --zone=public --add-port=5559/tcp  --permanent

# 打开ogg监听端口:7809
firewall-cmd --zone=public --add-port=7809/tcp  --permanent
firewall-cmd --zone=public --add-port=7840-7850/tcp  --permanent
firewall-cmd --reload

特殊情况

在新加的硬盘上设置内存交换区

oracle必须有内存交换区,官方建议内存超过16G时,设置内存交换区大小为16G
如果原来没有做交换区,可重新做

  1. fdisk /dev/sdb 重新对外挂硬盘进行分区
  2. d 删除原分区
  3. n p 1 创建1个分区为交互去,大小输入+16G
  4. t 修改分区类型,输入82,作为Linux swap分区
  5. n p 2 创建2分区,将剩余空间都给这个分区
  6. wq 保存并退出

这个时候用fdisk -l 应该可以看/dev/sdb1 /dev/sdb2 两个分区,其中1分区是swap类型的

# 格式交换区
mkswap /dev/sdb1 
# 激活交换区, 激活后用free命令可看到交换区超过16G
swapon /dev/sdb1

# 将交换区添加到fatab
echo '/dev/sdb1     swap    swap    defaults    0 0'  >> /etc/fstab

# 格式分区2
mkfs.ext4 /dev/sdb2
mkdir -p /mnt/disk1
echo '/dev/sdb2     /mnt/disk1  ext4    defaults    0 0'  >> /etc/fstab

配置开机启动

# 生成systemd配置文件
cat > /etc/systemd/system/oracle.service <<EOF
[Unit]
Description=Oracle 11g Service
After=network.target syslog.target

[Service]
User=oracle
Group=oinstall
ExecStart=/etc/init.d/oracle11g.sh start
ExecStop=/etc/init.d/oracle11g.sh stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

# 生成启动脚本
cat > /etc/init.d/oracle11g.sh <<-'EOF'
#!/bin/bash

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/EE
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/bin

function oracle_start(){
    ${ORACLE_HOME}/bin/dbstart ${ORACLE_HOME}
}

function oracle_stop(){
    ${ORACLE_HOME}/bin/dbshut ${ORACLE_HOME}
}

case "$1" in
start)
    oracle_start
    echo "Oracle Started Successfully."
    ;;
stop)
    oracle_stop
    echo "Oracle Stopped."
    ;;
restart)
    oracle_stop
    oracle_start
    ;;
status)
    ${ORACLE_HOME}/bin/lsnrctl status
    ;;
*)
    echo "Usage: $(basename $0) {start|strop|restart|status}"
    exit 1
esac

exit 0
EOF
chmod a+x /etc/init.d/oracle11g.sh

# 刷新一下
systemctl daemon-reload

# 设置系统启动时,自动启动oracle
systemctl enable oracle

# 测试一下 启动结果
systemctl stop oracle
systemctl start oracle

# 查看启动的日志
journalctl -xe -u oracle

Comments

So empty here ... leave a comment!

发表评论

Sidebar