• 番外:可刷新PDB的管理操作(如何切换PDB Switching Over)


    基于版本:19c (12.2.0.3) AskScuti

    主题:可刷新PDB如何进行切换操作

    内容说明:本篇延续如何克隆可刷新的PDB(Refreshable PDB)一文,进行切换实验。

    具体请参考《克隆可刷新的PDB

    内容总览

    1. 环境概述

    2. 如何刷新PDB

      2.1 连接要刷新PDB所在的根容器

      2.2 关闭要刷新的PDB

      2.3 执行刷新

      2.4 只读模式打开可刷新的PDB(或保留关闭状态) 

    3. 如何切换可刷新PDB

      3.1 检查目标库环境

      3.2 目标库创建用户并授权

      3.3 源库编辑TNS

      3.4 源库创建DBLink

      3.5 源PDB与目标PDB进行切换

    4. ORA-12754 的说明

    1. 环境概述

    具体请参考:如何克隆可刷新的PDB(Refreshable PDB)一文。

    2. 如何刷新PDB

    要刷新一个PDB,前提:该PDB必须是以包含REFRESH MODE MANUAL 或者 REFRESH MODE EVERY minutes 子句克隆出来的PDB。

    2.1 连接要刷新PDB所在的根容器

    SQL> show pdbs
    
        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- --------- ---------- ----------
         2 PDB$SEED      READ ONLY  NO
         3 PDB1          MOUNTED
         4 PDB_REF       READ ONLY  NO
         5 PDB_REFAUTO   MOUNTED

    2.2 关闭要刷新的PDB

    SQL> alter pluggable database pdb_ref close immediate;
    
    Pluggable database altered.

    2.3 执行刷新

    SQL> alter pluggable database pdb_ref refresh;
    
    Pluggable database altered.

    2.4 只读模式打开可刷新的PDB(或保留关闭状态) 

    SQL> alter pluggable database pdb_ref open read only;
    
    Pluggable database altered.

    3. 如何切换可刷新PDB

    可以切换源PDB可刷新PDB的身份角色。

    需要注意的是

    • 切换命令必须在源PDB中执行(ALTER PLUGGABLE DATABASE ... SWITCHOVER);
    • 源库和可刷新库不在同一个CDB中时,两个CDB中DBLink指定的用户和密码必须完全一致;
    • DBLink中的字符串必须指向PDB所在的根容器中。

    3.1 检查目标库环境

    [oracle@erp ~]$ rlwrap sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 31 21:10:03 2019
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.3.0.0.0
    
    SQL> show pdbs
    
        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- --------- ---------- ----------
         2 PDB$SEED      READ ONLY  NO
         3 PDB1          MOUNTED
         4 PDB_REF       READ ONLY  NO
         5 PDB_REFAUTO   MOUNTED

    3.2 目标库创建用户并授权

    注意和源库一致

    SQL> create user c##u1 identified by oracle;
    
    User created.
    
    SQL> grant create session,create pluggable database,sysoper to c##u1 container=all;
    
    Grant succeeded.

    3.3 源库编辑TNS

    CDB1 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = CDB1)
        )
      )

    3.4 源库创建DBLink

    SQL> create database link cdb1_dblink connect to c##u1 identified by oracle using 'CDB1';
    
    Database link created.
    
    SQL> select * from tab@cdb1_dblink;
    
    no rows selected

    3.5 源PDB与目标PDB进行切换

    切换前,看下源PDB的状态

    SQL> show pdbs
    
        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- --------- ---------- ----------
         3 ERP1          READ WRITE NO   <--- STATUS:READ WRITE

    切换前,看下目标PDB的状态

    SQL> show pdbs
    
        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- --------- ---------- ----------
         2 PDB$SEED      READ ONLY  NO
         3 PDB1          MOUNTED
         4 PDB_REF       READ ONLY  NO    <--- STATUS:READ ONLY 只读
         5 PDB_REFAUTO   MOUNTED

    源数据库ERP1中执行切换命令

    SQL> alter session set container=erp1;
    
    Session altered.
    
    SQL> show pdbs
    
        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- --------- ---------- ----------
         3 ERP1          READ WRITE NO
    
    SQL
    > alter pluggable database refresh mode manual from pdb_ref@cdb1_dblink switchover; Pluggable database altered.

    切换后,看下源PDB状态

    SQL> show pdbs
    
        CON_ID CON_NAME   OPEN MODE  RESTRICTED
    ---------- ---------- ---------- ----------
         3 ERP1           MOUNTED   <--- 注意:由切换前的读写状态,变为了关闭状态(源库ERP1变为可刷新PDB)

    切换后,看下目标PDB状态

    SQL> show pdbs
    
        CON_ID CON_NAME   OPEN MODE  RESTRICTED
    ---------- ---------- ---------- ----------
         2 PDB$SEED       READ ONLY  NO
         3 PDB1           MOUNTED
         4 PDB_REF        READ WRITE NO  <--- 注意:由切换前的只读状态,变为了读写状态(目标PDB变为源PDB)
         5 PDB_REFAUTO    MOUNTED

    最后以只读模式打开可刷新PDB - ERP1

    SQL> alter pluggable database erp1 open read only;
    
    Pluggable database altered.
    
    SQL> show pdbs
    
        CON_ID CON_NAME   OPEN MODE  RESTRICTED
    ---------- ---------- ---------- ----------
         3 ERP1           READ ONLY  NO

    4. ORA-12754 的说明

    如果环境是非Oracle Cloud使用,在执行 ALTER PLUGGABLE DATABASE refresh_mode FROM clonepdb@dblink SWITCHOVER; 命令时,将提示错误:

    ERROR at line 1:
    ORA-12754: Feature PDB REFRESH SWITCHOVER is disabled due to missing capability

    因为功能受到限制,作为学习测试使用,您可以自行通过某些方法进行解决,但请勿侵犯Oracle软件版权。

  • 相关阅读:
    css实现文字相对于图片垂直居中
    node能做的性能优化
    vue.config.js中vue的配置
    react/vue项目腾讯云/阿里云服务器linux部署
    taro项目结构分析和坑
    vscode自动编译less
    css彩色字体
    微信小程序文件上传
    小程序html解析
    小程序表单
  • 原文地址:https://www.cnblogs.com/askscuti/p/11432599.html
Copyright © 2020-2023  润新知