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 和网络加密,确保数据安全。
相关推荐
百度智能云技术站43 分钟前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
梦想平凡2 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
夏木~4 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle
吴冰_hogan5 小时前
MySQL InnoDB 存储引擎 Redo Log(重做日志)详解
数据库·oracle
CodeCraft Studio6 小时前
【实用技能】如何在 SQL Server 中处理 Null 或空值?
数据库·oracle·sqlserver
武汉联从信息6 小时前
浅谈ORACLE中间件SOA BPM,IDM,OID,UCM,WebcenterPortal服务器如何做迁移切换
oracle
Elastic 中国社区官方博客7 小时前
Elasticsearch:什么是查询语言?
大数据·数据库·elasticsearch·搜索引擎·oracle
夜光小兔纸8 小时前
oracle dblink 的创建及使用
数据库·oracle
Smile丶凉轩8 小时前
MySQL库的操作
数据库·mysql·oracle
p@nd@10 小时前
Oracle筑基篇-调度算法-LRU的引入
数据库·oracle·操作系统·lru