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数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

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账号