滚雪球学Oracle[2.4讲]:创建Oracle数据库实例

devtools/2024/10/9 9:19:29/

全文目录:

    • 前言
    • 一、使用DBCA进行复杂环境下的实例创建
      • 1.1 使用DBCA的步骤
        • 案例演示:DBCA创建实例
      • 1.2 优点与适用场景
    • 二、手动创建数据库实例的步骤与脚本
    • 三、初始化参数文件(PFILE和SPFILE)的高级配置
      • 3.1 PFILE与SPFILE的区别
      • 3.2 高级配置
        • 常见的高级参数:
        • 案例演示:配置SPFILE
    • 四、多实例环境的性能隔离与资源分配
      • 4.1 实例的性能隔离
      • 4.2 CPU与内存的分配
        • 案例演示:设置PDB的CPU资源限制
    • 结语

前言

在上期的内容中,我们深入讨论了Oracle Listener配置与管理,详细介绍了监听器的作用及其在数据库网络通信中的重要性。通过监听器的配置,客户端和数据库服务器得以实现有效的通信,确保数据库应用能够正常运行。我们还讲解了如何通过监听器管理器(lsnrctl)对监听器进行启动、停止和状态监控等操作。这些知识为数据库环境的搭建打下了基础。

本期我们将进一步探讨数据库的核心部分——Oracle数据库实例的创建数据库实例的创建是数据库环境搭建的核心步骤之一,它为数据库的实际操作提供了基础框架。我们将从两种主要的方法着手,分别是使用**DBCA(Database Configuration Assistant)**工具进行自动化的实例创建以及手动创建数据库实例的步骤与相关脚本。此外,我们还会讨论如何通过高级配置优化初始化参数文件(PFILE与SPFILE),并着重介绍在多实例环境下如何实现性能隔离与资源分配,以便为复杂的数据库管理需求提供指导。

一、使用DBCA进行复杂环境下的实例创建

Oracle提供了强大的图形化工具DBCA,用于简化数据库实例的创建过程。DBCA能够引导用户完成复杂环境下的数据库创建,自动配置各种关键参数,并支持多种配置选项,包括模板配置、内存与存储的自动分配、字符集设置等。

1.1 使用DBCA的步骤

在复杂环境下,DBCA提供了一种快速、自动化的数据库创建方式,特别适合新手以及需要部署多个实例的场景。以下是使用DBCA创建实例的基本步骤:

案例演示:DBCA创建实例
  1. 启动DBCA
    在操作系统中,通过命令启动DBCA:

    dbca
    
  2. 选择操作
    在DBCA界面中,选择创建数据库,然后点击下一步

  3. 选择数据库类型
    DBCA提供三种创建数据库的方式:

    • 事务处理型:适合OLTP(在线事务处理)场景。
    • 数据仓库型:适合OLAP(在线分析处理)场景。
    • 自定义数据库:允许用户根据具体需求选择参数配置。
  4. 设置数据库标识
    输入数据库名称(Global Database Name)和SID(System Identifier),例如:

  5. 配置存储选项
    选择存储管理方案,支持:

    • 文件系统存储
    • ASM(Automatic Storage Management)
    • Oracle Cloud(适用于云环境)
  6. 配置内存、字符集和其他高级选项
    设置内存分配、字符集、连接模式等高级配置。推荐设置SGAPGA内存大小,并选择支持多语言的AL32UTF8字符集。

  7. 创建数据库
    DBCA将根据配置自动创建数据库实例并生成相关文件,包括参数文件、控制文件、数据文件等。

1.2 优点与适用场景

使用DBCA进行数据库实例创建的主要优势在于其简易性和自动化。DBCA适合复杂环境下的数据库实例创建,如需要快速部署多个数据库、在云端创建实例或处理不同的业务需求。它极大地简化了繁琐的数据库安装流程,避免了手动配置可能带来的错误。

二、手动创建数据库实例的步骤与脚本

虽然DBCA是一种高效的工具,但手动创建数据库实例仍然是很多高级管理员的首选方式,特别是在需要精细控制数据库配置的场景下。手动创建允许对每一个细节进行深入调整,确保数据库能够根据业务需求进行高度定制化的配置。

2.1 手动创建数据库实例的步骤

案例演示:手动创建Oracle数据库实例
  1. 准备环境

    • 确保Oracle软件已经安装并且配置了必要的环境变量,例如ORACLE_HOMEORACLE_SID
    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
    export ORACLE_SID=testdb
    
  2. 创建初始化参数文件(PFILE)

    • 初始化参数文件定义了实例启动所需的基本配置,可以手动编辑PFILE文件。创建init.ora文件,并写入必要的参数:
    vi $ORACLE_HOME/dbs/inittestdb.ora
    

    示例内容:

    db_name='testdb'
    memory_target=2G
    control_files=('/u01/oradata/testdb/control01.ctl', '/u01/oradata/testdb/control02.ctl')
    
  3. 启动实例并进入NOMOUNT状态

    • 在此阶段,Oracle实例启动但未加载控制文件。
    STARTUP NOMOUNT PFILE='$ORACLE_HOME/dbs/inittestdb.ora';
    
  4. 创建数据库

    • 使用CREATE DATABASE语句创建数据库。以下是一个基础创建数据库的脚本:
    CREATE DATABASE testdb
    USER SYS IDENTIFIED BY password
    USER SYSTEM IDENTIFIED BY password
    LOGFILE GROUP 1 ('/u01/oradata/testdb/redo01.log') SIZE 50M,GROUP 2 ('/u01/oradata/testdb/redo02.log') SIZE 50M
    DATAFILE '/u01/oradata/testdb/system01.dbf' SIZE 500M
    SYSAUX DATAFILE '/u01/oradata/testdb/sysaux01.dbf' SIZE 250M
    DEFAULT TEMPORARY TABLESPACE temp
    TEMPFILE '/u01/oradata/testdb/temp01.dbf' SIZE 100M
    UNDO TABLESPACE undotbs
    DATAFILE '/u01/oradata/testdb/undo01.dbf' SIZE 200M;
    
  5. 创建SPFILE(可选)

    • PFILE转换为SPFILE以便支持动态参数修改。
    CREATE SPFILE FROM PFILE='$ORACLE_HOME/dbs/inittestdb.ora';
    
  6. 执行数据字典视图编译

    • 创建数据库后,执行catalog.sqlcatproc.sql脚本以编译数据字典视图和存储过程。
    @$ORACLE_HOME/rdbms/admin/catalog.sql
    @$ORACLE_HOME/rdbms/admin/catproc.sql
    
  7. 开放数据库

    • 执行完上述脚本后,数据库即可投入使用。
    ALTER DATABASE OPEN;
    

2.2 手动创建的优点

手动创建数据库实例提供了更多的控制和灵活性,特别适用于有特殊需求的企业环境。例如,需要对存储、内存和日志文件进行更复杂的定制时,手动创建可以确保所有配置细节都符合企业的业务要求。此外,手动创建的过程也为DBA提供了更深入的数据库管理经验,使其更能够理解数据库的底层运行机制。

三、初始化参数文件(PFILE和SPFILE)的高级配置

数据库初始化参数文件用于配置Oracle实例的启动行为。Oracle支持两种类型的初始化参数文件:PFILE(Parameter File)SPFILE(Server Parameter File)

3.1 PFILE与SPFILE的区别

  • PFILE:是一个基于文本的文件,手动编辑后需要重新启动实例才能使更改生效。
  • SPFILE:是一个二进制文件,可以在实例运行时动态修改参数,并通过ALTER SYSTEM命令永久保存更改。

3.2 高级配置

通过配置PFILE或SPFILE文件,可以进一步优化数据库实例的性能。

常见的高级参数:
  • memory_target:自动内存管理的总量设置,动态调整SGA和PGA。
  • processes:定义可以并发连接到数据库的最大进程数。
  • control_files:指定控制文件的位置和数量,用于保证数据库的完整性。
  • db_block_size:设置数据块的大小,适用于数据库的读写性能优化。
案例演示:配置SPFILE

通过以下命令动态调整数据库processes参数:

ALTER SYSTEM SET processes=500 SCOPE=SPFILE;

执行完此命令后,修改将在数据库下次重启时生效。

四、多实例环境的性能隔离与资源分配

在多实例环境中,多个数据库实例共用一台服务器的硬件资源。为了确保每个实例的性能稳定,我们需要合理分配资源,并确保实例之间的资源隔离。

4.1 实例的性能隔离

通过Oracle的**资源

管理器**(Resource Manager),可以实现对CPU、内存等资源的细粒度分配。资源管理器能够控制每个实例使用的资源量,从而防止某个实例占用过多的资源,影响其他实例的性能。

4.2 CPU与内存的分配

通过**CDB(Container Database)PDB(Pluggable Database)**架构,Oracle允许多个PDB共享同一套CDB的资源。在这种架构下,可以通过cpu_countmemory_target等参数为每个PDB分配独立的CPU和内存资源。

案例演示:设置PDB的CPU资源限制
ALTER SYSTEM SET cpu_count=4 SCOPE=SPFILE;

通过该命令,我们为数据库实例分配了4个CPU核心,从而保证其他实例不会受到影响。

结语

在本期内容中,我们详细讲解了创建Oracle数据库实例的多种方式,包括如何使用DBCA工具在复杂环境下快速创建数据库实例,以及手动创建实例的详细步骤与相关脚本。同时,我们还探讨了初始化参数文件(PFILE与SPFILE)的高级配置,以及多实例环境下的性能隔离与资源分配。这些知识将帮助数据库管理员更好地理解数据库实例的创建与优化过程。

下期我们将深入探讨数据库初始化配置,涵盖数据库参数的高级优化与性能调优。敬请期待!


参考文献:

  • Oracle官方文档
  • 数据库管理实践与优化

http://www.ppmy.cn/devtools/122395.html

相关文章

3DGS中Densification梯度累计策略的改进——绝对梯度策略(Gaussian Opacity Fields)

在学习 StreetGS 代码中发现了其中的 Densification 策略与原 3DGS 不太一样,其是使用的 Gaussian Opacity Fields 中的一个的策略 我们先来回忆一下 3DGS 中一个比较重要 contribution:自适应密度控制 1 自适应密度控制 其具体步骤如下: …

CUDA cooperative_groups grid_group测试

CUDA cooperative_groups grid_group测试 一.测试描述及小结1.任务描述2.输出3.小结 二.复现步骤三.grid_group.sync 代码对照1.CUDA C2.PTX3.SASS CUDA Cooperative Groups是CUDA编程模型中引入的一组高级特性,提供了更灵活的线程组织和同步机制 通过Cooperative G…

C 语言入门指南:致大一新生

亲爱的大一新生们: 当你踏入大学的校门,开启全新的学习之旅时,C 语言或许会成为你在计算机世界中探索的重要起点。C 语言作为一种广泛应用且基础的编程语言,掌握它将为你打开编程世界的大门。 一、认识 C 语言 C 语言是一种结构化…

一个简单的SQL面试题

最近面试遇到一个SQL题,复述如下: SQL面试题 现在有两张表,结构如下: 学生表(student) 学号sid姓名name1张三2李四3王五 成绩表(score) 序号id学号sid科目subject分数score11语…

【优选算法】(第十一篇)

目录 ⼭峰数组的峰顶(easy) 题目解析 讲解算法原理 编写代码 寻找峰值(medium) 题目解析 讲解算法原理 编写代码 ⼭峰数组的峰顶(easy) 题目解析 1.题目链接:. - 力扣(Leet…

【CSS Tricks】试试新思路去处理文本超出情况

目录 引言一、常规套路1. 单行文本省略2. 多行文本省略 二、新思路美化一下1. 单行/多行文本隐藏2. 看下效果 三、总结 引言 本篇为css的一个小技巧 文本溢出问题是一个较为常见的场景。UI设计稿为了整体的美观度会将文本内容限制到一定范围内,然而UI设计阶段并不能…

GPT带我学-设计模式16-原型模式

概述 原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不是通过类的构造函数。这个模式特别适用于对象创建开销较大或者对象需要频繁被创建和销毁的场景。 主要组成部分: 原型接口:声明一个克隆自身的方法。…

项目定位与服务器(SERVER)模块划分

目录 定位 HTTP协议以及HTTP服务器 高并发服务器 单Reactor单线程 单Reactor多线程 多Reactor多线程 模块划分 SERVER模块划分 Buffer 模块 Socket模块 Channel 模块 Connection模块 Acceptor模块 TimerQueue模块 Poller模块 EventLoop模块 TcpServer模块 SE…