• Oracle 管理多租户环境之CDB管理


     CDB的管理

    1.当前容器

    • 通过SYS_CONTEXT命令来查看,

     col con_id format a10
    col con_name format a20
    select sys_context('userenv','con_id') as con_id,sys_context('userenv','con_name') as con_name from dual;

    • 通过show 命令
    1. [oracle@oracle-db-19c ~]$ sqlplus / as sysdba
    2. SQL*Plus: Release 19.0.0.0.0 - Production on Wed Nov 30 11:07:06 2022
    3. Version 19.3.0.0.0
    4. Copyright (c) 1982, 2019, Oracle. All rights reserved.
    5. Connected to:
    6. Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    7. Version 19.3.0.0.0
    8. SQL> col con_id format a10
    9. SQL> col con_name format a20
    10. SQL> select sys_context('userenv','con_id') as con_id,sys_context('userenv','con_name') as con_name from dual;
    11. CON_ID CON_NAME
    12. ---------- --------------------
    13. 1 CDB$ROOT
    14. SQL>
    15. SQL> show con_name;
    16. CON_NAME
    17. ------------------------------
    18. CDB$ROOT
    19. SQL>
    20. SQL> show pdbs;
    21. CON_ID CON_NAME OPEN MODE RESTRICTED
    22. ---------- ------------------------------ ---------- ----------
    23. 2 PDB$SEED READ ONLY NO
    24. 3 PDB1 READ WRITE NO
    25. 4 PDB2 MOUNTED
    26. 5 CNDBAPDB MOUNTED
    27. 6 CNDBAPDB3 MOUNTED
    28. 7 CNDBAPDB2 MOUNTED
    29. 8 CNDBAPDB4_FRESH READ ONLY NO
    30. SQL> alter session set container=PDB1;
    31. Session altered.
    32. SQL> show user;
    33. USER is "SYS"
    34. SQL> show con_name;
    35. CON_NAME
    36. ------------------------------
    37. PDB1
    38. SQL>

     2.修改CDB的参数

    1. [oracle@oracle-db-19c ~]$
    2. [oracle@oracle-db-19c ~]$ sqlplus / as sysdba
    3. SQL*Plus: Release 19.0.0.0.0 - Production on Wed Nov 30 11:26:54 2022
    4. Version 19.3.0.0.0
    5. Copyright (c) 1982, 2019, Oracle. All rights reserved.
    6. Connected to:
    7. Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    8. Version 19.3.0.0.0
    9. SQL> col name for a20
    10. SQL> select con_id,name,ispdb_modifiable from v$system_parameter where name='open_cursors';
    11. CON_ID NAME ISPDB
    12. ---------- -------------------- -----
    13. 0 open_cursors TRUE
    14. SQL> set linesize 200
    15. SQL> show parameter open_cursors;
    16. NAME TYPE VALUE
    17. ------------------------------------ ----------- ------------------------------
    18. open_cursors integer 300
    19. SQL> alter system set open_cursors = 301;
    20. System altered.
    21. SQL> show parameter open_cursors;
    22. NAME TYPE VALUE
    23. ------------------------------------ ----------- ------------------------------
    24. open_cursors integer 301
    25. SQL> alter session set container=PDB1;
    26. Session altered.
    27. SQL> show parameter open_cursors;
    28. NAME TYPE VALUE
    29. ------------------------------------ ----------- ------------------------------
    30. open_cursors integer 301
    31. SQL>

    3.修改PDB的参数

       1.使用ALTER DATABASE 命令修改CDB的参数。

    • 以公共用户身份连接到CDB root,可以通过ALTER PLUGGABLE DATABASE 语句来修改PDB的相关配置
    • 也可以直接连接到PDB中,通过ALTER DATABASE 语句来修改相关配置。

    (1) 修改CDB。当公共用户连接的是CDB root时,通过ALTER DATABASE 命令执行如下语句会修改整个CDB.

    startup/recovery/logfile/controlfile/standbydatabase/instance/security/RENAME/GLOBAL_NAME/ENABLE LOCK CHANGE TRACKING/DISABLE LOCK CHANGE TRACKING

    (2) 只修改CDB root 。当公共用户连接的是CDB root时,通过ALTER DATABASE 命令执行如下语句只修改CDB root

    datafile/DEFAULT EDITION/DEFAULT TABLESPACE/ DEFAULT TEMPORARY TABLESPACE

    (3)  修改一个或多个PDB。公共用户连接到CDB root时,可以通过ALTER PLUGGABLE DATABASE 语句修改PDB的打开状态(MOUNT/READ ONLY/READ WRITE),以及保存/忽略PDB的打开状态。

    2.使用ALTER DATABASE命令修改CDB的UNDO模式。

    1. [oracle@oracle-db-19c ~]$ sqlplus / as sysdba
    2. SQL*Plus: Release 19.0.0.0.0 - Production on Wed Nov 30 13:39:46 2022
    3. Version 19.3.0.0.0
    4. Copyright (c) 1982, 2019, Oracle. All rights reserved.
    5. Connected to:
    6. Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    7. Version 19.3.0.0.0
    8. SQL> show user;
    9. USER is "SYS"
    10. SQL> show con_name;
    11. CON_NAME
    12. ------------------------------
    13. CDB$ROOT
    14. SQL> col property_name for a30;
    15. SQL> col property_value for a20;
    16. SQL> select property_name,property_value from database_properties where property_name='LOCAL_UNDO_ENABLED';
    17. PROPERTY_NAME PROPERTY_VALUE
    18. ------------------------------ --------------------
    19. LOCAL_UNDO_ENABLED TRUE
    20. SQL>

    TRUE代表本地UNDO模式,FLASE代表共享UNDO模式。

    (2)共享UNDO模式转换为本地UNDO模式的步骤如下:

    关闭CDB,代码如下

    shutdown immediate;

    以UPGRADE方式启动CDB,代码如下:

    STARTUP UPGRADE;

    确认当前容器是CDB root,代码如下:

    show con_name;
    

    启动本地UNDO,代码

    ALTER DATABASE LOCAL UNDO ON;

    重启 CDB,正常打开,

    1. SHUTDOWN IMMEDIATE;
    2. STARTUP;

    (3) 本地UNDO模式转换为共享UNDO模式的步骤如下:

    关闭CDB

    shutdown immediate

    以UPGRADE方式启动CDB,

    STARTUP UPGRADE;

    确认当前容器是CDB root,

    SHOW CON_NAME

    禁用本地UNDO

    ALTER DATABASE LOCAL UNDO OFF

    重启CDB,正常打开,

    1. SHUTDOWN IMMEDIATE;
    2. STARTUP;

    4.CDB和PDB参数保存位置说明

    1. # CDB
    2. SQL>
    3. SQL> show con_name;
    4. CON_NAME
    5. ------------------------------
    6. CDB$ROOT
    7. SQL> show parameter spfile;
    8. NAME TYPE VALUE
    9. ------------------------------------ ----------- ------------------------------
    10. spfile string /u01/app/oracle/product/19.3.0
    11. /dbhome_1/dbs/spfilecdb1.ora
    12. SQL>
    13. SQL> alter session set container=PDB1;
    14. Session altered.
    15. SQL> show parameter spfile;
    16. NAME TYPE VALUE
    17. ------------------------------------ ----------- ------------------------------
    18. spfile string /u01/app/oracle/product/19.3.0
    19. /dbhome_1/dbs/spfilecdb1.ora
    20. SQL> alter session set container=cdb$root;
    21. Session altered.
    22. SQL>

    CDB Fleet特性

    Fleet就是一个逻辑的CDB集合。其中,Lead CDB 是CDB Fleet中用于监控和管理其它CDB的。

    在CDB Fleet中,可以通过以下方式来访问CDB和PDB中的数据:

    • CDB视图
    • GV$视图
    • CONTAINERS子句
    • 容器映射

    配置CDB FLEET环境

    1.设置Lead CDB ,通过以下命令启动该特性:

    1. # 启动 LEAD CDB
    2. SQL>
    3. SQL> alter database set lead_cdb = true;
    4. Database altered.
    5. SQL> select property_value from database_properties where property_name='LEAD_CDB';
    6. PROPERTY_VALUE
    7. --------------------
    8. TRUE
    9. SQL>

    管理PDB

    管理PDB和管理普通的Non-CDB一样,可以管理表空间、数据文件、临时文件和用户对象等。

    • 启动和关闭CDB
    • 修改CDB
    • 管理以下组件:进程、内存、错误和告警信息、诊断数据、控制文件、在线redo日志、归档日志、UNDO模式。
    • 创建、插入、拔出和删除PDB。

    在系统级别修改PDB

  • 相关阅读:
    位置变量及实例
    【电气安全】安科瑞电气火灾监控系统在江苏某大学中设计与应用
    SFUZZ模糊测试平台全新升级,从标准到实践助力车企安全出海
    共享模型之管程
    【精讲】vue2框架开发项目(内含css、HTML、js内容均有详细注释)影片排名榜
    了解“预训练-微调”,看这一篇就够了
    【前端干货】别再羡慕别人的Excel啦,教你点击按钮直接打开侧边栏!
    工业物联网关-整体框架
    C#入门:简单数据类型和强制类型转换
    基于智能分析的恶意软件检测研究进展和挑战
  • 原文地址:https://blog.csdn.net/u011868279/article/details/128110352