Oracle 19c 创建表空间、用户、导入dmp文件等

Oracle19c数据库当前环境

基本情况

已经安装好了Oracle19c数据库,并创建了多个实例,分配给我操作的实例名为tssh(注意大小写)。

1、切换实例

export ORACLE_SID=tssh

最开始没有注意用了大写,在后面创建表空间时,直接报错

ORA-01034: ORACLE not available

实例名修改用小写tssh后,问题解决

2、dba登录

sqlplus / as sysdba

3、切换容器到TSSHPDB

为啥要切换到PDB容器,容器是什么,不切换会怎么样,可见【oracle】Oracle19c的CDB和PDB新特性

alter session set container=tsshpdb;

查询当前CDB容器

show con_name

查询PDB数据库名称

select name,open_mode from v$pdbs;

操作步骤

1、创建表空间

明确表空间目录为/data/app/oracle/oradata/实例名称/表空间名称_01.dbf,分配给我创建的表空间名为TSSH_15_DATA_MIN*

  • 创建表空间

CREATE TABLESPACE TSSH_15_DATA_MIN DATAFILE
'/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_01.dbf' SIZE 4096M autoextend on;

需要确保“/data/app/oracle/oradata/实例名称”路径存在

-增加表空间数据文件
ALTER TABLESPACE TSSH_15_DATA_MIN ADD DATAFILE '/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_02.dbf' SIZE 1024M AUTOEXTEND ON NEXT 100M;

ALTER TABLESPACE TSSH_15_DATA_MIN ADD DATAFILE '/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_PDB_16.dbf' SIZE 1024M AUTOEXTEND ON NEXT 100M;

create pluggable database pdb1 admin user pdb1 identified by pdb1 file_name_convert=(‘E:\app\administrator\oradata\ORCL\pdbseed’,‘E:\app\administrator\oradata\ORCL\pdb1’);

--删除表空间数据文件
ALTER TABLESPACE USERS DROP DATAFILE '/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_02.dbf'

  • 删除表空间

drop tablespace TSSH_15_DATA_MIN including contents and datafiles

2、创建用户并授权

创建的用户名为tssh,密码可做修改,使用的命名空间为上述所建的TSSH_15_DATA_MIN

create user tssh identified by "XXXXX" default tablespace TSSH_15_DATA_MIN temporary tablespace TEMP ;

创建用户时会报错ORA-65096:公用用户名或角色名无效,此时可见【oracle】Oracle19c的CDB和PDB新特性
授权用户

GRANT RESOURCE,CONNECT TO tssh;
GRANT SELECT ANY DICTIONARY,SELECT ANY TABLE,UNLIMITED TABLESPACE,CREATE DATABASE LINK,CREATE SEQUENCE,CREATE MATERIALIZED VIEW,CREATE VIEW TO tssh;
GRANT IMP_FULL_DATABASE,EXP_FULL_DATABASE TO tssh;
GRANT create public database link to tssh;

删除用户

drop user tssh cascade;

3、创建导出目录

创建导出目录

create directory expdir as '/home/oracle/12328/expdir';

导出目录

select * from dba_directories;

授权用户

grant read,write on directory expdir to tssh;

<think>好的,我现在需要帮助用户找到在Oracle 19c中进行全量导入DMP文件的方法。首先,我需要回忆一下Oracle数据导入导出工具。用户提到了DMP文件,这通常是使用Data Pump工具生成的,也就是expdp和impdp命令。所以全量导入应该用impdp。 接下来,我得确认用户的需求是全量导入,也就是导入整个数据库还是某个用户的全部数据。根据引用[3],里面提到了使用impdb命令,这可能是指impdp,可能是个笔误。正确的命令应该是impdp。引用[3]中的例子是:impdb 账号/密码 DIRECTORY=mydata备份路径 DUMPFILE=full.dmp schemas=用户,这里应该是impdp,且需要指定目录对象。 然后,用户需要的是全量导入,可能需要使用FULL参数。不过根据引用[3],使用的是schemas参数,这可能是指按用户导入。因此,可能需要确认用户的需求是导入整个数据库还是特定用户。如果是全库导入,可能需要使用FULL=YES,且需要有足够的权限,比如DBA角色。 另外,需要确保目录对象正确。在Oracle中,DIRECTORY是数据库对象,需要提前创建。例如,引用[3]中的DIRECTORY=mydata备份路径,这里的mydata应该是一个已经创建的目录对象,指向服务器上的物理路径。 权限方面,执行impdp的用户需要具有IMP_FULL_DATABASE角色,特别是全库导入的时候。如果是导入特定用户数据,可能需要相应的权限。此外,备份文件要放在目录对象对应的操作系统路径下,Oracle用户有读写权限。 可能的步骤包括:1. 创建目录对象(如果不存在);2. 将DMP文件放到目录对应的路径;3. 使用impdp命令,指定FULL=YES或者SCHEMAS参数;4. 处理可能的兼容性问题,比如从低版本导入到高版本,通常可行,但需要注意字符集等设置。 用户提供的引用中,引用[2]提到从11g导入19c,可能涉及版本兼容性,但Data Pump通常处理得比较好,只要导出时使用兼容版本。另外,引用[3]中的本地备份示例使用了schemas参数,这可能适用于用户级别的导入,而全库可能需要FULL参数。 需要提醒用户检查DMP文件的导出方式,如果是用expdp导出的全库,则导入时用FULL=YES。同时,确保目标数据库表空间足够,用户存在或使用remap_schema等参数处理用户映射问题。 最后,整理步骤,包括命令示例,注意事项如权限、目录设置、版本兼容性,以及可能的错误处理,如字符集不匹配或对象已存在的情况。</think>在Oracle 19c中实现全量DMP文件导入,需通过Data Pump工具(`impdp`)完成。以下是分步操作方法: --- ### 一、准备工作 1. **确认DMP文件来源** - 确保DMP文件由`expdp`工具生成,且Oracle版本兼容(如从低版本导出到19c通常支持)[^2][^3]。 - 检查文件存放路径,例如:`/backup/full.dmp`。 2. **创建目录对象(Directory)** - 使用SQL*Plus登录数据库创建指向物理路径的目录对象: ```sql CREATE DIRECTORY mydata AS '/backup'; GRANT READ, WRITE ON DIRECTORY mydata TO 目标用户; ``` --- ### 二、全量导入操作 #### 方法1:全库导入(需DBA权限) ```bash impdp system/密码 DIRECTORY=mydata DUMPFILE=full.dmp FULL=YES ``` - **参数说明** - `FULL=YES`:导入整个数据库内容 - `LOGFILE=import.log`(可选):记录导入日志 - `REMAP_SCHEMA=原用户:目标用户`(可选):用户映射[^3] #### 方法2:按用户导入(推荐) ```bash impdp 目标用户/密码 DIRECTORY=mydata DUMPFILE=full.dmp SCHEMAS=原用户 ``` --- ### 三、关键注意事项 1. **权限要求** - 执行用户需具备`IMP_FULL_DATABASE`角色(全库导入)或对应用户权限。 2. **兼容性与字符集** - 若DMP文件来自低版本(如11g),Oracle 19c通常自动兼容,但需保证字符集一致[^2]。 3. **空间与冲突处理** - 添加`TABLE_EXISTS_ACTION=REPLACE`覆盖已存在表 - 添加`REMAP_TABLESPACE=原表空间:目标表空间`调整存储位置 --- ### 四、验证导入结果 1. 检查日志文件: ```bash cat /backup/import.log ``` 2. 查询用户对象数量: ```sql SELECT COUNT(*) FROM dba_objects WHERE owner='目标用户'; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值