天天看点

[CentOS] Oracle10g安装部署Oracle 10g安装部署

文章目录

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

Oracle 10g安装部署

一.软件版本

  • oracle版本:10201_database_linux_x86_64.cpio

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

内存:4G

磁盘:128G(建议16G及以上)

二.安装前准备

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

1)禁用防火墙

  • 如果当前机器未安装 iptables 防火墙,则跳过
#--检查是否开启
# systemctl status iptables.service
           
  • 未安装提示
[[email protected] ~]$ 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
# yum -y install libXp

#-- 如果后面安装时报错,有下面几个包名时,可运行以下命令
# yum -y install libXp.i686
# yum -y install libXt.i686
# yum -y install libXtst.i686
           
  • 运行命令时,要换行(可先拷贝到txt,把换行删除)
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libaio libaio.i686 libaio-devel libaio-devel.i686 make sysstat
           

4)创建Oracle用户组和用户

  • 创建 用户组

    oinstall

# groupadd oinstall
           
  • 创建用户组

    dba

# groupadd dba
           
  • 新增用户

    orauser

    ,并加入用户组

    oinstall

    dba

# useradd -m -g oinstall -G dba orauser
           
  • 测试用户

    orauser

    是否创建成功
# id orauser
           
  • 修改

    orauser

    的密码
# passwd orauser
           

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

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

6)配置系统内核参数

  • 编辑

    /etc/sysctl.conf

    文件
#--表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改
kernel.shmall = 4294967296
#--定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G
kernel.shmmax = 68719476736
#--用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改
kernel.shmmni = 4096
#--表示设置的信号量
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
#--默认的接收窗口大小
net.core.rmem_default=4194304
#--接收窗口的最大大小
net.core.rmem_max=4194304
#--默认的发送窗口大小
net.core.wmem_default=262144
#--发送窗口的最大大小 
net.core.wmem_max=262144
#--这里1002是oracle用户组dba的gid,即运行 #id orauser 时,dba旁边的数据
#--例如:uid=1001(orauser) gid=1001(oinstall) 组=1001(oinstall),1002(dba)
vm.hugetlb_shm_group=1002
           
  • 执行当前配置
# sysctl -p
           

7)配置资源限制文件

  • 编辑

    /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)配置PAM模块

  • 编辑

    /etc/pam.d/login

    文件
# vim /etc/pam.d/login
           
  • 写入以下内容:
session required /lib64/security/pam_limits.so 
session required pam_limits.so
           

9)配置linux环境变量文件

  • 编辑

    /etc/profile

    文件
# vim /etc/profile
           
  • 写入以下内容:(1.注意 if 、 [] 、= 的两边是需要空格的,否则执行会报错;2.

    if [ $USER = "orauser" ]; then

    orauser

    是Oracle用户名)
if [ $USER = "orauser" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
           
  • 写入位置
pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}

##--写入位置开始
if [ $USER = "orauser" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
##--写入位置结束

if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi
           

10)修改linux发行版本

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

    /etc/redhat-release

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

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

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

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

12)配置主机名静态查询表

  • 输出

    /etc/hosts

    文件内容
# cat /etc/hosts
           
  • 如果有以下内容,则不需要修改(确保 127.0.0.1 是存在的,否则,在配置Oracle监听时会无法启动监听)
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
           

13)注销root用户

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

14)配置Oracle用户环境变量

  • 进入用户

    orauser

    的用户目录(一般是打开终端时的路径)
$ cd /home/orauser
           
  • 编辑

    .bash_profile

    文件
$ vim .bash_profile
           
  • 写入以下内容:
#--上面创建的Oracle安装文件夹
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/102
#--实例ID可以根据实际情况进行修改
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH
           
  • 执行 source 命令,使文件生效
$ source .bash_profile
           

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

1)解压缩Oracle安装文件

  • 将 10201_database_linux_x86_64.cpio 安装包拷贝到 /opt/oracle 文件夹下
  • 解压缩Oracle安装文件
$ cpio -idmv < 10201_database_linux_x86_64.cpio
           
  • 进入解压目录
$ cd database
           

2)设置系统环境语言

  • 如果当前CentOS的环境是中文,需要设置为英文,防止Oracle安装界面乱码
$ export LANG=en_US
           

3)开始安装

$ ./runInstaller
           
  • 如果出现安装窗口显示太小,或只有一小条边框时,可以配置用户目录下的

    .bash_profile

    文件(没有就跳过)
#--orauser为用户目录
$ vim /home/orauser/.bash_profile
           
  • 配置内容如下:
export LANG=en_US
export JAVA_FONTS=/usr/share/fonts/zh_CN/TrueType
           
  • 运行安装命令时,多加一个参数
$ ./runInstaller -ignoreSysPrereqs
           

4)安装过程

  • 配置 Oracle Home Location(默认):

    /opt/oracle/102

  • UNIX DBA Group(默认):

    dba

  • 配置实例名、管理员

    sys

    的密码
  • **下一步 **
  • Enter the full path of the inventory directory(默认):

    /opt/oracle/oraInventory

  • Specify Operating System group name(用户选择):

    dba

  • 下一步
  • 未验证通过的检查项,手动勾选验证,勾选后 Status 变为

    User Verified

  • **下一步 **
  • 点击 Install 进行安装(如果Oracle安装过程有出错,可以直接忽略,点击 Continue )

出现的错误提示:

Error in invoking target ‘all_no_orcl’ of makefile ‘/opt/oracle/102/rdbms/lib/ins_rdbms.mk’.See’/opt/oracle/oraInventory/logs/installActions2018-10-22-01-14-29PM.log’ for details.

Error in invoking target ‘collector’ of makefile ‘/opt/oracle/102/rdbms/lib/ins_rdbms.mk’.See’/opt/oracle/oraInventory/logs/installActions2018-10-22-01-14-29PM.log’ for details.
  • 等待 Database Configuration Assistant 窗口配置数据库
  • (一般不会出现,可跳过)如果这里出现如下异常:
OUI-25031:Some of the configuration assistants failed.

解决:添加ip和主机名的映射

#--查询主机名
$ hostnamectl status

#--编辑/etc/hosts
$ vim /etc/hosts
           
#--原文件内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#--修改后文件内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.10   localhost.localdomain
           
  • Database Configuration Assistant 配置完成后,点击 OK
  • 稍等会弹出 Execute Configuration scripts 窗口(不要关闭)
  • 重新打开一个终端,切换到用户root,执行上面窗口的.sh文件,(可直接复制窗口的文件路径)
# su root
# /opt/oracle/oraInventory/orainstRoot.sh
# /opt/oracle/102/root.sh
           
  • 遇到下面命令行提示,直接按回车键
Enter the full pathname of the local bin directory: [/usr/local/bin]:
           
  • 点击 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/oracle/102:N
           
  • 改为:
orcl:/opt/oracle/102:Y
           

2)配置

/etc/rc.d/rc.local

文件

# vim /etc/rc.d/rc.local
           
  • 写入以下内容:(orauser=用户名,后面是安装路径)
su orauser -lc "/opt/oracle/102/bin/lsnrctl start"
su orauser -lc /opt/oracle/102/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> connect / 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/oracle/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/oracle/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/[email protected]: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/oracle/backup
#--创建备份脚本目录
# mkdir -p /opt/oracle/backup/shell
#--创建导出数据日志目录
# mkdir -p /opt/oracle/backup/logs
           
  • 创建备份脚本文件
# vim /opt/oracle/backup/shell/orabak.sh
           
  • orabak.sh

    脚本内容如下:

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

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

    3. 脚本中使用

    NLS_LANG

    设置导出数据库文件字符集
#!/bin/sh
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/opt/oracle/backup
export LOGS_DIR=/opt/oracle/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/[email protected]/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/oracle/backup/shell
# ./orabak.sh
           
  • 设置定时任务
# vim /etc/crontab
           
  • 配置内容如下:

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

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

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

继续阅读