0
点赞
收藏
分享

微信扫一扫

Oracle 18c 新特性--可刷新PDB的switchover


说明

在 18c 中支持将通过 dblink 创建的可刷新 PDB 进行源 PDB 和克隆 PDB 进行 switchover ,源 PDB 将成为克隆 PDB ,原来的克隆 PDB 将成为源 PDB 。

具体过程

  1. 确认源PDB处于读写模式
    以LEIPDB为源PDB来克隆。

SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 LEIPDB READ WRITE NO

  1. 源CDB中创建公共用户

DROP USER c##lei CASCADE;

CREATE USER c##lei IDENTIFIED BY oracle;

GRANT CREATE SESSION, RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO c##lei CONTAINER=ALL;

GRANT CREATE PLUGGABLE DATABASE TO c##lei CONTAINER=ALL;

GRANT SYSOPER TO c##lei CONTAINER=ALL;

  1. 源PDB中创建测试表

ALTER SESSION SET CONTAINER = leipdb;

CREATE TABLE cndba(id NUMBER);

INSERT INTO cndba VALUES(1);

COMMIT;

SELECT * FROM cndba;
N1
----------
1

  1. 目标CDB中创建公共用户
    源CDB和目标CDB中具有相同的公共用户c##lei。

DROP USER c##lei CASCADE;

CREATE USER c##lei IDENTIFIED BY oracle;

GRANT CREATE SESSION, RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO c##lei CONTAINER=ALL;

GRANT CREATE PLUGGABLE DATABASE TO c##lei CONTAINER=ALL;

GRANT SYSOPER TO c##lei CONTAINER=ALL;

  1. 目标CDB创建DBLINK
    在目标CDB中创建指向源CDB的dblink,用户就用之前创建的c##lei。

配置TNS

LEICDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.179)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = lei)
)
)

创建dblink

CREATE DATABASE LINK leicdb_dblink CONNECT TO c##lei IDENTIFIED BY oracle USING 'leicdb';

验证DBLINK是否正常

SQL> select COUNT(*) from v$version@leicdb_dblink;
COUNT(*)
----------
1

  1. 创建手动刷新的PDB

CREATE PLUGGABLE DATABASE leicdb_pdb FROM leipdb@leicdb_dblink

CREATE_FILE_DEST='/u01/app/oracle/oradata/'

REFRESH MODE MANUAL;

  1. 刷新leicdb_pdb
    刷新之前在目标PDB中插入数据

SQL> INSERT INTO cndba VALUES(2);

SQL> select * from cndba;
ID
----------
1
2

SQL> commit;

刷新PDB

ALTER SESSION SET CONTAINER = leicdb_pdb;

ALTER PLUGGABLE DATABASE REFRESH;

查看新数据是否同步过来

ALTER PLUGGABLE DATABASE leicdb_pdb OPEN READ ONLY;

ALTER SESSION SET CONTAINER = leicdb_pdb;

select * from cndba;

ID
----------
1
2

  1. 源CDB创建DBLINK
    在源CDB中创建指向目标CDB的dblink,用于switchover操作。
    同样,也要配置TNS

LEICDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.178)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = lei)
)
)

创建dblink

CREATE DATABASE LINK leicdb2_dblink CONNECT TO c##lei IDENTIFIED BY oracle USING 'leicdb2';

验证

select COUNT(*) from v$version@leicdb2_dblink;

COUNT(*)
----------
1

  1. SWITCHOVER
    执行切换操作,和DG switchover很相似切换主备。那么leicdb_pdb就是源PDB,而原来的leipdb就是克隆PDB。

ALTER SESSION SET CONTAINER = leipdb;

ALTER PLUGGABLE DATABASE REFRESH MODE MANUAL FROM leicdb_pdb@leicdb2_dblink SWITCHOVER;

至此就完成了可刷新PDB的在线switchover。

更多内容,请查看官方文档:

​​https://docs.oracle.com/en/database/oracle/oracle-database/18/multi/administering-pdbs-with-sql-plus.html#GUID-B505C234-FAF4-4BAB-8B59-59276E0EA128​​


举报

相关推荐

0 条评论