Skip to content

Oracle 单实例安装

安装前准备

系统要求

硬件要求

  • 处理器:64 位处理器,至少 2 核心
  • 内存:至少 2 GB,推荐 4 GB 以上
  • 存储空间
    • 系统分区:至少 10 GB
    • /tmp 分区:至少 1 GB
    • Oracle 软件:至少 6 GB
    • 数据文件:根据数据量确定

软件要求

  • 操作系统:对应 Oracle 版本支持的操作系统版本
    • Linux:Oracle Linux 7.4+,RHEL 7.4+,SLES 12+ 等
    • Windows:Windows Server 2016+ 等
  • 内核参数:已配置适合 Oracle 安装的内核参数
  • 必需软件包
    • Linux:binutils, compat-libcap1, compat-libstdc++-33, gcc, gcc-c++, glibc, glibc-devel, ksh, libaio, libaio-devel, libgcc, libstdc++, libstdc++-devel, libXi, libXtst, make, sysstat 等
    • Windows:.NET Framework 4.7.2+, Windows Management Framework 5.1+ 等

网络配置

  • 主机名:已设置并解析正确
  • IP 地址:已配置静态 IP 地址
  • 防火墙:已开放 Oracle 相关端口(默认 1521)
  • SELinux:Linux 系统上已设置为 permissive 或 disabled

用户和组创建

Linux 系统

bash
# 创建 Oracle 组
groupadd oinstall
groupadd dba
groupadd oper

# 创建 Oracle 用户
useradd -g oinstall -G dba,oper oracle

# 设置 Oracle 用户密码
passwd oracle

# 创建 Oracle 安装目录
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /u01/app/oraInventory

# 设置目录权限
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app

Windows 系统

  • 创建 Oracle 安装用户:使用本地管理员权限的用户
  • 创建安装目录:如 D:\app\oracle\product\19.0.0\dbhome_1

环境变量配置

Linux 系统

编辑 Oracle 用户的 .bash_profile 文件:

bash
# Oracle 环境变量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin

Windows 系统

  • 系统环境变量
    • ORACLE_BASED:\app\oracle
    • ORACLE_HOMED:\app\oracle\product\19.0.0\dbhome_1
    • ORACLE_SIDORCL
    • PATH:添加 %ORACLE_HOME%\bin

安装过程

下载安装介质

  • 从 Oracle 官网下载
    • 访问 Oracle 技术网
    • 选择对应的 Oracle 版本
    • 下载安装包(Linux 为 .zip 文件,Windows 为 .exe 文件)

Linux 系统安装

解压安装包

bash
# 解压安装包
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1

# 设置权限
chown -R oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_1

启动安装向导

bash
# 切换到 Oracle 用户
su - oracle

# 启动安装向导
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller

安装步骤

  1. 配置安全更新

    • 取消勾选"我希望通过 My Oracle Support 接收安全更新"
    • 点击"下一步"
  2. 选择安装选项

    • 选择"创建并配置数据库"
    • 点击"下一步"
  3. 系统类

    • 选择"服务器类"
    • 点击"下一步"
  4. 数据库安装选项

    • 选择"单实例数据库安装"
    • 点击"下一步"
  5. 安装类型

    • 选择"典型安装"
    • 点击"下一步"
  6. 典型安装配置

    • 配置 Oracle 主目录、软件位置、数据库文件位置
    • 设置数据库版本(企业版/标准版)
    • 设置字符集(推荐 AL32UTF8)
    • 设置全局数据库名和 SID
    • 设置管理口令
    • 点击"下一步"
  7. 先决条件检查

    • 系统会自动检查先决条件
    • 解决所有警告和错误
    • 点击"下一步"
  8. 概要

    • 检查安装配置信息
    • 点击"安装"
  9. 执行配置脚本

    • 安装过程中会提示执行配置脚本
    • 打开新终端,以 root 用户执行脚本:
      bash
      /u01/app/oraInventory/orainstRoot.sh
      /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
  10. 完成

    • 安装完成后,点击"关闭"

Windows 系统安装

启动安装向导

  • 双击下载的 Oracle 安装文件(如 setup.exe
  • 选择"以管理员身份运行"

安装步骤

  1. 配置安全更新

    • 取消勾选"我希望通过 My Oracle Support 接收安全更新"
    • 点击"下一步"
  2. 选择安装选项

    • 选择"创建并配置数据库"
    • 点击"下一步"
  3. 系统类

    • 选择"服务器类"
    • 点击"下一步"
  4. 数据库安装选项

    • 选择"单实例数据库安装"
    • 点击"下一步"
  5. 安装类型

    • 选择"典型安装"
    • 点击"下一步"
  6. 典型安装配置

    • 配置 Oracle 主目录、软件位置、数据库文件位置
    • 设置数据库版本(企业版/标准版)
    • 设置字符集(推荐 AL32UTF8)
    • 设置全局数据库名和 SID
    • 设置管理口令
    • 点击"下一步"
  7. 先决条件检查

    • 系统会自动检查先决条件
    • 解决所有警告和错误
    • 点击"下一步"
  8. 概要

    • 检查安装配置信息
    • 点击"安装"
  9. 完成

    • 安装完成后,点击"关闭"

安装后配置

数据库状态检查

Linux 系统

bash
# 检查监听器状态
lsnrctl status

# 检查数据库实例状态
sqlplus / as sysdba
SQL> SELECT status FROM v$instance;
SQL> SELECT open_mode FROM v$database;
SQL> exit;

Windows 系统

  • 检查服务状态

    • 打开"服务"管理控制台
    • 检查 Oracle 相关服务是否启动
  • 检查数据库状态

    • 打开"SQL*Plus"
    • 执行:
      sql
      CONNECT / AS SYSDBA
      SELECT status FROM v$instance;
      SELECT open_mode FROM v$database;
      EXIT;

网络配置

监听器配置

  • 检查监听器配置

    • Linux:$ORACLE_HOME/network/admin/listener.ora
    • Windows:%ORACLE_HOME%\network\admin\listener.ora
  • 启动/重启监听器

    bash
    lsnrctl start
    # 或
    lsnrctl restart

tnsnames.ora 配置

  • 创建/编辑 tnsnames.ora 文件
    text
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = ORCL)
        )
      )

数据库参数调整

内存参数

sql
-- 查看当前内存配置
SELECT * FROM v$sga;
SELECT * FROM v$pgastat WHERE name = 'aggregate PGA target parameter';

-- 调整内存参数(根据实际情况)
ALTER SYSTEM SET sga_target = '2G' SCOPE=spfile;
ALTER SYSTEM SET pga_aggregate_target = '1G' SCOPE=spfile;

-- 重启数据库使参数生效
SHUTDOWN IMMEDIATE;
STARTUP;

进程参数

sql
-- 查看当前进程参数
SELECT value FROM v$parameter WHERE name = 'processes';

-- 调整进程参数(根据实际情况)
ALTER SYSTEM SET processes = 300 SCOPE=spfile;

-- 重启数据库使参数生效
SHUTDOWN IMMEDIATE;
STARTUP;

安全配置

密码策略

sql
-- 查看当前密码策略
SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name LIKE 'PASSWORD%';

-- 调整密码策略
ALTER PROFILE DEFAULT LIMIT
  PASSWORD_LIFE_TIME 90
  PASSWORD_GRACE_TIME 7
  PASSWORD_REUSE_TIME 365
  PASSWORD_REUSE_MAX 10
  PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_function
  PASSWORD_LOCK_TIME 1
  PASSWORD_FAILED_LOGIN_ATTEMPTS 10;

审计配置

sql
-- 启用审计
ALTER SYSTEM SET audit_trail = 'DB,EXTENDED' SCOPE=spfile;

-- 重启数据库使参数生效
SHUTDOWN IMMEDIATE;
STARTUP;

-- 审计特定操作
AUDIT SELECT, INSERT, UPDATE, DELETE ON hr.employees BY ACCESS;

数据库创建验证

连接测试

SQL*Plus 连接

bash
# 使用 SYSDBA 身份连接
sqlplus / as sysdba

# 使用普通用户身份连接
sqlplus system/password@ORCL

tnsping 测试

bash
# 测试网络连接
tnsping ORCL

功能验证

创建表空间

sql
-- 创建用户表空间
CREATE TABLESPACE users DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

-- 验证表空间创建
SELECT tablespace_name, status, contents FROM dba_tablespaces WHERE tablespace_name = 'USERS';

创建用户

sql
-- 创建用户
CREATE USER testuser IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;

-- 授予权限
GRANT CONNECT, RESOURCE TO testuser;

-- 验证用户创建
SELECT username, default_tablespace, temporary_tablespace FROM dba_users WHERE username = 'TESTUSER';

创建表和插入数据

sql
-- 连接到测试用户
CONNECT testuser/password;

-- 创建表
CREATE TABLE test_table (id NUMBER PRIMARY KEY, name VARCHAR2(50));

-- 插入数据
INSERT INTO test_table VALUES (1, 'Test Data');
COMMIT;

-- 查询数据
SELECT * FROM test_table;

常见问题及解决方案

安装失败

问题:先决条件检查失败

  • 原因:系统不满足 Oracle 安装的先决条件
  • 解决方案
    • 根据错误信息安装缺少的软件包
    • 调整系统参数以满足要求
    • 对于非关键警告,可以选择忽略

问题:安装过程中出现错误

  • 原因:可能是系统资源不足、权限问题或配置错误
  • 解决方案
    • 查看安装日志文件,定位错误原因
    • 解决错误后重新启动安装
    • 对于严重错误,可能需要清理后重新安装

数据库无法启动

问题:监听器无法启动

  • 原因:端口被占用、配置文件错误或权限问题
  • 解决方案
    • 检查端口是否被占用:netstat -tuln | grep 1521
    • 检查 listener.ora 配置文件
    • 确保 Oracle 用户有正确的权限

问题:数据库实例无法启动

  • 原因:参数文件错误、数据文件损坏或权限问题
  • 解决方案
    • 查看告警日志文件,定位错误原因
    • 检查参数文件配置
    • 验证数据文件状态和权限

连接问题

问题:无法连接到数据库

  • 原因:监听器未启动、网络问题或连接字符串错误
  • 解决方案
    • 检查监听器状态:lsnrctl status
    • 测试网络连接:ping hostname
    • 验证连接字符串:tnsping ORCL

问题:连接超时

  • 原因:网络延迟过高、监听器负载过大或数据库实例问题
  • 解决方案
    • 检查网络连接质量
    • 增加监听器进程
    • 检查数据库实例状态和性能

最佳实践

安装前

  • 充分规划:根据业务需求规划数据库规模和配置
  • 系统准备:确保系统满足所有先决条件
  • 备份:备份系统,以防安装失败需要恢复
  • 文档:准备详细的安装计划和配置文档

安装过程

  • 遵循向导:严格按照安装向导的步骤进行操作
  • 合理配置:根据实际需求配置数据库参数
  • 记录信息:记录所有配置信息和密码
  • 解决问题:及时解决安装过程中遇到的问题

安装后

  • 全面检查:检查数据库状态、服务状态和网络配置
  • 安全加固:配置密码策略、审计和访问控制
  • 性能调优:根据实际负载调整数据库参数
  • 文档更新:更新安装文档,记录所有操作和配置

日常维护

  • 定期备份:建立定期备份策略
  • 监控:配置数据库监控
  • 更新:及时应用补丁和更新
  • 优化:定期进行数据库性能优化

常见问题(FAQ)

Q1: 如何选择 Oracle 数据库版本?

A1: 选择 Oracle 数据库版本的方法:

  • 企业版:适合大型企业、关键业务系统,提供完整的企业级特性
  • 标准版:适合中型企业,提供核心功能,成本较低
  • 标准版 2:适合小型企业,最多支持 16 个核心
  • 快捷版:适合开发和测试环境,免费使用

Q2: 如何设置 Oracle 数据库的字符集?

A2: 设置 Oracle 数据库字符集的方法:

  • 安装时设置:在安装过程中选择字符集
  • 推荐字符集:AL32UTF8(支持所有 Unicode 字符)
  • 注意事项
    • 字符集一旦设置,修改难度较大
    • 应根据应用需求和国际化要求选择合适的字符集
    • 混合字符集环境可能导致数据转换问题

Q3: 如何配置 Oracle 数据库的自动启动和关闭?

A3: 配置 Oracle 数据库自动启动和关闭的方法:

Linux 系统

  1. 创建自启动脚本

    • 创建 /etc/init.d/oracle 脚本
    • 配置脚本使其在系统启动时启动 Oracle 服务
  2. 设置服务

    bash
    chmod +x /etc/init.d/oracle
    chkconfig --add oracle
    chkconfig oracle on

Windows 系统

  • 服务配置
    • 打开"服务"管理控制台
    • 将 Oracle 相关服务的启动类型设置为"自动"

Q4: 如何验证 Oracle 数据库安装是否成功?

A4: 验证 Oracle 数据库安装成功的方法:

  • 检查服务:Oracle 相关服务是否正常启动
  • 连接测试:使用 SQL*Plus 连接数据库
  • 功能测试:创建表、插入数据、查询数据
  • 性能测试:运行简单的性能测试
  • 日志检查:检查安装日志和数据库告警日志

Q5: 如何卸载 Oracle 数据库?

A5: 卸载 Oracle 数据库的方法:

Linux 系统

  1. 停止 Oracle 服务

    bash
    lsnrctl stop
    sqlplus / as sysdba
    SQL> SHUTDOWN IMMEDIATE;
    SQL> EXIT;
  2. 运行卸载向导

    bash
    cd $ORACLE_HOME/deinstall
    ./deinstall
  3. 清理残留文件

    bash
    rm -rf /u01/app/oracle
    rm -rf /u01/app/oraInventory
    rm -f /etc/oratab

Windows 系统

  1. 停止 Oracle 服务

    • 打开"服务"管理控制台
    • 停止所有 Oracle 相关服务
  2. 运行卸载程序

    • 打开"控制面板" → "程序和功能"
    • 选择 Oracle 相关产品进行卸载
  3. 清理残留文件

    • 删除 Oracle 安装目录
    • 删除注册表中的 Oracle 相关项
    • 删除环境变量中的 Oracle 相关设置