[CentOS] Oracle11g安装部署

目录

  • [CentOS] Oracle 11g安装部署
    • 一.软件版本
    • 二.安装前准备
        • 1)禁用防火墙
        • 2)禁用 SELinux
        • 3)安装依赖包
        • 4)创建Oracle用户组和用户
        • 5)配置Oracle用户可暂时拥有root权限
        • 6)配置系统内核参数
        • 7)配置资源限制文件
        • 8)修改linux发行版本
        • 9)创建Oracle安装文件夹和数据存放文件夹
        • 10)配置Oracle用户环境变量
    • 三.安装 Oracle,并进行相关配置
        • 1)注销root用户
        • 2)解压缩Oracle安装文件
        • 3)开始安装
        • 4)安装过程
        • 5)简单的测试
    • 四、设置开机自启动
    • 五、修改Oracle配置
        • 1)修改Oracle监听端口
        • 2)重启实例
        • 3)表空间、用户、角色权限的管理
        • 4)导入数据
        • 5)数据备份
    • 六、其它
      • 1)ORA-01157 / ORA-01110 错误

[CentOS] Oracle 11g安装部署

一.软件版本

  • oracle版本:
    1. linux.x64_11gR2_database_1of2.zip
    2. linux.x64_11gR2_database_2of2.zip

操作系统:CentOS-7-x86_64-DVD-1804.iso

内存:8G

磁盘:128G

  • 软件下载网址
  1. Oracle安装包下载:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html
  2. 依赖包下载:https://pkgs.org/

二.安装前准备

  • 使用 root 用户登录系统进行操作
  • # 表示注释或root用户执行
  • $ 表示除root以外的用户
  • SQL> 表示sqlplus操作

1)禁用防火墙

  • 如果当前机器未安装 iptables 防火墙,则跳过
#--检查是否开启
# systemctl status iptables.service
  • 未安装提示
[comuser@localhost ~]$ systemctl status iptables.service
Unit iptables.service could not be found.
  • 关闭 iptables 防火墙
#--重启后生效
#--开启
# systemctl enable iptables.service
#--关闭 (== 当前操作建议使用 ==)
# systemctl disable iptables.service

#--即时生效,重启后失效
#--开启
# systemctl start iptables.service
#--关闭
# systemctl stop iptables.service

2)禁用 SELinux

  • 编辑 /etc/selinux/config 文件,修改 SELINUX=disabled
# vim /etc/selinux/config
#--原内容
SELINUX=enforcing

#--修改后
SELINUX=disabled
  • 重启机器

3)安装依赖包

  • Oracle官网文档要求安装的依赖包

https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1111

  • 运行命令时,要换行(可先拷贝到txt,把换行删除
    • 以下命令是离线安装,请先下载 PRM 依赖包;在线安装需要改为 yum 命令
# rpm -ivh kernel-headers-*.x86_64.rpm
# rpm -ivh zlib-devel-*.x86_64.rpm

# rpm -Uvh libgcc-*.x86_64.rpm libgomp-*.x86_64.rpm binutils-*.x86_64.rpm libstdc++-*.x86_64.rpm
# rpm -Uvh nspr-*.x86_64.rpm nss-softokn-freebl-*.x86_64.rpm nss-util-*.x86_64.rpm
# rpm -Uvh glibc-common-*.x86_64.rpm glibc-*.x86_64.rpm elfutils-libs-*.x86_64.rpm elfutils-*.x86_64.rpm elfutils-libelf-*.x86_64.rpm
# rpm -Uvh sysstat-*.x86_64.rpm lm_sensors-libs-*.x86_64.rpm
# rpm -Uvh libxcb-*.x86_64.rpm libxcb-devel-*.x86_64.rpm
# rpm -ivh libX11-common-*.noarch.rpm
# rpm -Uvh libX11-*.x86_64.rpm libX11-devel-*.x86_64.rpm

# rpm -ivh elfutils-libelf-devel-*.x86_64.rpm
# rpm -ivh libmpc-*.x86_64.rpm
# rpm -ivh libstdc++-devel-*.x86_64.rpm cpp-*.x86_64.rpm
# rpm -ivh gcc-*.x86_64.rpm gcc-c++-*.x86_64.rpm
# rpm -ivh glibc-devel-*.x86_64.rpm glibc-headers-*.x86_64.rpm
# rpm -ivh nss-softokn-freebl-*.i686.rpm glibc-*.i686.rpm glibc-devel-*.i686.rpm
# rpm -ivh unixODBC-*.x86_64.rpm unixODBC-devel-*.x86_64.rpm

# rpm -ivh libtool-ltdl-*.x86_64.rpm libXext-*.x86_64.rpm  mpfr-*.x86_64.rpm libXau-*.x86_64.rpm
# rpm -ivh libXp-*.x86_64.rpm compat-libstdc++-*.x86_64.rpm libaio-devel-*.x86_64.rpm pdksh-*.x86_64.rpm

4)创建Oracle用户组和用户

  • 创建 用户组oinstall
# groupadd oinstall
  • 创建用户组dba
# groupadd dba
  • 新增用户orauser,并加入用户组oinstalldba
# useradd -g oinstall -g dba -m orauser
  • 测试用户orauser是否创建成功
# groups orauser
# id orauser
  • 修改orauser的密码,用于CentOS 登录使用
# passwd orauser

5)配置Oracle用户可暂时拥有root权限

  • 编辑 /etc/sudoers文件
# vim /etc/sudoers
  • 找到
root    ALL=(ALL)       ALL
  • 在下一行写入
orauser    ALL=(ALL)       ALL

6)配置系统内核参数

  • 编辑 /etc/sysctl.conf 文件
# 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
  • 执行当前配置
# sysctl -p

7)配置资源限制文件

对 orauser 用户设置限制,提高软件运行性能

  • 编辑 /etc/security/limits.conf 文件
# vim /etc/security/limits.conf
  • 写入以下内容:(格式:username|@groupname type resource limit)
orauser soft nproc 2047 
orauser hard nproc 16384 
orauser soft nofile 1024 
orauser hard nofile 65536

8)修改linux发行版本

  • 由于 Oracle 11g 发行时,CentOS7并未发行,所以,需要修改linux发行版本,应对Oracle安装时的检测

  • 编辑 /etc/redhat-release 文件

# vim /etc/redhat-release
  • 写入以下内容:
#--原文件内容
CentOS Linux release 7.5.1804 (Core)

#--修改后文件内容
redhat-7

9)创建Oracle安装文件夹和数据存放文件夹

#--创建文件夹
# mkdir /opt/oracle11g
# mkdir /opt/oracle11g/oracle
# mkdir /opt/oracle11g/oraInventory
# mkdir /opt/oracle11g/inspkg
#-- 修改目录及子目录所有文件的拥有者
# chown -R orauser:oinstall /opt/oracle11g

10)配置Oracle用户环境变量

  • 编辑 /home/orauser/.bash_profile 文件
$ vim /home/orauser/.bash_profile
  • 写入以下内容:(请根据实际环境情况,修改安装路径)
#--oracle数据库安装目录
export ORACLE_BASE=/opt/oracle11g/oracle
#--oracle数据库路径
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
#--oracle启动数据库实例名
export ORACLE_SID=orcl
#--xterm窗口模式安装
export ORACLE_TERM=xterm
#--添加系统环境变量
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
#--添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#--防止安装过程出现乱码
export LANG=en_US
#--设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
# 解决窗口异常的问题(小条边框或不完整导致不能点击yes|no)
export JAVA_FONTS=/usr/share/fonts/zh_CN/TrueType
  • 执行 source 命令,使文件生效
$ source .bash_profile

三.安装 Oracle,并进行相关配置

1)注销root用户

  • 注销 root 用户,使用 orauser 重新登录系统
  • 注意不是运行 # su orauser 命令

2)解压缩Oracle安装文件

  • 解压缩Oracle安装文件
# unzip linux.x64_11gR2_database_1of2.zip -d /opt/oracle11g/inspkg/
# unzip linux.x64_11gR2_database_2of2.zip -d /opt/oracle11g/inspkg/

3)开始安装

  • 进入解压目录
$ cd /opt/oracle11g/inspkg/database
  • 运行以下命令:
$ ./runInstaller -ignoreSysPrereqs

4)安装过程

  • 1.跳过邮箱设置

  • 2.选择 Create and configure a database

  • 3.选择 Desktop Class

  • 4.确认安装路径

    • OSDBA Group(默认):dba
    • 配置实例名、管理员sys的密码
  • 5.确认 oraInventory 目录

  • 6.勾选 Ignore all 复选框

  • 7.确认配置信息后,点击 finish 按钮(如果Oracle安装过程有出错,可以直接忽略,点击 Continue

    • 等待 Database Configuration Assistant 窗口配置数据库
    • Database Configuration Assistant 配置完成后,点击 OK
    • 稍等会弹出 Execute Configuration scripts 窗口,点击 OK
    • 点击 Oracle Universal Installer: End of Installation 窗口的Exit 键,弹出是否退出的窗口,点击 Yes

5)简单的测试

#--输出当前实例
$ echo $ORACLE_SID
#--多个实例时,指定当前实例
$ export ORACLE_SID=orcl

#--启动监听
$ lsnrctl start
#--查看监听状态
$ lsnrctl status

#--启动sqlplus
$ sqlplus /nolog
#--dba登录
SQL> conn / as sysdba

#--启动当前实例
SQL> startup
#--检查当前实例是否启动成功(出现一排的ora_XXX_实例名,说明启动成功)
$ ps -ef|grep ora_

四、设置开机自启动

  • 使用用户 root 进行登录系统

1)配置 /etc/oratab 文件(如果没有,新建即可)

# vim /etc/oratab
  • 找到以下内容:
orcl:/opt/oracle11g/oracle/product/11.2.0/db_1:N
  • 改为:
orcl:/opt/oracle11g/oracle/product/11.2.0/db_1:Y

2)配置 /etc/rc.d/rc.local 文件

# vim /etc/rc.d/rc.local
  • 写入以下内容:(orauser=用户名,后面是安装路径)
su orauser -lc "/opt/oracle11g/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su orauser -lc /opt/oracle11g/oracle/product/11.2.0/db_1/bin/dbstart
  • 设置 rc.local 的可执行权限
# chmod +x /etc/rc.d/rc.local
  • 重启机器(启动后,使用上面命令检查)

五、修改Oracle配置

1)修改Oracle监听端口

  • 停止Oracle监听
#--停止监听
$ lsnrctl stop
#--查看监听状态
$ lsnrctl status
#--查看指定端口状态
$ netstat -an | grep 15215
#--启动监听
$ lsnrctl start
  • 修改 listener.ora 监听配置文件
#--端口由 1521 改为 15215 | $ORACLE_HOME需要配置环境变量
$ vim $ORACLE_HOME/network/admin/listener.ora
#--原配置
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

#--修改后
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 15215))
    )
  )

  • 登录 sqlplus,修改 system 表的 local_listener 参数,设置 port=15215
#--启动sqlplus
$ sqlplus /nolog
#--dba登录
SQL> conn / as sysdba

#--查询 local_listener 属性的Value是否为空字符串
SQL> show parameter local_listener;
#--修改 local_listener 属性
SQL> alter system set local_listener='(address = (protocol = tcp)(host = localhost)(port = 15215))';

2)重启实例

#--多个实例时,切换到需要操作的实例
$ export ORACLE_SID=orcl
#--进入sqlplus控制台
$ sqlplus /nolog
#--以管理员身份登录
SQL> conn / as sysdba
#--停止数据库实例
SQL> shutdown abort
#--启动实例
SQL> startup
#--退出sqlplus
SQL> exit

3)表空间、用户、角色权限的管理

  • oracle 默认表空间 system

  • oracle 默认临时表空间 temp

  • 创建表空间

#--登录sqlplus,查询数据文件位置
SQL> select name from v$datafile;

#--创建临时表空间,temp_orcl 表示临时表空间名称
SQL> create temporary tablespace temp_orcl tempfile '/opt/oracle11g/oradata/orcl/temp_orcl.dbf' size 512M autoextend on next 128M maxsize unlimited extent management local;

#--创建表空间,db_orcl 表示表空间名称
SQL> create tablespace db_orcl logging datafile '/opt/oracle11g/oradata/orcl/db_orcl.dbf' size 512M autoextend on next 128M maxsize unlimited extent management local;
  • 创建用户,并指定表空间信息(user后面接用户名,identified后面接密码,db_orcl表示表空间,temp_orcl表示临时表空间)
#--创建用户
SQL> create user testuser identified by test123 account unlock default tablespace db_orcl temporary tablespace temp_orcl;

#--级联删除,cascade表示如果用户testuser下有其它对象,也会一并删除(强制删除)
SQL> drop user testuser cascade

#--修改用户testuser的密码
SQL> alter user testuser identified by 123456;
  • 配置角色权限
#--把connect,resources角色赋予用户testuser
SQL> grant connect,resource to testuser;
#--把dba角色赋予用户testuser
SQL> grant dba to testuser;

#--撤销角色
SQL> revoke connect,resource to testuser

4)导入数据

#-- 用户=testuser,密码=test123,监听端口=15215
$ imp testuser/test123@localhost:15215/db_orcl file=/home/orauser/upload/test.dmp full=y
  • 生成drop语句(或者删除用户,重新创建)
SQL> select 'drop table '||table_name||';' from cat where table_type='TABLE';

5)数据备份

  • 建议使用Oracle用户(具有sudo权限)

  • 查询当前数据库字符集,避免备份后乱码情况(选其一)

SQL> select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
  • 创建相关备份目录(根据实际情况设置)
#--创建数据备份目录,`-p`=创建多级目录
# mkdir -p /opt/oracle11g/backup
#--创建备份脚本目录
# mkdir -p /opt/oracle11g/backup/shell
#--创建导出数据日志目录
# mkdir -p /opt/oracle11g/backup/logs
  • 创建备份脚本文件
# vim /opt/oracle11g/backup/shell/orabak.sh
  • orabak.sh 脚本内容如下:

    1. Oracle安装路径、备份路径、Oracle用户和密码、实例名等信息需要根据情况进行修改

    2. 注释的脚本是,每次备份数据库时自动删除30天之前的数据库文件

    3. 脚本中使用 NLS_LANG 设置导出数据库文件字符集

#!/bin/sh
export ORACLE_BASE=/opt/oracle11g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/opt/oracle11g/backup
export LOGS_DIR=/opt/oracle11g/backup/log
#export DELTIME=`date -d "30 days ago" +%Y%m%d`
export BAKUPTIME=`date +%Y%m%d%H%M%S`
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
mkdir -p $DATA_DIR
mkdir -p $LOGS_DIR
echo "Starting bakup..."
echo "Bakup file path $DATA_DIR/$BAKUPTIME.dmp"
exp testuser/123456@localhost/orcl file=$DATA_DIR/ORCL$BAKUPTIME.dmp log=$LOGS_DIR/ORCL$BAKUPTIME.log
#echo "Delete the file bakup before 30 days..."
#rm -rf $DATA_DIR/ORCL$DELTIME*.dmp
#rm -rf $LOGS_DIR/ORCL$DELTIME*.log
#echo "Delete the file bakup successfully. "
echo "Bakup completed."
  • 修改脚本文件的可执行权限,并测试脚本是否可执行
#--修改脚本文件权限
# chmod 777 dbbak.sh
#--测试脚本
# cd /opt/oracle11g/backup/shell
# ./orabak.sh
  • 设置定时任务
# vim /etc/crontab
  • 配置内容如下:

    1. 配置内容格式: 时间 + 执行操作的系统用户 + 脚本文件的全路径

    2. 下面配置表示凌晨1点执行数据库备份脚本

00 1 * * * orauser /opt/oracle11g/backup/shell/orabak.sh

六、其它

1)ORA-01157 / ORA-01110 错误

  • 表空间创建错误后,删除了表空间的文件,导致 Oracle 不能启动,错误提示如下:

ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: ‘/opt/oracle11g/oracle/oradata/nhswksh/db_nhswksh.dbf’

  • 解决方法:
#--多个实例时,切换到需要操作的实例
$ export ORACLE_SID=orcl
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> alter database datafile 6 offline drop;
SQL> alter database open;
SQL> select ts#,file#,name from v$datafile;
SQL> select tablespace_name,status from dba_tablespaces;
#-- 表空间名称:temp_orcl
SQL> drop tablespace temp_orcl including contents and datafiles;
SQL> shutdown immediate
SQL> startup

你可能感兴趣的:(#,CentOS,Linux,CentOS,Oracle,离线安装,Oracle11g)