基于版本: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软件版权。

番外:可刷新PDB的管理操作(如何切换PDB Switching Over)的更多相关文章

  1. oracle12.2 CDB PDB基本管理操作

    容器间切换 切换到对应的PDBSSQL> alter session set container=pdb1;Session altered.SQL> alter database open ...

  2. 番外篇--Moddule Zero多租户管理

    番外篇--Moddule Zero多租户管理 2.1.1 关于多租户 强烈建议阅读这个文件前阅读多租户文档. 2.1.2 启用多租户 ASP.NET Boilerplate和module-zero可以 ...

  3. 《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)

    1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,于是写了这一篇文章,另外也是 ...

  4. 《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)

    1.简介 前边几篇文章是宏哥自己在本地弄了一个单选和多选的demo,然后又找了网上相关联的例子给小伙伴或童鞋们演示了一下如何自动化测试,这一篇宏哥在网上找了一个问卷调查,给小伙伴或童鞋们来演示一下.上 ...

  5. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  7. Opengl_入门学习分享和记录_番外篇01(MacOS上如何在Xcode 开始编辑OpenGL)

    写在前面的废话: 哈哈 ,我可真是勤勉呢,今天又来更新了,这篇文章需要大家接着昨天的番外篇00一起食用! 正文开始: 话不多说,先看代码. 这里主要全是使用的glfwwindowhint 这个函数,他 ...

  8. 智能家居实践(番外篇)—— 接入 HomeKit 实现用 Siri 控制家电

    转载:智能家居实践(番外篇)—— 接入 HomeKit 实现用 Siri 控制家电 前面我写了一个系列共三篇的智能家居实践,用的是 Amazon Echo 实现语音控制,但是 Amazon Echo ...

  9. 同步IO与一部IO、IO多路复用(番外篇)select、poll、epoll三者的区别;blocking和non-blocking的区别 synchronous IO和asynchronous IO的区别

    Python之路,Day9 , IO多路复用(番外篇)   同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. ...

随机推荐

  1. vuex学习详细解(主页目录

    学习vuex过程中,通过 vue-cli命令来配置和使用vuex笔记整理 vue-cli中配置vuex流程和注意事项 vuex目录配置 vuex的states.js vuex的getters.js v ...

  2. linux文件、文件夹操作

    1. pwd   查看当前所在的路径 2. ls   显示文件列表 ls -l   显示文件列表以及详情 ls -la   显示所有文件列表以及详情(包含隐藏文件) 注意:ls -l 相当于ll 例如 ...

  3. 刷题84. Largest Rectangle in Histogram

    一.题目说明 题目84. Largest Rectangle in Histogram,给定n个非负整数(每个柱子宽度为1)形成柱状图,求该图的最大面积.题目难度是Hard! 二.我的解答 这是一个 ...

  4. 记录 Spine骨骼动画导入unity 步骤[unity3d 4.6.6版本 2d动画]

    1:准备好unity使用Spine所需要的运行库,可到如下地址 https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine ...

  5. .NET CORE(C#) WPF亚克力窗体

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF亚克力窗体 阅读导航 本文背景 代码实现 本文参考 源码 1 ...

  6. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)

    oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...

  7. python类详细说明、常用内置方法和self的作用

    一.类的定义 在Python中,一切皆对象,即便是类本身,也是一种type类型的特殊对象. class Person: def __init__(self, name, age): self.name ...

  8. python神器pycharm的安装

    1.下载PyCharm 官网下载:http://www.jetbrains.com/pycharm/download/#section=windows百度网盘下载:https://pan.baidu. ...

  9. 【MVC】Scripts.Render的用法

    一.配置BundleConfig.cs文件 1.首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件2.BundleConfig就是一个微软新加的 一个打包 ...

  10. EasyUI笔记(四)菜单和按钮

    本系列只列出一些常用的属性.事件或方法,具体完整知识请查看API文档 Menu(菜单) 菜单组件通常用于快捷菜单.他是构建其他菜单组件的必备基础组件.比如:menubutton和splitbutton ...