Oracle 19c PDB克隆后出现Warning: PDB altered with errors受限模式处理

在进行一次19c PDB克隆过程中,发现克隆结束,在打开后出现了报错,PDB变成受限模式,以下是分析处理过程

09:25:48 SQL> alter pluggable database test1113 open instances=all;

Warning: PDB altered with errors.

Elapsed: 00:00:28.91
09:26:31 SQL>


SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 MB_UTF                         MOUNTED
         4 TEST1113                       READ WRITE YES
         
报错处理:
源库组件安装信息:

NAME                 CAUSE      TYPE       MESSAGE                                            STATUS
-------------------- ---------- ---------- -------------------------------------------------- ------------------
PDB$SEED             SQL Patch  ERROR      '19.3.0.0.0 Release_Update 1904101227' is installe RESOLVED
                                           d in the CDB but no release updates are installed
                                           in the PDB


目标库组件报错信息:

NAME                 CAUSE      TYPE       MESSAGE                                            STATUS
-------------------- ---------- ---------- -------------------------------------------------- ---------
TEST1113             OPTION     ERROR      Database option DV mismatch: PDB installed version PENDING
                                            19.0.0.0.0. CDB installed version NULL.

TEST1113             OPTION     ERROR      Database option OLS mismatch: PDB installed versio PENDING
                                           n 19.0.0.0.0. CDB installed version NULL.

TEST1113             Sync Failu WARNING    Sync PDB failed with ORA-04068 while performing 'D PENDING
                     re                    ROP USER "C##CLONES_HLW"'

TEST1113             Parameter  WARNING    CDB parameter processes mismatch: Previous 10000 C RESOLVED
                                           urrent 12800

TEST1113             Parameter  WARNING    CDB parameter sga_max_size mismatch: Previous 200G RESOLVED
                                            Current 140G

TEST1113             Parameter  WARNING    CDB parameter pga_aggregate_target mismatch: Previ RESOLVED
                                           ous 50G Current 80G

TEST1113             SQL Patch  ERROR      '19.15.0.0.0 Release_Update 2203311254' is install PENDING
                                           ed in the CDB but '19.3.0.0.0 Release_Update 19041
                                           01227' is installed in the PDB

TEST1113             Oracle Opa WARNING    Oracle opatch mismatch: opatch

<think>我们正在处理一个Oracle数据库克隆任务:从11g远程克隆19c的PDB。根据引用[1]:我们可以使用dbms_pdb.describe过程来生成源PDB的元数据描述文件。但注意:11g中没有PDB的概念(因为CDB/PDB是从12c开始引入的),所以11g的数据库是非CDB架构。因此,我们需要先将11g的非CDB数据库转换为PDB,然后才能克隆19c的CDB中。步骤概述:1.在11g数据库中,由于是独立数据库(非CDB),我们需要将其转换为一个可插拔的数据库(PDB)。但是11g本身不支持PDB,所以这一步实际上需要在12c以上的版本中进行转换。因此,可能需要先升级到12c或更高版本,然后再进行转换,或者我们可以使用另一种方法:创建一个新的PDB,并通过数据泵导出导入的方式迁移数据。但是这里要求是“远程克隆”,所以我们需要寻找类似的方法。2.引用[3]提到了在克隆PDB后可能遇到的监听注册问题,所以克隆完成后需要关注监听配置。然而,由于源端是11g(非CDB),我们不能直接使用dbms_pdb包(因为11g没有这个包)。所以我们需要采用不同的方法。根据Oracle的文档,从非CDB迁移到PDB有两种方法:a)使用导出/导入(数据泵)b)使用数据库链接和CREATEPLUGGABLEDATABASE...FROMNON$CDB(这个方法仅在12.2以后支持)由于我们要远程克隆19c,而19c支持12.2的特性,所以我们可以尝试使用第二种方法,但是源端是11g,所以需要先将源端升级到12c以上?不,实际上,我们可以通过创建一个到11g的数据库链接,然后在目标19cCDB中创建一个新的PDB,源是非CDB。但是,注意:CREATEPLUGGABLEDATABASE...FROMNON$CDB这个语句要求源数据库至少是12.1.0.2,并且需要将源数据库置于只读模式并生成一个xml文件。而我们的源是11g,无法满足这个要求。因此,更实际的方法可能是:步骤1:将11g数据库升级到19c,但这样就不是克隆了,而是升级整个数据库。这不一定符合要求。或者,我们可以通过中间步骤:先将11g的数据用数据泵导出,然后在19c的PDB中导入。这种方法虽然不是“克隆”,但可行。但是用户明确要求“远程克隆”,所以我们需要尝试使用远程克隆的方式。重新审视:从Oracle12.2开始,支持远程克隆非CDB数据库(源数据库必须是12c以上,且必须被置为只读,并执行一些操作)。所以11g不能直接作为源。因此,可能的步骤是:1.先将11g数据库升级(或迁移)到12c(非CDB)。2.在12c的数据库中,将其转换为PDB(通过生成xml描述文件,然后在目标CDB中创建)。3.然后,再使用12c的PDB克隆19c(但这样需要两次操作,且第一次是升级到12c)。另一种思路:使用传输表空间(TTS)进行迁移。但TTS要求源端和目标端字符集相同,且版本限制(需要源端的版本等于或低于目标端,11g到19c是可行的,但需要做兼容性检查)。考虑到复杂度,这里给出一个使用数据泵导出导入的步骤(虽然不是克隆,但较为简单且可行):步骤:1.在11g数据库上使用expdp(数据泵导出)导出数据。2.19c的CDB中创建一个新的PDB(比如叫TESTPDB)。3.将导出的数据泵文件传输到19c服务器上(或通过网络直接导入)。4.19c的TESTPDB中使用impdp导入。但是用户要求的是“远程克隆”,而且引用[1]中提到了dbms_pdb.describe,引用[3]提到了克隆PDB后配置监听的问题,所以我们还是尝试寻找克隆的方法。如果我们必须用克隆方法,那么我们必须先将11g升级到12.2以上,然后使用以下步骤:1.将源11g数据库升级到12.2以上(比如19c)成为非CDB数据库。2.在升级后的数据库中,执行:BEGINDBMS_PDB.DESCRIBE(pdb_descr_file=>'/path/to/xml/noncdb.xml');END;/然后关闭数据库。3.在目标19c的CDB中,使用这个xml文件创建新的PDB:CREATEPLUGGABLEDATABASEnewpdbUSING'/path/to/xml/noncdb.xml'COPY...;但是这里需要注意的是,源数据库的数据文件需要可访问(比如通过NFS挂载)。然而,这种方法需要停机,并且需要升级源数据库,对于生产环境可能不可行。因此,综合来看,对于11g到19c的PDB,推荐使用数据泵方式。但如果我们想尝试使用远程克隆(不升级源库),是否有办法?目前Oracle官方没有直接支持远程克隆11g非CDB到19cPDB的方法。结论:由于Oracle11g本身不具备PDB特性,我们无法直接使用远程克隆功能(该功能要求源数据库为12.2以上版本的非CDB或PDB)。因此,我们需要采用其他迁移方法,如数据泵导入导出。详细步骤(数据泵方式):1.在11g数据库上执行导出:expdpsystem/password@11g_sourceFULL=YESdirectory=DATA_PUMP_DIRdumpfile=fulldb.dmplogfile=expdp.log注意:11g可能需要设置兼容性参数,如果19c的字符集与11g不同,还需要注意字符集转换问题。2.19cCDB中创建一个新的PDB(例如:TESTPDB)。CREATEPLUGGABLEDATABASEtestpdbADMINUSERpdbadminIDENTIFIEDBYpassword;ALTERPLUGGABLEDATABASEtestpdbOPEN;3.将导出的dump文件(fulldb.dmp)传输到19c服务器上(如果导出时指定了目录,确保该目录在19c上存在且可用)。4.19c上使用impdp导入到新的PDB:impdpsystem/password@19c_target/testpdbFULL=YESdirectory=DATA_PUMP_DIRdumpfile=fulldb.dmplogfile=impdp.log注意:可能需要使用remap_schema或remap_tablespace等参数进行重新映射。克隆完成后,还需要配置监听,如引用[3]中提到的,确保新的PDB能够动态注册到监听:在PDB中设置LOCAL_LISTENER参数,并修改listener.ora和tnsnames.ora文件。但是,如果用户坚持要使用克隆方法(尽管源是11g不可行),我们可以建议先将源升级到12.2,然后使用克隆,但这个过程非常复杂。因此,根据当前情况,我们推荐使用数据泵方式。相关问题:1.使用数据泵从Oracle11g迁移到19c时需要注意哪些兼容性问题?2.Oracle19c中创建PDB的方法有哪些?3.如何配置监听使得新的PDB能够被远程访问?注意:如果用户有特殊要求必须使用克隆,请用户补充信息。</think> ### Oracle 11g 远程克隆Oracle 19c PDB 步骤指南 由于Oracle 11g是非CDB架构,而Oracle 19c使用CDB/PDB架构,**无法直接远程克隆**。需先通过中间升级转换,以下是完整流程: --- #### **核心步骤** 1. **源库准备 (Oracle 11g)** - 将11g数据库升级至12c或以上版本(因PDB克隆需源端≥12.1) - 生成元数据描述文件(XML): ```sql -- 以只读模式打开源库 STARTUP MOUNT; ALTER DATABASE OPEN READ ONLY; -- 生成描述文件(需Oracle≥12.1) BEGIN DBMS_PDB.DESCRIBE(pdb_descr_file => '/path/to/source.xml'); END; / ``` - 关闭源库 2. **目标库操作 (Oracle 19c CDB)** ```sql -- 创建数据库链接(需源端文件系统可访问) CREATE DATABASE LINK src_link CONNECT TO sys IDENTIFIED BY <password> USING 'source_tns'; -- 创建PDB(远程克隆) CREATE PLUGGABLE DATABASE newpdb FROM <source_db>@src_link FILE_NAME_CONVERT = ('/source/path/', '/target/path/'); ``` 3. **兼容性处理** - 执行PDB兼容性检查: ```sql ALTER PLUGGABLE DATABASE newpdb OPEN UPGRADE; EXEC DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file => '/path/to/source.xml'); ``` - 若不兼容需在PDB运行`noncdb_to_pdb.sql`脚本(需Oracle≥12.2) 4. **监听注册**[^3] ```sql ALTER SESSION SET CONTAINER = newpdb; ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(PORT=1521))'; ``` - 更新`listener.ora`和`tnsnames.ora`添加PDB服务名 --- #### **备选方案(推荐)** 若无法升级源库,使用**数据泵迁移**: ```bash # 源端11g导出 expdp system/pwd FULL=YES DIRECTORY=dpump_dir DUMPFILE=11g_full.dmp # 目标19c创建PDB CREATE PLUGGABLE DATABASE newpdb ADMIN USER admin IDENTIFIED BY pwd; # 目标端导入 impdp system/pwd@newpdb FULL=YES DIRECTORY=dpump_dir DUMPFILE=11g_full.dmp ``` --- #### **注意事项** 1. 源端需开启归档模式[^2] 2. 字符集/字节序必须一致 3. 目标CDB需开启`ENABLE_PLUGGABLE_DATABASE` 4. 克隆过程需停机(对生产影响大) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值