• Oracle LiveLabs实验:Manage Database Instance and Memory for Oracle Database 21c


    概述

    此实验申请地址在这里

    实验帮助在这里

    此实验预估完成时间100分钟。

    该研讨会介绍了 Oracle 数据库实例的基本知识,并指导您管理 Oracle 数据库的初始化参数和内存结构

    管理初始化参数以在 Oracle 数据库上执行关键任务,例如管理数据库实例和调整内存组件的大小,以提高数据库的性能。

    这个实验设计得一般。

    目标

    从 SQL 命令行和 Oracle Enterprise Manager Cloud Control (Oracle EMCC) 执行以下操作 -

    • 关闭并启动数据库实例。
    • 查看和修改初始化参数。
    • 管理自动内存管理。

    此实验的作者为Manisha Mati,其他贡献者为Suresh Rajan, Manish Garodia, Kurt Engeleiter, Suresh Mohan, Jayaprakash Subramanian, Ashwini R。

    背景知识

    Oracle 数据库实例和内存管理概述

    Oracle 数据库系统由一个 Oracle 数据库和一个实例(也称为数据库实例)组成。 该实例包含一组后台进程,这些进程对存储的数据和进程使用的共享分配内存进行操作。 您可以以具有 SYSDBA 权限的 SYS 用户身份启动或关闭 Oracle 实例。

    每个实例都有一个实例 ID,也称为系统 ID (SID)。 主机上有多个 Oracle 数据库,每个数据库都有自己的数据文件集。 您必须确定要连接的实例。 对于本地连接,您可以通过设置操作系统环境变量 ORACLE_SIDORACLE_HOME 来识别实例。

    启动数据库实例

    启动实例的过程如下。

    1. 使用 Oracle EMCC 或 SQL*Plus 命令启动实例。 Oracle 读取初始化参数文件,分配系统全局区域 (SGA) 内存,并为实例启动后台进程。
    2. 然后数据库处于挂载状态。 此状态使管理员能够执行在其他用户访问数据库时无法执行的某些功能。
    3. 挂载数据库后,实例打开数据库的重做日志文件和数据文件。 该数据库现已打开,可供所有用户访问。

    数据库默认启动方式为OPEN,依次完成以上三个阶段。 您可以通过以下方式启动实例。

    • NOMOUNT — 启动实例而不挂载数据库。
    • MOUNT — 启动实例并挂载数据库,但保持关闭状态。 此状态允许某些 DBA 活动,但不允许对数据库进行一般访问。
    • OPEN — 启动实例、挂载并打开数据库。 您可以在不受限制的模式下执行此操作,允许所有用户访问,或者在受限模式下,仅允许数据库管理员访问。
    • FORCE - 强制实例在启动问题后启动。

    关闭数据库实例
    关闭实例的过程与启动实例相反。 它包括以下几个阶段。

    • 使用 Oracle EMCC 或 SQL*Plus 命令关闭数据库。 数据文件和日志文件已关闭。 数据库关闭后,用户将无法再访问数据库。(相当于MOUNT状态
    • Oracle 实例卸载数据库并更新控制文件中的相关条目以记录干净的关闭。 控制文件已关闭。 数据库现已关闭,仅保留实例。(相当于NOMOUNT状态
    • Oracle 实例停止实例的后台进程并释放 SGA 使用的共享内存。

    初始化参数
    管理数据库实例包括配置影响 Oracle 实例基本操作的参数。 这些参数称为初始化参数。 数据库实例在启动时从 INIT.ORA 文件中读取初始化参数。

    在安装期间,当您选择 Oracle 数据库配置助手 (DBCA) 中可用的预配置数据库工作负载时,初始化参数将针对您指定的环境中的典型使用进行优化。 随着数据库用户数量的增加和工作量的增加,您可能需要更改一些初始化参数。

    初始化参数是 Oracle 数据库中非常重要的一部分。 您必须为数据库设置基本参数才能正常有效地运行。 如果没有有效的初始化参数文件,数据库将不会启动。 该文件仅在启动时读取,包含设置 SGA 所需的信息。

    以下是两种类型的参数文件:

    • 服务器参数文件 (SPFile) - 这是初始化参数文件的首选形式。 它是一个可以被数据库写入和读取的二进制文件。 它存储在运行 Oracle 数据库的主机上
      注意:更改 SPFile 中的初始化参数时,您还可以指定更改内存中的值,以便您的更改立即反映在当前实例中。 如果您不更改内存中的值,那么更改将在您关闭并重新启动数据库之前生效。
    • 文本初始化参数文件(PFile)——这种类型的初始化参数文件可以被数据库服务器读取,但不能被服务器写入。 在此文件中,您可以使用文本编辑器设置初始化参数,以便它们在关机和启动时保持不变。

    Oracle 数据库启动时,Oracle 从 SPFile 或 PFile 读取初始化参数值。 这些参数告知 Oracle 数据库要分配多少内存、将与数据库相关的文件放在哪里以及现有数据文件的位置。

    关于实例内存管理
    实例内存结构的大小会影响 Oracle 数据库服务器的性能,并由初始化参数控制。 当您使用 DBCA 创建数据库时,内存参数会根据数据库工作负载(例如数据仓库、通用用途或事务处理)自动设置为最佳值。 但是,随着数据库使用量的增加,您可以更改内存参数的设置。

    与 Oracle 数据库相关的基本内存结构包括:

    • 系统全局区域 (SGA)
      SGA 是一组共享内存结构,称为 SGA 组件,其中包含一个 Oracle 数据库实例的数据和控制信息。 SGA 由所有服务和后台进程共享。 存储在 SGA 中的数据示例包括缓存数据块和共享 SQL 区域。
    • 程序全局区 (PGA)
      PGA 是一个内存区域,其中包含服务器进程的数据和控制信息。 它是 Oracle 数据库在服务器进程启动时创建的非共享内存。 对 PGA 的访问是服务器进程独有的。 每个服务器进程都有一个 PGA。 后台进程也分配它们自己的 PGA。

    自动内存管理
    Oracle 数据库可以管理 SGA 内存和实例 PGA 内存。 您只需指定实例使用的总内存大小,数据库会根据需要在 SGA 和实例 PGA 之间动态交换内存以满足处理需求。 此功能称为自动内存管理。 在这种内存管理模式下,数据库还会动态调整各个 SGA 组件的大小和各个 PGA 的大小。

    安装后,您可以让 Oracle 数据库自动管理内存,或选择手动配置实例内存结构。 无论是手动和自动内存管理,Oracle 数据库都会发送警报,以识别需要您注意的内存大小问题。

    管理实例内存的最简单方法是允许数据库实例为您自动管理和调整它。您设置目​​标内存大小初始化参数 (MEMORY_TARGET) 和可选的最大内存大小初始化参数 (MEMORY_MAX_TARGET)。实例使用的总内存保持相对恒定,基于 MEMORY_TARGET 的值,并且实例自动在系统全局区域 (SGA) 和实例程序全局区域 (instance PGA) 之间分配内存。随着内存需求的变化,实例会在 SGA 和实例 PGA 之间动态重新分配内存。

    如果您没有为 Oracle 数据库启用自动内存管理,那么您必须手动设置 SGA 和 PGA 的内存。在安装 Oracle 数据库时,安装程​​序会为您提供启用自动内存管理的选项。如果您在数据库安装期间未启用自动内存管理,则可以按照本研讨会中的说明启用它。

    参考文档

    实验 3:关闭和启动数据库实例

    介绍

    本实验将引导您完成使用 SQL 命令和 Oracle Enterprise Manager Cloud Control (Oracle EMCC) 关闭和启动数据库实例的过程。

    预计时间:15分钟

    目标

    • 设置环境变量。
    • 从 SQL 命令行关闭并启动数据库实例。
    • 从 Oracle EMCC 关闭并启动数据库实例。

    任务 1:设置环境

    实际环境是一个2 OCPU,32GB的机器。同时安装了Oracle数据库和EMCC。

    总共有3个数据库实例:

    List of Database Instances
    
    #  ORACLE_SID
    -- ----------
    1) emrep
    2) db19c
    3) orcl
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    任务 2:从 SQL 命令行关闭数据库实例

    SQL> select status from v$instance;
    
    STATUS
    ------------
    OPEN
    
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> select status from v$instance;
    select status from v$instance
    *
    ERROR at line 1:
    ORA-01034: ORACLE not available
    Process ID: 0
    Session ID: 0 Serial number: 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    任务 3:从 SQL 命令行启动数据库实例

    SQL> startup
    ORACLE instance started.
    
    Total System Global Area 6291454960 bytes
    Fixed Size                  9149424 bytes
    Variable Size            1895825408 bytes
    Database Buffers         4378853376 bytes
    Redo Buffers                7626752 bytes
    Database mounted.
    Database opened.
    SQL> show pdbs
    
        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
             2 PDB$SEED                       READ ONLY  NO
             3 OLTP_CL2                       READ WRITE NO
             4 PSAL_CL1                       READ WRITE NO
    SQL> alter pluggable database all open;
    
    Pluggable database altered.
    
    SQL> select status from v$instance;
    
    STATUS
    ------------
    OPEN
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    任务 4:从 Oracle EMCC 关闭数据库实例

    略。

    任务 5:从 Oracle EMCC 启动数据库实例

    略。

    实验 4:管理初始化参数

    在这里插入图片描述

    初始化参数窗口有两个选项卡:

    • Current - 此默认选项卡显示数据库实例当前处于活动状态和内存中的所有初始化参数值。
    • SPFile — 此选项卡显示服务器参数文件 (SPFILE) 中的初始化参数设置。 如果数据库实例以 SPFile 启动,该窗口将显示 SPFile 选项卡。 但如果数据库实例以 PFile 开头,则窗口不会显示此选项卡。

    注意:如果参数的值字段不可编辑,则表示该参数不是动态的。 您无法更改当前实例的该参数。

    注意:服务器参数文件是一个可以被Oracle数据库读写的二进制文件,是初始化参数文件的推荐格式。

    初始化参数有Basic和Dynamic两类。

    在 PDB 中,Initialization Parameters 页面包括 PDB Modifiable 列。 每个可以在 PDB 级别修改的初始化参数在 PDB Modifiable 列中都有一个复选标记。

    注意: PDB 中任何在 PDB Modifiable 列中没有复选标记的初始化参数只能在根中设置和修改。 在根目录中设置的值适用于多租户 CDB 中的各个 PDB。

    初始化参数存在于 CDB 级别和 PDB 级别。 默认情况下,PDB 级别的初始化参数继承 CDB 级别的初始化参数的值。

    实验 5:自动内存管理

    启用自动内存管理

    第一个没成功:

    SQL> show parameter target
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    archive_lag_target                   integer     0
    db_big_table_cache_percent_target    string      0
    db_flashback_retention_target        integer     1440
    fast_start_io_target                 integer     0
    fast_start_mttr_target               integer     0
    memory_max_target                    big integer 0
    memory_target                        big integer 0
    parallel_servers_target              integer     80
    pga_aggregate_target                 big integer 575M
    sga_target                           big integer 5904M
    target_pdbs                          integer     11
    SQL> show con_name
    
    CON_NAME
    ------------------------------
    CDB$ROOT
    SQL> alter system set memory_max_target=6G scope=spfile;
    
    System altered.
    
    SQL> alter system set memory_target=5G scope=spfile;
    
    System altered.
    
    SQL> alter system set pga_aggregate_target=0 scope=spfile;
    
    System altered.
    
    SQL> alter system set sga_target=0 scope=spfile;
    
    System altered.
    
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORA-00844: Parameter not taking MEMORY_TARGET into account
    ORA-00851: SGA_MAX_SIZE 6291456000 cannot be set to more than MEMORY_TARGET 5368709120.
    ORA-01078: failure in processing system parameters
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    第二个也没成功。

    SQL> show parameter target
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    archive_lag_target                   integer     0
    db_big_table_cache_percent_target    string      0
    db_flashback_retention_target        integer     1440
    fast_start_io_target                 integer     0
    fast_start_mttr_target               integer     0
    memory_max_target                    big integer 0
    memory_target                        big integer 0
    parallel_servers_target              integer     80
    pga_aggregate_target                 big integer 3164M
    sga_target                           big integer 9504M
    target_pdbs                          integer     18
    SQL> show con_name
    
    CON_NAME
    ------------------------------
    CDB$ROOT
    SQL> alter system set memory_max_target=6G scope=spfile;
    
    System altered.
    
    SQL> alter system set memory_target=5G scope=spfile;
    
    System altered.
    
    SQL> alter system set pga_aggregate_target=0 scope=spfile;
    
    System altered.
    
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 9520M
    ORA-01078: failure in processing system parameters
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    原因是因为我忘记将SGA参数设置为0了:

    alter system set sga_target=0 scope=spfile;
    
    • 1

    禁用自动内存管理

    仅有通过EMCC的操作,此略。
    注意:Memory Advisors 选项仅在 Database Instance 主页上可用,在 PDB 主页上不可用。 您可以在禁用自动内存管理功能时使用内存顾问。 内存顾问会自动调整各种 SGA 和 PGA 之间的内存分配以获得最佳性能。 这些调整是在您的总 SGA 和 PGA 目标值的范围内进行的。 如果 Memory Advisor 发现当前可用内存量不足并对性能产生不利影响,它建议您增加 SGA 或 PGA 目标值。 您可以使用 Memory Advisor 为 SGA 和 PGA 设置新值。

  • 相关阅读:
    打造类ChatGPT服务,本地部署大语言模型(LLM),如何远程访问?
    Ansible之playbooks剧本
    算法训练 第一周
    面试官:工作中用过锁么?说说乐观锁和悲观锁的优劣势和使用场景
    odoo13笔记点
    VoLTE题库(含解析)-中高级必看
    TypeScript 基础学习
    react源码分析:babel如何解析jsx
    大语言模型-LLM简介
    Python-- list(列表)的使用
  • 原文地址:https://blog.csdn.net/stevensxiao/article/details/127864221