98-Oracle 11g dmp导入19c 19.26 PDB

Oracle 11g DMP文件导入19c PDB01,需要关注字符集、是否包含BIGFILE,源端和目标的兼容度,需要在expdp时候附加参数。

首选方案​:PDB 字符集 = AL32UTF8 + 国家字符集 = AL16UTF16

​优势​:完美兼容 CDB、支持多语言扩展、符合国家标准,长期维护成本低。

​次选方案​:仅当确定无多语言需求时,PDB 可选 ZHS16GBK(国家字符集仍为 AL16UTF16)。

技术先进性推荐AL32UTF8,而现实部署中ZHS16GBK是很多历史遗留、成本与风险权衡的结果。

实操填坑:

  • 勿直接修改 PDB 字符集(ALTER DATABASE CHARACTER SET可能导致数据损坏),最好通过重建迁移。
  • 客户端 NLS_LANG 需与 PDB 字符集一致(如 AL32UTF8 的 PDB 对应 NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

一、环境检查与准备工作

  1. 版本兼容性验证
  • 检查DMP文件导出方式:
    • 若为exp导出,需使用imp导入(不推荐,可能报版本错误)。
    • 若为expdp导出,需用impdp导入(推荐)。
  • 关键脚本​:
-- 查看DMP文件头信息(需在服务器执行),提取前 1MB 数据(避免读取大文件)
dd if=etl_mgr_11g.DMP of=header.dmp bs=1M count= 
strings header.dmp | grep -E "Version|EXPORT|Character set"
--查询直接查询兼容性参数
SELECT name, value AS compatible_version 
FROM v$parameter 
WHERE name = 'compatible';
--CDB-PDB
NAME
--------------------------------------------------------------------------------
COMPATIBLE_VERSION
--------------------------------------------------------------------------------
compatible
19.0.0

--确认核心组件(如Catalog)的版本与compatible参数一致,避免功能冲突
SELECT comp_name, version, status 
FROM dba_registry 
WHERE comp_id = 'CATALOG';
若显示V11.02.00则兼容19c;若为更高版本,需用expdp重导并添加version=11.2.0.1.0参数。

字符集与表空间检查

--确认字符集一致(避免乱码):

SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';

--- 检查表空间是否充足:(建议预留1.5倍DMP文件大小空间)

SELECT tablespace_name, sum(bytes)/1024/1024 AS "Size_MB" 
FROM dba_data_files GROUP BY tablespace_name;

二、文件传输与目录设置

上传DMP文件
  • 将DMP文件上传至19c服务器目录(如/u01/app/oracle/admin/testcdb/dpdump)。
  • ​权限修正​:
chown oracle:oinstall /u01/app/oracle/admin/testcdb/dpdump/etl_mgr_11g.DMP
chmod 660 /u01/app/oracle/admin/testcdb/dpdump/etl_mgr_11g.DMP
--或者
chmod -x /u01/app/oracle/admin/testcdb/dpdump/etl_mgr_11g.DMP
su -oracle
[oracle@OL10:/u01/app/oracle/admin/testcdb/dpdump]$ ll
总计 27396
drwxr-x--- 2 oracle oinstall        6  6月28日 13:30 389C0CA85DCB2115E0630B14170AF1E6
drwxr-x--- 2 oracle oinstall        6  6月28日 13:38 389C33B592EF2924E0630B14170AAE49
-rw-r----- 1 oracle oinstall      160  6月28日 13:30 dp.log
-rw-r--r-- 1 root   root     28049408  6月28日 16:21 etl_mgr_11g.DMP

创建Directory对象 

CREATE OR REPLACE DIRECTORY dp_pdb01_dir AS '/u01/app/oracle/admin/testcdb/dpdump/';
GRANT READ, WRITE ON DIRECTORY dp_pdb01_dir TO system; -- 授权给操作用户
--
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 PDB01                          READ WRITE NO
SQL> CREATE OR REPLACE DIRECTORY dp_pdb01_dir AS '/u01/app/oracle/admin/testcdb/dpdump/';
GRANT READ, WRITE ON DIRECTORY dp_pdb01_dir TO system;

Directory created.
SQL>
Grant succeeded.

三、用户与表空间配置​

创建目标用户

CREATE USER etl_mgr IDENTIFIED BY "Oracle_4U" 
DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
GRANT CONNECT, RESOURCE TO etl_mgr;
--
SQL> CREATE OR REPLACE DIRECTORY dp_pdb01_dir AS '/u01/app/oracle/admin/testcdb/dpdump/';
GRANT READ, WRITE ON DIRECTORY dp_pdb01_dir TO system;
Directory created.
SQL>
Grant succeeded.
SQL> CREATE USER etl_mgr IDENTIFIED BY "Oracle_4U"
    DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
GRANT CONNECT, RESOURCE TO etl_mgr;
User created.
SQL>
Grant succeeded.

​四、执行数据泵导入​

基础导入命令

impdp system/oracle@localhost:1521/PDB01 \
  DIRECTORY=dp_pdb01_dir \
  DUMPFILE=etl_mgr_11g.DMP \
  SCHEMAS=etl_mgr \
  REMAP_SCHEMA=etl_mgr:etl_mgr \


----
  --
Import: Release 19.0.0.0.0 - Production on Sat Jun 28 16:33:12 2025
Version 19.26.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
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
import done in AL32UTF8 character set and AL16UTF16 NCHAR character set
export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
Warning: possible data loss in character set conversions
Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01":  system/********@localhost:1521/PDB01 DIRECTORY=dp_pdb01_dir DUMPFILE=etl_mgr_11g.DMP SCHEMAS=etl_mgr REMAP_SCHEMA=etl_mgr:etl_mgr
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"ETL_MGR" 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/TYPE/TYPE_SPEC
Processing object type SCHEMA_EXPORT/TYPE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE

参数说明 

​参数​

作用​

TABLE_EXISTS_ACTION=REPLACE

覆盖已存在的表(慎用)

VERSION=11.2

兼容低版本导出文件

EXCLUDE=STATISTICS

跳过统计信息(加速导入)

五、常见错误与解决方案

  1. ORA-39142:版本不兼容​​方案​:导出时添加version=11.2.0.1.0
  2. ORA-02374:表空间不足​​方案​:扩展表空间或启用AUTOEXTEND
  3. ORA-00959:表空间不存在​​方案​:按DMP文件中的表空间名重建(参考导出日志)
  4. 字符集冲突​​方案​:强制转换字符集(谨慎) 

附-重建PDB字符集的选择:

--
CREATE PLUGGABLE DATABASE pdb_name 
  ADMIN USER pdbadmin IDENTIFIED BY password
  DEFAULT TABLESPACE users DATAFILE '/path/to/users01.dbf' SIZE 1G
  -- 主字符集(二选一)
  CHARACTER SET = AL32UTF8     -- 推荐多语言场景
  -- CHARACTER SET = ZHS16GBK   -- 仅纯中文场景
  -- 国家字符集(固定选择)
  NATIONAL CHARACTER SET AL16UTF16; 
--验证字符集
-- 在 PDB 中执行
SELECT parameter, value 
FROM nls_database_parameters 
WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
--
 SELECT parameter, value
    FROM nls_database_parameters
    WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

PARAMETER
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_NCHAR_CHARACTERSET
AL16UTF16

NLS_CHARACTERSET
AL32UTF8

AL16UTF16 ​不是​ PDB 的主字符集选项,而是国家字符集,专用于 NCHAR 等数据类型,与主字符集独立共存。

ZHS16GBK 与 AL32UTF8 ​不兼容​:存储越南语“ế”等字符时,ZHS16GBK 会丢失数据(替换为 ?),而 AL32UTF8 可完整存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值