Oracle 12.2多租户增强:Refreshable PDB

2024-02-04 13:08

本文主要是介绍Oracle 12.2多租户增强:Refreshable PDB,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

Refreshable PDB,也称为Online Fast Refresh Synchronization。技术上是以PDB Hot Clone为基础的,关于PDB Hot Clone,参见文章:Oracle 12.2多租户增强:PDB Hot Clone。
本实验将基于ORCLCDB中的orclpdb1在目标数据库中ORCLCDB2中建立可刷新的orclpdb2。
源数据库:

SQL> select name from v$database;NAME
---------
ORCLCDBSQL> show pdbs;CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO3 ORCLPDB1                       READ WRITE NO

目标数据库:

SQL> select name from v$database;NAME
---------
ORCLCDB2SQL> show pdbs;CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO

试验环境

在同一主机上有两个CDB: ORCLCDB和ORCLCDB2。ORCLCDB是通过vagrant box创建的,ORCLCDB2是通过dbca创建,如下:

time dbca -silent -createDatabase \-templateName General_Purpose.dbc \-gdbname orclcdb2 -sid orclcdb2 -responseFile NO_VALUE \-characterSet AL32UTF8 \-sysPassword Welcome1 \-systemPassword Welcome1 \-createAsContainerDatabase true \-pdbAdminPassword Welcome1 \-databaseType MULTIPURPOSE \-automaticMemoryManagement false \-totalMemory 2048 \-storageType FS \-datafileDestination "/opt/oracle/oradata" \-redoLogFileSize 50 \-emConfiguration NONE \-ignorePreReqsPrepare for db operation
10% complete
Copying database files
40% complete
Creating and starting Oracle instance
42% complete
46% complete
52% complete
56% complete
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:/opt/oracle/cfgtoollogs/dbca/orclcdb2.
Database Information:
Global Database Name:orclcdb2
System Identifier(SID):orclcdb2
Look at the log file "/opt/oracle/cfgtoollogs/dbca/orclcdb2/orclcdb21.log" for further details.real    19m21.641s
user    0m32.503s
sys     0m4.545s

源数据库ORCLCDB已开启归档,配置克隆用户,启用local undo。在目标数据库中已创建Database Link。具体参见:Oracle 12.2多租户增强:PDB Hot Clone。
另外,Database Link除了创建数据库需要用,后续的同步也需要使用,参见这里:

For a PDB refresh copy to be in sync with its source, redo is accessed from the source PDB over a database link. Sometimes the source PDB or the CDB to which the source PDB belongs is not accessible when the refresh copy needs to be updated. In those cases, if this parameter is set, an attempt will be made to read archive log files from the directory specified by this parameter.

创建Refreshable PDB

使用的是手工刷新,还可以使用定期刷新(例如REFRESH MODE EVERY 120 MINUTES);

SQL> CREATE PLUGGABLE DATABASE orclpdb2 FROM orclpdb1@clone_link FILE_NAME_CONVERT=('ORCLPDB1', 'ORCLPDB2') REFRESH MODE MANUAL;Pluggable database created.
SQL> show pdbs;CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO5 ORCLPDB2                       MOUNTED

Refreshable PDB打开后只能处于read-only状态。

SQL> ALTER PLUGGABLE DATABASE orclpdb2 OPEN READ ONLY;Pluggable database altered.SQL> show pdbs;CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO5 ORCLPDB2                       READ ONLY  NO
SQL> SELECT last_refresh_scn FROM   dba_pdbs WHERE  pdb_name = 'ORCLPDB2';LAST_REFRESH_SCN
----------------3265877

在源数据库制造一些变化:

SQL> alter session set container=orclpdb1;Session altered.SQL> create table t1(a int);Table created.SQL> insert into t1 values(1);1 row created.SQL> commit;Commit complete.

因为是手工刷新,此时在目标数据库看不到数据:

SQL> select * from t1;
select * from t1*
ERROR at line 1:
ORA-00942: table or view does not exist

刷新数据库:

SQL> alter session set container=orclpdb2;Session altered.SQL> show pdbs;CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------5 ORCLPDB2                       READ ONLY  NO
SQL> ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;Pluggable database altered.SQL> ALTER PLUGGABLE DATABASE REFRESH;Pluggable database altered.SQL> ALTER PLUGGABLE DATABASE OPEN READ ONLY;Pluggable database altered.
SQL> SELECT last_refresh_scn FROM   dba_pdbs WHERE  pdb_name = 'ORCLPDB2';LAST_REFRESH_SCN
----------------3268805

此时可以看到数据:

SQL> select * from t1;A
----------1

常用语句

查看刷新设置:

SQL> col pdb_name format a10
SQL> SELECT pdb_id, pdb_name, refresh_mode, refresh_interval FROM   dba_pdbs;PDB_ID PDB_NAME   REFRES REFRESH_INTERVAL
---------- ---------- ------ ----------------5 ORCLPDB2   MANUALSQL> ALTER PLUGGABLE DATABASE orclpdb2 REFRESH MODE EVERY 60 MINUTES;Pluggable database altered.SQL> SELECT pdb_id, pdb_name, refresh_mode, refresh_interval FROM   dba_pdbs;PDB_ID PDB_NAME   REFRES REFRESH_INTERVAL
---------- ---------- ------ ----------------5 ORCLPDB2   AUTO                 60

改为不可刷新状态:

SQL> ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;Pluggable database altered.
SQL> alter session set container=cdb$root;Session altered.SQL> ALTER PLUGGABLE DATABASE orclpdb2 REFRESH MODE NONE;Pluggable database altered.SQL> ALTER PLUGGABLE DATABASE orclpdb2 OPEN;Pluggable database altered.SQL> SELECT pdb_id, pdb_name, refresh_mode, refresh_interval FROM   dba_pdbs;PDB_ID PDB_NAME   REFRES REFRESH_INTERVAL
---------- ---------- ------ ----------------2 PDB$SEED   NONE5 ORCLPDB2   NONE

结论

Refreshable PDB是基于Hot Clone的,不同的是,Hot Clone是一次性的,目标可写。而Refreshable PDB是持续性的,目标只读,可以基于Refreshable PDB再建立可写的PDB。
Refreshable PDB不依赖于共享存储,而是依赖于Database Link。

参考

  1. Multitenant : PDB Refresh in Oracle Database 12c Release 2 (12.2)
  2. Oracle Multitenant Database Provisioning and Relocation Services
  3. REMOTE_RECOVERY_FILE_DEST

这篇关于Oracle 12.2多租户增强:Refreshable PDB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677608

相关文章

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

查询Oracle数据库表是否被锁的实现方式

《查询Oracle数据库表是否被锁的实现方式》本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,... 目录查询oracle数据库表是否被锁1、查询锁表的会话、人员等信息2、根据 object_id查询被

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI