80-Oracle 19c PDB dmp数据泵导入-实操

上一期79-Oracle 19c PDB下-建表空间-用户-赋权-验证-基本操作-优快云博客

在19C pdb上新建了用户和赋权,现在需要将dmp文件导入,进行生产环境部署。

1.1 导入数据

数据库导出的DMP文件如下:

1.1.1  导入newods.sql文件(登录newods用户)--按照生产要求提前导入sql,

如果仅导入dmp,无需此步骤。

1. 使用PL/SQL软件,文件->新建->命令窗口,打开命令窗口。

2. 将提供的《newods.sql》文件的内容,全部复制到命令窗口的编辑器重,然后点击执行按钮。 

1.1.2导入etl_mgr.dmp文件

现场为19c数据库,如果是11g数据库导入后缀是11g的dmp文件即可;

采用数据泵的形式导入dmp文件,首先在数据库服务其上创建directory目录,以数据库服务器为windows服务器为例,如果是linux数据库服务器, 注意directory的物理路径写法.

使用SQL: select * from all_directories; 查看现有directory的实际物理路径作为参考;

select * from all_directories;

   OWNER              DIRECTORY_NAME                                                          DIRECTORY_PATH    ORIGIN_CON_ID
________ ___________________________ _______________________________________________________________________ ________________
SYS      DBMS_OPTIM_LOGDIR           /u01/app/oracle/product/19.3.0/db/cfgtoollogs                                          1
SYS      DBMS_OPTIM_ADMINDIR         /u01/app/oracle/product/19.3.0/db/rdbms/admin                                          1
SYS      SDO_DIR_WORK                                                                                                       1
SYS      SDO_DIR_ADMIN               /u01/app/oracle/product/19.3.0/db/md/admin                                             1
SYS      XMLDIR                      /u01/app/oracle/product/19.3.0/db/rdbms/xml                                            1
SYS      XSDDIR                      /u01/app/oracle/product/19.3.0/db/rdbms/xml/schema                                     1
SYS      OPATCH_INST_DIR             /u01/app/oracle/product/19.3.0/db/OPatch                                               1
SYS      ORACLE_OCM_CONFIG_DIR2      /u01/app/oracle/product/19.3.0/db/ccr/state                                            1
SYS      ORACLE_BASE                 /u01/app/oracle                                                                        1
SYS      ORACLE_HOME                 /u01/app/oracle/product/19.3.0/db                                                      1
SYS      ORACLE_OCM_CONFIG_DIR       /u01/app/oracle/product/19.3.0/db/ccr/state                                            1
SYS      DATA_PUMP_DIR               /u01/app/oracle/admin/HBICDB/dpdump/383C85C956F239E2E063BD00060A05F5                   1
SYS      OPATCH_SCRIPT_DIR           /u01/app/oracle/product/19.3.0/db/QOpatch                                              1
SYS      OPATCH_LOG_DIR              /u01/app/oracle/product/19.3.0/db/rdbms/log                                            1
SYS      JAVA$JOX$CUJS$DIRECTORY$    /u01/app/oracle/product/19.3.0/db/javavm/admin/                                        1

15 rows selected.

1. 在数据库服务器创建数据库需要的PUMP_DIR;

linux系统注意创建好文件或目录之后,使用chmod 把文件夹和文件的权限允许写入,否则导入dmp时会报与权限有关的错误;

chmod +x 383C85C956F239E2E063BD00060A05F5
[oracle@HBIDB-189:/u01/app/oracle/admin/HBICDB/dpdump]$ ls -lrht
total 4.0K
-rw-r-----. 1 oracle oinstall 159 Jun 23 19:18 dp.log
drwxr-x---. 2 oracle oinstall   6 Jun 23 19:18 383C528C153827DFE063BD00060AE0B5
drwxr-x---. 2 oracle oinstall   6 Jun 23 19:29 383C85C956F239E2E063BD00060A05F5
[oracle@HBIDB-189:/u01/app/oracle/admin/HBICDB/dpdump]$

 2. 将dmp文件传入该文件夹中;

[root@HBIDB-189:/u01/app/oracle/admin/HBICDB/dpdump]# ll
total 173264
drwxr-x---. 2 oracle oinstall         6 Jun 23 19:18 383C528C153827DFE063BD00060AE0B5
drwxr-x---. 2 oracle oinstall         6 Jun 25 13:18 383C85C956F239E2E063BD00060A05F5
-rw-r-----. 1 oracle oinstall       159 Jun 23 19:18 dp.log
-rwxr-xr-x  1 root   root     149671936 Jun 25 13:15 etl_mgr_19c.DMP
-rwxr-xr-x  1 root   root      27746304 Jun 25 13:15 newbi_19c.DMP
[root@HBIDB-189:/u01/app/oracle/admin/HBICDB/dpdump]#

 

3. sqlplus登录system用户,执行创建directory语句, 指向物理路径/u01/app/oracle/admin/HBICDB/dpdump,并授权给etl_mgr用户, newbi用户读写权限;

--创建名为bi_dump的directory,并指向物理路径/u01/app/oracle/admin/HBICDB/dpdump
create directory bi_dump as '/u01/app/oracle/admin/HBICDB/dpdump';
--授权读写权限给etl_mgr, newbi用户
grant read,write on directory bi_dump to etl_mgr;
grant read,write on directory bi_dump to newbi;
--
[root@HBIDB-189:/u01/app/oracle/admin/HBICDB/dpdump]# su - oracle
[oracle@HBIDB-189:/home/oracle]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 25 13:21:37 2025
Version 19.24.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.24.0.0.0

SYS@HBICDB SQL> alter session set container=PDBHBI;

Session altered.

SYS@HBICDB SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 PDBHBI                         READ WRITE NO
SYS@HBICDB SQL> create directory bi_dump as '/u01/app/oracle/admin/HBICDB/dpdump';

Directory created.

SYS@HBICDB SQL> grant read,write on directory bi_dump to etl_mgr;
grant read,write on directory bi_dump to newbi;
Grant succeeded.

SYS@HBICDB SQL>

Grant succeeded.

4. 在系统的命令行操作窗口,执行一下命令:

impdp  BI数据库用户名/密码@数据库服务器IP:端口号/数据库实例名  directory=bi_dump dumpfile=ETL_MGR_19C.DMP schemas=ETL_MGR

例如:bi数据库的用户名为system,密码为root,ip为10.10.10.10,端口为1521, 数据库实例为orcl,则导入语句为:

impdp system/oracle@10.6.0.189:1521/PDBHBI directory=bi_dump dumpfile=etl_mgr_19c.DMP schemas=ETL_MGR
[oracle@HBIDB-189:/home/oracle]$ impdp system/oracle@10.6.0.189:1521/PDBHBI directory=bi_dump dumpfile=etl_mgr_19c.DMP schemas=ETL_MGR

Import: Release 19.0.0.0.0 - Production on Wed Jun 25 13:24:55 2025
Version 19.24.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/********@10.6.0.189:1521/PDBHBI directory=bi_dump dumpfile=etl_mgr_19c.DMP schemas=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
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "ETL_MGR"."UDE_TASK_COMPLEMENT_NOTES"       3.996 MB   31535 rows
. . imported "ETL_MGR"."USER_TB_PURVIEW"                 5.539 KB       3 rows
……………………
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/TABLE/POST_INSTANCE/PROCACT_INSTANCE
Processing object type SCHEMA_EXPORT/TABLE/POST_INSTANCE/PROCDEPOBJ
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
ORA-39082: Object type PACKAGE BODY:"ETL_MGR"."KETTLE_MGR" created with compilation warnings

ORA-39082: Object type PACKAGE BODY:"ETL_MGR"."TASK_MGR" created with compilation warnings

Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 3 error(s) at Wed Jun 25 13:26:16 2025 elapsed 0 00:01:21
[oracle@HBIDB-189:/home/oracle]$

注意:数据库版本要对应,否则导入不成功;以下是现场生产需要,如果仅为导入DMP不需此步骤。

导入成功后,在etl_mgr用户下执行赋权限语句,使newbi可以访问etl_mgr下的函数:

grant execute on record_task_state to newbi;

grant execute on record_error_log to newbi;

1.1.3 导入newbi.dmp文件

上面的的步骤,导入newbi对应的dmp文件

impdp  BI数据库用户名/密码@数据库服务器IP:端口号/数据库实例名  directory=bi_dump dumpfile=NEWBI_19C.DMP schemas=NEWBI

impdp system/oracle@10.6.0.189:1521/PDBHBI directory=bi_dump dumpfile=newbi_19c.DMP schemas=NEWBI

如果出现需要第二次导入的情况需要覆盖

impdp system/oracle@10.6.0.189:1521/PDBHBI \
  directory=bi_dump \
  dumpfile=newbi_19c.DMP \
  schemas=NEWBI \
  table_exists_action=replace \
  include=grant
  --
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
ORA-31655: no data or metadata objects selected for job
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/********@10.6.0.189:1521/PDBHBI directory=bi_dump dumpfile=newbi_19c.DMP schemas=NEWBI table_exists_action=replace include=grant
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully completed at Wed Jun 25 13:42:21 2025 elapsed 0 00:00:04

1.2 设置密码永不过期(按照实际业务需求)

重要说明:对于现场的数据库使用情况,既要符合安全检测又要适合业务将数据库的密码设定为永不过期

1. Oracle数据库安装完成后,默认密码的有限期为180天,可使用如下命令查看。

select t.* from dba_profiles t where t.profile = 'DEFAULT' and t.resource_name = 'PASSWORD_LIFE_TIME';

   PROFILE         RESOURCE_NAME    RESOURCE_TYPE        LIMIT    COMMON    INHERITED    IMPLICIT
__________ _____________________ ________________ ____________ _________ ____________ ___________
DEFAULT    PASSWORD_LIFE_TIME    PASSWORD         UNLIMITED    NO        NO           NO

2. 使用命令,修改密码永不过期

  alter profile default limit password_life_time unlimited;

3. 查看用户、状态、密码过期时间等

select t.username, t.account_status, t.expiry_date, t.profile from dba_users t;       
select t.username, t.account_status, t.expiry_date, t.profile from dba_users t;

                 USERNAME      ACCOUNT_STATUS    EXPIRY_DATE    PROFILE
_________________________ ___________________ ______________ __________
SYS                       OPEN                               DEFAULT
SYSTEM                    OPEN                               DEFAULT
XS$NULL                   EXPIRED & LOCKED                   DEFAULT
………………
SYSDG                     LOCKED                             DEFAULT
ORDSYS                    LOCKED                             DEFAULT
NEWBI                     OPEN                               DEFAULT
ETL_MGR                   OPEN                               DEFAULT
NEWODS                    OPEN                               DEFAULT

39 rows selected.

4. 如果现场不允许进行密码永不过期操作,经过180天后遇到密码过期的情况,可使用命令将HBI用到的用户密码恢复。

alter user etl_mgr identified by etl_mgr;
alter user newbi identified by softnewbi;
alter user newods identified by softnewods;
alter user dxp identified by dxp;
......

1.3 常见问题举例解决办法

  1. 常见问题1:对表空间无权限
IMP-00058: 遇到 ORACLE 错误 1950
ORA-01950: 对表空间 'BIDATA' 无权限
  解决办法:
  执行下GRANT unlimited tablespace TO etl_mgr
<think>好的,我需要帮助用户解决在Oracle 19c中导入DMP文件的问题。首先,用户提到之前尝试使用imp命令失败,后来得到建议使用impdp,但具体步骤可能不太清楚。根据提供的引用内容,用户需要详细的步骤教程。 首先,我应该回顾用户提供的引用资料。引用[1]提到使用impdp而不是imp,引用[2]给出了impdp的命令示例,而引用[3]提到了创建directory的步骤。需要将这些信息整合成一个连贯的流程。 接下来,用户可能遇到的问题包括创建目录、授权、处理PDB/CDB环境等。Oracle 19c默认使用多租户架构,可能需要指定PDB,这也是用户之前可能忽略的地方。引用[3]中的directory路径可能是一个例子,用户需要根据自己的环境调整。 然后,我需要确保步骤清晰:先创建表空间和用户,授权,创建目录对象,处理PDB(如果需要),再执行impdp命令。还要注意目录的权限问题,比如目录路径的读写权限和Oracle进程的访问权限。 可能用户遇到的错误包括权限不足、目录不存在或路径错误,或者没有正确指定PDB。需要提醒用户检查这些点,并提供验证导入成功的方法,比如查询表或日志。 最后,生成相关问题时要围绕常见问题展开,比如imp和impdp的区别、表空间错误处理、PDB相关的问题等,帮助用户进一步理解可能遇到的挑战。</think>以下是Oracle 19c导入dmp文件的详细步骤指南(基于官方文档和实践经验): ### 一、准备工作 1. **创建表空间和用户**(需sysdba权限) ```sql CREATE TABLESPACE users DATAFILE '/u01/app/oracle/oradata/ORCLCDB/users01.dbf' SIZE 500M; CREATE USER test_user IDENTIFIED BY "Password123" DEFAULT TABLESPACE users; GRANT CONNECT, RESOURCE, DBA TO test_user; ``` 2. **创建目录对象**(需预先创建物理目录) ```sql CREATE OR REPLACE DIRECTORY dpdata_dir AS '/oracle_dump'; -- 替换为实际路径[^3] GRANT READ, WRITE ON DIRECTORY dpdata_dir TO test_user; ``` ### 二、PDB环境处理(适用于CDB架构) ```sql ALTER SESSION SET CONTAINER=ORCLPDB1; -- 切换至目标PDB ``` ### 三、执行导入命令 ```bash impdp test_user/Password123@ORCLPDB1 \ directory=dpdata_dir \ dumpfile=YOUR_DUMPFILE.dmp \ logfile=impdp.log \ remap_schema=SOURCE_USER:test_user \ # 如果需要用户映射 remap_tablespace=SOURCE_TBS:users \ # 如果需要表空间映射 table_exists_action=replace ``` *参数说明:* - `directory`:指向预先创建的目录对象 - `remap_schema`:当导出用户与导入用户不同时使用 - `table_exists_action`:定义表存在时的处理方式(replace/append/skip/truncate) ### 四、验证导入结果 ```sql SELECT table_name FROM all_tables WHERE owner='TEST_USER'; ``` ### 常见问题解决 1. **ORA-39002错误**:检查目录路径权限,确保oracle用户有读写权限 2. **字符集不一致**:可通过`NLS_LANG`环境变量设置匹配的字符集 3. **版本兼容性**:低版本导出文件导入高版本时需确认兼容性 [^1]: 注意imp与impdp的区别,impdp是数据泵工具,支持并行操作和更细粒度的控制 [^2]: 导入命令需要指定正确的服务名(包含PDB名称) : 目录路径需同时存在于操作系统和Oracle目录对象中
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值