Oracle 单机和集群环境部署教程

目录

    • [一、Oracle 单机环境部署](#一、Oracle 单机环境部署)
      • [1. 环境准备](#1. 环境准备)
      • [2. 安装 Oracle Database](#2. 安装 Oracle Database)
        • [2.1 下载 Oracle Database](#2.1 下载 Oracle Database)
        • [2.2 创建 Oracle 用户和组](#2.2 创建 Oracle 用户和组)
        • [2.3 配置内核参数和系统限制](#2.3 配置内核参数和系统限制)
        • [2.4 解压和安装](#2.4 解压和安装)
        • [2.5 配置监听程序](#2.5 配置监听程序)
        • [2.6 创建数据库](#2.6 创建数据库)
      • [3. 单机部署注意事项](#3. 单机部署注意事项)
    • [二、Oracle 集群环境部署 (Oracle RAC)](#二、Oracle 集群环境部署 (Oracle RAC))
      • [1. 环境准备](#1. 环境准备)
      • [2. 安装 Grid Infrastructure](#2. 安装 Grid Infrastructure)
        • [2.1 下载和解压 Grid Infrastructure 软件](#2.1 下载和解压 Grid Infrastructure 软件)
        • [2.2 运行 Grid Setup](#2.2 运行 Grid Setup)
        • [2.3 配置 ASM(Automatic Storage Management)](#2.3 配置 ASM(Automatic Storage Management))
      • [3. 安装 Oracle Database RAC](#3. 安装 Oracle Database RAC)
      • [4. 集群部署注意事项](#4. 集群部署注意事项)
    • [三、Oracle 使用案例](#三、Oracle 使用案例)
      • [1. Java 示例:使用 JDBC 连接 Oracle](#1. Java 示例:使用 JDBC 连接 Oracle)
        • [1.1 添加 Maven 依赖](#1.1 添加 Maven 依赖)
        • [1.2 编写 Java 代码](#1.2 编写 Java 代码)
      • [2. Python 示例:使用 cx_Oracle 连接 Oracle](#2. Python 示例:使用 cx_Oracle 连接 Oracle)
        • [2.1 安装 cx_Oracle](#2.1 安装 cx_Oracle)
        • [2.2 编写 Python 代码](#2.2 编写 Python 代码)
    • 总结

一、Oracle 单机环境部署

1. 环境准备

  • 操作系统:Linux(推荐 Oracle Linux、RedHat、CentOS 等),或 Windows Server。
  • Oracle 版本:Oracle Database 19c(推荐最新长期支持版本)。
  • 硬件要求
    • 内存:至少 8 GB。
    • 磁盘空间:至少 45 GB。
    • CPU:至少 2 核。

2. 安装 Oracle Database

2.1 下载 Oracle Database

Oracle 官网 下载适合你操作系统的 Oracle Database 19c 安装包。

2.2 创建 Oracle 用户和组

在 Linux 上,Oracle 需要独立的用户和组进行管理。

bash 复制代码
# 创建 Oracle 用户和组
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
2.3 配置内核参数和系统限制

编辑 /etc/sysctl.conf,添加以下内容:

bash 复制代码
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
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

应用配置:

bash 复制代码
sudo sysctl -p

编辑 /etc/security/limits.conf,添加以下内容:

bash 复制代码
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
2.4 解压和安装
  1. 解压下载的 Oracle 软件包

    bash 复制代码
    unzip linuxx64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
  2. 切换为 Oracle 用户并运行安装程序

    bash 复制代码
    sudo su - oracle
    cd /u01/app/oracle/product/19.0.0/dbhome_1
    ./runInstaller

安装过程将启动图形界面,按照提示完成安装。

2.5 配置监听程序
  1. 启动监听程序配置工具

    bash 复制代码
    netca
  2. 按照提示完成监听程序的配置。

2.6 创建数据库

使用 dbca(Database Configuration Assistant)创建数据库:

bash 复制代码
dbca

选择创建数据库,设置 SID、存储选项等。

3. 单机部署注意事项

  • 系统资源配置:确保 Oracle 数据库有足够的内存和 CPU 资源。
  • 监听配置:确保监听程序配置正确,特别是外部访问时要注意开放端口。
  • 备份:配置 RMAN 进行定期备份,防止数据丢失。
  • 安全性:配置用户权限,确保数据库的安全访问。

二、Oracle 集群环境部署 (Oracle RAC)

Oracle Real Application Cluster (RAC) 允许多个服务器共享一个 Oracle 数据库实例,提供高可用性和负载均衡。

1. 环境准备

  • 操作系统:Linux(推荐 Oracle Linux)。
  • 集群节点数量:至少 2 台服务器。
  • 存储要求:共享存储(例如 ASM、NFS)。
  • 网络要求
    • 公共网络:所有节点之间的通信。
    • 私有网络:用于节点间心跳检测和数据传输。

2. 安装 Grid Infrastructure

Grid Infrastructure 提供集群服务和共享存储管理。

2.1 下载和解压 Grid Infrastructure 软件

下载 Grid Infrastructure 软件,并解压到每个节点。

bash 复制代码
unzip linuxx64_193000_grid_home.zip -d /u01/app/19.0.0/grid
2.2 运行 Grid Setup

oracle 用户身份执行以下命令:

bash 复制代码
cd /u01/app/19.0.0/grid
./gridSetup.sh

选择"Configure Oracle Grid Infrastructure for a Cluster",并根据提示完成安装。

2.3 配置 ASM(Automatic Storage Management)

安装完成后,使用 asmca 配置 ASM 以管理共享存储。

3. 安装 Oracle Database RAC

  1. 解压 Oracle Database 软件

    解压 Oracle Database 安装包。

  2. 执行 Oracle 安装程序

    在每个节点上执行安装程序:

    bash 复制代码
    ./runInstaller

    选择"Oracle Real Application Cluster"并安装。

4. 集群部署注意事项

  • 共享存储:确保所有节点能够访问共享存储。
  • 网络配置:配置私有网络和公共网络,确保集群通信正常。
  • 心跳检测:配置好节点之间的心跳检测机制,防止脑裂现象。
  • 高可用性:使用 Grid Infrastructure 提供的高可用功能,确保节点故障时自动故障转移。

三、Oracle 使用案例

1. Java 示例:使用 JDBC 连接 Oracle

1.1 添加 Maven 依赖

pom.xml 中添加 Oracle JDBC 驱动依赖:

xml 复制代码
<dependencies>
    <dependency>
        <groupId>com.oracle.database.jdbc</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>19.8.0.0</version>
    </dependency>
</dependencies>
1.2 编写 Java 代码
java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class OracleExample {
    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@localhost:1521:ORCLCDB";
        String user = "myuser";
        String password = "mypassword";

        try {
            Connection conn = DriverManager.getConnection(url, user, password);
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM employees");

            while (rs.next()) {
                System.out.println(rs.getString("name") + ", " + rs.getString("position"));
            }

            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2. Python 示例:使用 cx_Oracle 连接 Oracle

2.1 安装 cx_Oracle
bash 复制代码
pip install cx_Oracle
2.2 编写 Python 代码
python 复制代码
import cx_Oracle

def query_database():
    conn = cx_Oracle.connect("myuser/mypassword@localhost:1521/ORCLCDB")
    cursor = conn.cursor()

    cursor.execute("SELECT * FROM employees")

    for row in cursor:
        print(row)

    cursor.close()
    conn.close()

if __name__ == "__main__":
    query_database()

总结

通过以上步骤,我们完成了 Oracle 单机和集群环境的部署,并实现了 Java 和 Python 的简单连接示例。Oracle 数据库作为企业级数据库管理系统,适用于各种高可用性和高性能需求的场景。

部署过程中的注意事项

  • 硬件要求:确保服务器满足 Oracle 数据库的资源要求,尤其是 RAC 集群部署。
  • 网络配置:在集群环境下,确保网络配置正确,特别是节点间通信和存储访问。
  • 存储管理:在 RAC 中使用 ASM 管理共享存储,确保数据高效管理和安全性。
  • 安全性:配置用户权限、启用 SSL 和网络加密,确保数据安全。
相关推荐
毕业设计制作和分享5 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
funnyZpC8 小时前
quartz集群增强版🎉
java·分布式·开源·集群·定时任务
Dingww101110 小时前
梧桐数据库中的网络地址类型使用介绍分享
数据库·oracle·php
2401_8570262311 小时前
Spring Boot框架下的知识管理与多维分类
spring boot·后端·oracle
刘艳兵的学习博客19 小时前
刘艳兵-DBA027-在Oracle数据库,通常可以使用如下方法来得到目标SQL的执行计划,那么通过下列哪些方法得到的执行计划有可能是不准确的?
数据库·oracle·面试·database·刘艳兵
秋意钟21 小时前
MySql事务
数据库·mysql·oracle
Mephisto.java21 小时前
【大数据学习 | HBASE】hbase的整体架构
大数据·sql·oracle·json·hbase·database
蚊子不吸吸1 天前
DevOps开发运维简述
linux·运维·ci/cd·oracle·kubernetes·gitlab·devops
Ayka1 天前
Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL)
linux·sql·qt·oracle·oci
hummhumm1 天前
Oracle 第19章:高级查询技术
java·数据库·python·sql·mysql·oracle·database