19c 企业版 PDB 如何迁移至标准版?
[TOC]
一、环境介绍
数据库版本 | CDB名称 | PDB名称 | IP 地址 |
---|---|---|---|
19.3 企业版 | ORCLCDB | ORCLPDB1 | 172.88.0.2 |
19.3 标准版 | ORCLCDB2 | ORCLPDBn | 172.88.0.3 |
二、需求
将19.3 企业版 中的PDB 迁移到 19.3 的标准版中。
三、迁移方式
我们这里是测试环境,细节部分不在描述。
1. 使用数据泵方式
1.1 expdp 导出数据
- 为了方便测试,这里我将用户分开导出。
-- 导出sxc用户
[oracle@ora19c dmp]$ expdp system/oracle@ORCLPDB1 schemas=sxc dumpfile=expdp_sxc.dmp DIRECTORY=dir_exp logfile=expdp_sxc_exp.log
Export: Release 19.0.0.0.0 - Production on Tue Aug 20 10:03:19 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system********@ORCLPDB1 schemas=sxc dumpfile=expdp_sxc.dmp DIRECTORY=dir_exp logfile=expdp_sxc_exp.log
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
. . exported "SXC"."T1" 240.9 KB 8284 rows
. . exported "SXC"."T2" 240.9 KB 8284 rows
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
/home/oracle/dmp/expdp_sxc.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Tue Aug 20 10:04:09 2024 elapsed 0 00:00:45
-- 导出pst用户
[oracle@ora19c dmp]$ expdp system/oracle@ORCLPDB1 schemas=pst dumpfile=expdp_pst.dmp DIRECTORY=dir_exp logfile=expdp_pst_exp.log
Export: Release 19.0.0.0.0 - Production on Tue Aug 20 10:04:15 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system********@ORCLPDB1 schemas=pst dumpfile=expdp_pst.dmp DIRECTORY=dir_exp logfile=expdp_pst_exp.log
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
. . exported "PST"."T3" 240.9 KB 8284 rows
. . exported "PST"."T4" 240.9 KB 8284 rows
. . exported "PST"."PART_TAB_SPLIT":"P1" 4.001 MB 9999 rows
. . exported "PST"."PART_TAB_SPLIT":"P2" 4.030 MB 10000 rows
. . exported "PST"."PART_TAB_SPLIT":"P_MAX" 28.17 MB 70001 rows
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
/home/oracle/dmp/expdp_pst.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Tue Aug 20 10:05:05 2024 elapsed 0 00:00:47
复制
1.2 impdp 导入
-- 拷贝dmp文件到目标环境
[oracle@ora19c dmp]$ scp *.dmp 172.88.0.3:/home/oracle/dmp
oracle@172.88.0.3's password':
expdp_pst.dmp 100% 37MB 62.4MB/s 00:00
expdp_sxc.dmp 100% 844KB 75.4MB/s 00:00
-- 导入SXC用户
[oracle@Standard dmp]$ impdp system/oracle@orclpdb schemas=sxc dumpfile=expdp_sxc.dmp DIRECTORY=dir_exp logfile=impdp_sxc_exp.log
Import: Release 19.0.0.0.0 - Production on Tue Aug 20 10:23:38 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01": system********@orclpdb schemas=sxc dumpfile=expdp_sxc.dmp DIRECTORY=dir_exp logfile=impdp_sxc_exp.log
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "SXC"."T1" 240.9 KB 8284 rows
. . imported "SXC"."T2" 240.9 KB 8284 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully completed at Tue Aug 20 10:25:08 2024 elapsed 0 00:01:24
-- 导入PST用户
[oracle@Standard dmp]$ impdp system/oracle@orclpdb schemas=pst dumpfile=expdp_pst.dmp DIRECTORY=dir_exp logfile=impdp_pst.log
Import: Release 19.0.0.0.0 - Production on Tue Aug 20 10:26:19 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01": system********@orclpdb schemas=pst dumpfile=expdp_pst.dmp DIRECTORY=dir_exp logfile=impdp_pst.log
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39083: Object type TABLE:"PST"."PART_TAB_SPLIT" failed to create with error:
ORA-00439: feature not enabled: Partitioning
Failing sql is:
CREATE TABLE "PST"."PART_TAB_SPLIT" ("ID" NUMBER(*,0), "COL2" NUMBER(*,0), "COL3" NUMBER(*,0), "CONTENTS" VARCHAR2(4000 BYTE)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE( BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" PARTITION BY RANGE ("ID") (PARTITION "P1" VALUES LESS THAN (10000) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" READ WRITE , PARTITION "P2" VALUES LESS THAN (20000) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" READ WRITE , PARTITION "P_MAX" VALUES LESS THAN (MAXVALUE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" READ WRITE )
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "PST"."T3" 240.9 KB 8284 rows
. . imported "PST"."T4" 240.9 KB 8284 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
ORA-39112: Dependent object type INDEX:"PST"."IDX_PART_SPLIT_COL3" skipped, base object type TABLE:"PST"."PART_TAB_SPLIT" creation failed
ORA-39112: Dependent object type INDEX:"PST"."IDX_PART_SPLIT_COL2" skipped, base object type TABLE:"PST"."PART_TAB_SPLIT" creation failed
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 3 error(s) at Tue Aug 20 10:26:53 2024 elapsed 0 00:00:30
复制
结论:我们可以看到sxc用户导入正常,但是pst用户导入报错。
原因分析
从报错信息ORA-00439: feature not enabled: Partitioning 可以看到,原因是标准版中不支持分区表等特性,导致导入过程中,创建分区表失败。
解决办法
- 将分区表建表语句改成普通表,提前在目标环境创建表。
-- 清理用户,提前创建表结构
SQL> drop user pst cascade;
User dropped.
SQL> create user pst identified by pst;
User created.
SQL> grant dba to pst;
Grant succeeded.
SQL> create table pst.part_tab_split (id int,col2 int ,col3 int ,contents varchar2(4000));
Table created.
SQL> create index pst.idx_part_split_col2 on pst.part_tab_split (col2);
Index created.
SQL> create index pst.idx_part_split_col3 on pst.part_tab_split (col3) ;
Index created.
-- 再次导入,加上参数 table_exists_action=append
[oracle@Standard dmp]$ impdp system/oracle@orclpdb schemas=pst dumpfile=expdp_pst.dmp DIRECTORY=dir_exp logfile=impdp_pst.log table_exists_action=append
Import: Release 19.0.0.0.0 - Production on Tue Aug 20 10:31:16 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01": system********@orclpdb schemas=pst dumpfile=expdp_pst.dmp DIRECTORY=dir_exp logfile=impdp_pst.log table_exists_action=append
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"PST" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Table "PST"."PART_TAB_SPLIT" exists. Data will be appended to existing table but all dependent metadata will be skipped due to table_exists_action of append
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "PST"."T3" 240.9 KB 8284 rows
. . imported "PST"."T4" 240.9 KB 8284 rows
. . imported "PST"."PART_TAB_SPLIT":"P_MAX" 28.17 MB 70001 rows
. . imported "PST"."PART_TAB_SPLIT":"P2" 4.030 MB 10000 rows
. . imported "PST"."PART_TAB_SPLIT":"P1" 4.001 MB 9999 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) at Tue Aug 20 10:31:56 2024 elapsed 0 00:00:37
复制
结论:将分区表改成普通表,提前创建到目标端环境后,导入正常。但是如果分区表很多,这种方式较为繁琐,且容易丢失权限、依赖对象等问题。
但从官方文档描述来看,更加推荐使用export / import方法。
参考链接:Introduction to Upgrading Oracle Database
2. 使用dblink克隆 pdb
2.1 源端创建用户(给目标库创建dblink用)
-- CDB下创建
SYS@ORCLCDB> create user c##clone identified by clone container=all;
User created.
SYS@ORCLCDB> grant dba, create pluggable database to c##clone container=all;
Grant succeeded.
复制
2.2 目标端的CDB中创建dblink,连接到pdb
SQL> create public database link LINK_ORCLPDB1 connect to c##clone identified by clone using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.88.0.2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLPDB1)))';
Database link created.
-- 测试dblink
SQL> select name from v$pdbs @LINK_ORCLPDB1;
NAME
--------------------------------------------------------------------------------
ORCLPDB1
复制
2.3 目标端的CDB中远程克隆pdb
-- 我们这里从源端的pdb:orclpdb1 克隆到目标端的 pdb:orclpdb2
[oracle@Standard ~]$ mkdir -p /u01/app/oracle/oradata/ORCLCDB2/orclpdb2
SQL> create pluggable database ORCLPDB2 from orclpdb1@LINK_ORCLPDB1 CREATE_FILE_DEST = '/u01/app/oracle/oradata/ORCLCDB2/orclpdb2';
Pluggable database created.
-- 注意:克隆的PDB处于mount状态,首次打开必须是read write方式,也是默认方式,不可以用read only 模式打开。
SQL> alter pluggable database ORCLPDB2 open read only;
alter pluggable database ORCLPDB2 open read only
*
ERROR at line 1:
ORA-65085: cannot open pluggable database in read-only mode
-- 打开pdb,但存在error,处于受限模式
SQL> alter pluggable database ORCLPDB2 open;
Warning: PDB altered with errors.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
5 ORCLPDB2 READ WRITE YES
复制
原因分析
-- 通过视图pdb_plug_in_violations检查PDB打开的错误的原因
SQL> select name,cause, type, message from pdb_plug_in_violations where status='PENDING'order by time desc;
NAME CAUSE TYPE MESSAGE
---------- ---------------------------------------- --------- ----------------------------------------------------------------------------------------------------
ORCLPDB2 OPTION ERROR Database option XOQ mismatch: PDB installed version 19.0.0.0.0. CDB installed version NULL.
ORCLPDB2 OPTION ERROR Database option SDO mismatch: PDB installed version 19.0.0.0.0. CDB installed version NULL.
ORCLPDB2 OPTION ERROR Database option OLS mismatch: PDB installed version 19.0.0.0.0. CDB installed version NULL.
ORCLPDB2 OPTION ERROR Database option DV mismatch: PDB installed version 19.0.0.0.0. CDB installed version NULL.
ORCLPDB2 OPTION ERROR Database option APS mismatch: PDB installed version 19.0.0.0.0. CDB installed version NULL.
ORCLPDB2 DB Release Edition WARNING PDB is Enterprise Edition (8), but CDB is not Enterprise Edition (4)
ORCLPDB2 Parameter WARNING CDB parameter pga_aggregate_target mismatch: Previous 100M Current 256M
ORCLPDB2 Parameter WARNING CDB parameter processes mismatch: Previous 640 Current 300
8 rows selected.
-- 查询标准版组件状态
SQL> select comp_id, version,status from dba_registry;
COMP_ID VERSION STATUS
------------------------------------------------------------ ----------------------------
CATALOG 19.0.0.0.0 VALID
CATPROC 19.0.0.0.0 VALID
RAC 19.0.0.0.0 OPTION OFF
JAVAVM 19.0.0.0.0 VALID
XML 19.0.0.0.0 VALID
CATJAVA 19.0.0.0.0 VALID
APS 19.0.0.0.0 OPTION OFF
XDB 19.0.0.0.0 VALID
OWM 19.0.0.0.0 VALID
CONTEXT 19.0.0.0.0 VALID
ORDIM 19.0.0.0.0 VALID
SDO 19.0.0.0.0 OPTION OFF
XOQ 19.0.0.0.0 OPTION OFF
OLS 19.0.0.0.0 OPTION OFF
DV 19.0.0.0.0 OPTION OFF
15 rows selected.
-- 对比企业版版组件状态
SYS@ORCLCDB> select comp_id, version,status from dba_registry;
COMP_ID VERSION STATUS
------------------------------ ------------------------------ ------------------
CATALOG 19.0.0.0.0 VALID
CATPROC 19.0.0.0.0 VALID
RAC 19.0.0.0.0 OPTION OFF
JAVAVM 19.0.0.0.0 VALID
XML 19.0.0.0.0 VALID
CATJAVA 19.0.0.0.0 VALID
APS 19.0.0.0.0 VALID
XDB 19.0.0.0.0 VALID
OWM 19.0.0.0.0 VALID
CONTEXT 19.0.0.0.0 VALID
ORDIM 19.0.0.0.0 VALID
SDO 19.0.0.0.0 VALID
XOQ 19.0.0.0.0 VALID
OLS 19.0.0.0.0 VALID
DV 19.0.0.0.0 VALID
15 rows selected.
复制
结论:我们可以看到是标准版和企业版部分组件状态是有差别的,标准版中存在部分组件装固态是OPTION OFF,而企业版中都是VALID状态,两边不匹配,导致克隆的PDB打开存在错误。
针对上面的错误,参考mos文档:
Mismatch errors in cloned PDB in restricted mode (Doc ID 2964459.1)
PDB_PLUG_IN_VIOLATIONS For PDB$SEED Related to Components Mismatch - Cloning DB from EE to SE (Doc ID 2441637.1)
从文档最后可以看到,如果EE 和 SE 安装了相同的组件,EE的PDB 是可以插入到SE中的。那么我们尝试用下面的方式解决。
👉 注意: 本文是测试环境,生产环境千万不要直接尝试,一定要做好备份、测试!!!
解决办法
- 方法1: 在源端PDB删除标准版中的没有的组件
--1) 连接到PDB中删除标准版中没有的组件
SYS@ORCLCDB> alter session set container=ORCLPDB1;
Session altered.
----> Remove OLAP API Doc ID 2908573.1
@?/olap/admin/catnoxoq.sql
----> Deinstall APS - OLAP AW component
@?/olap/admin/catnoaps.sql
----> Remove OLS
alter session set "_oracle_script"=true;
@?/rdbms/admin/catnools.sql --catnools.sql此脚本在12C~19C的数据库版本中没有提供,可以去11.2.0.4的相关目录找到catnools.sql来执行。
alter session set "_oracle_script"=false;
----> Remove DV
@?/rdbms/admin/dvremov.sql --默认不允许在CDB下面执行,这里我修改了脚本了,允许在CDB下面执行,需要关闭recyclebin
----> Remove SDO Doc ID 179472.1
SYS@ORCLCDB> @?/md/admin/semremov.sql
SYS@ORCLCDB> alter session set "_oracle_script"=true;
Session altered.
SYS@ORCLCDB> drop user MDSYS cascade;
User dropped.
SYS@ORCLCDB> alter session set "_oracle_script"=false;
Session altered.
----> Recompile invalids
@?/rdbms/admin/utlrp.sql
-- 再次检查PDB组件,都没有了
SYS@ORCLCDB> select comp_id, version,status from dba_registry where comp_id in ('XOQ','SDO','OLS','DV','APS');
no rows selected
--2) 在目标端再次克隆PDB:没有报错,克隆的pdb正常打开了
SQL> create pluggable database ORCLPDB3 from orclpdb1@LINK_ORCLPDB1 CREATE_FILE_DEST = '/u01/app/oracle/oradata/ORCLCDB2/orclpdb3';
Pluggable database created.
SQL> alter pluggable database ORCLPDB3 open;
Pluggable database altered.
--3) 目标端检查:分区表也正常存在
SQL> alter session set container= ORCLPDB3;
Session altered.
SQL> select owner,table_name,PARTITIONED from dba_tables where owner in ('SXC','PST');
OWNER TABLE_NAME PAR
---------- ------------------------------ ---
SXC T1 NO
SXC T2 NO
PST T3 NO
PST T4 NO
PST PART_TAB_SPLIT YES
--4) 分区表相关操作:可以看到原有的分区表可以正常操作,查询、添加分区等。但是不可以创建新的分区表、也不能在原来的分区表上新建local index
SQL> select count(*) from pst.PART_TAB_SPLIT partition(p1);
COUNT(*)
----------
9999
SQL> alter table pst.part_tab_split SPLIT PARTITION P_MAX at (30000) into (PARTITION p3,PARTITION P_MAX);
Table altered.
SQL> alter index PST.IDX_PART_SPLIT_COL2 rebuild partition P_MAX ;
Index altered.
SQL> create index pst.idx_part_split_col4 on pst.part_tab_split (id,col3) local;
create index pst.idx_part_split_col4 on pst.part_tab_split (id,col3) local
*
ERROR at line 1:
ORA-00439: feature not enabled: Partitioning
SQL> create table part_tab_add (id int,col2 int,col3 int,contents varchar2(4000))
2 partition by range (id)
3 (
4 partition p1 values less than (10000),
5 partition p2 values less than (20000),
6 partition p3 values less than (30000),
partition p4 values less than (40000),
7 8 partition p5 values less than (50000)
)
9 10 ;
create table part_tab_add (id int,col2 int,col3 int,contents varchar2(4000))
*
ERROR at line 1:
ORA-00439: feature not enabled: Partitioning
复制
- 方法2:在目标端PDB删除标准版中的没有的组件
--1) 连接到PDB中删除标准版中没有的组件,删除命令跟方法1中一样
SQL> alter session set container=ORCLPDB2;
Session altered.
SQL> 删除命令跟方法1中一样,过程略。。。
--2) 确认组件已经被删除,但是pdb状态仍然为受限模式
SQL> select comp_id, version,status from dba_registry where comp_id in ('XOQ','SDO','OLS','DV','APS');
no rows selected
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
5 ORCLPDB2 READ WRITE YES
--3) 重启PDB,PDB正常打开,状态也不再是受限模式
SQL> alter pluggable database ORCLPDB2 close immediate;
Pluggable database altered.
SQL> alter pluggable database ORCLPDB2 open;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
5 ORCLPDB2 READ WRITE NO
复制
结论:
1. 通过克隆的方式,可以将企业版的PDB克隆到标准版中,但是对组件状态有一定要求;
2. 克隆的PDB保留了原来企业版特性才有的分区表,并且可以正常添加分区、rebuild 索引等维护操作。但是不能创建新的分区表,也不能在原有的分区表上创建local index。
PS:连接到PDB中删除组件,仅仅删除的是当前PDB的组件,不影响其他的CDB、PDB。
评论

