oracle 19c /CDB-PDB/新建用户/dmp导入/单实例内新建库/多服务

小刚给小明一个dmp备份文件,但是不知道里面有什么,想新建一个库来恢复查看一些数据,也不能影响别人正常使用,

SQL> CREATE USER test_schema IDENTIFIED BY test;
            
第 1 行出现错误:
ORA-65096: 公用用户名或角色名无效

ORA-65096 表示你尝试在 CDB(容器数据库)中创建一个不符合命名规则的用户。默认情况下,CDB 中的用户应在 PDB(可插入数据库)中创建

在 Oracle 数据库中,CDB(容器数据库)和 PDB(可插入数据库)的用户命名规则有所不同:
 CDB(容器数据库)命名规则
1. 公用用户(Common Users):以 `C##` 或 `c##` 开头。公用用户存在于所有 PDB 中。例如,`C##ADMIN`。
2. 本地用户(Local Users):只能存在于当前 PDB 中,不能以 `C##` 开头。 
在 CDB 中创建公用用户
  CREATE USER C##test IDENTIFIED BY password;
  
PDB(可插入数据库)命名规则
1. 本地用户(Local Users):在 PDB 中创建的用户,不需要特别的前缀。例如,`test_schema`。
 在 PDB 中创建本地用户:
  ALTER SESSION SET CONTAINER=my_pdb;
  CREATE USER test_schema IDENTIFIED BY password;

ORACLE 12C之前,
一个实例只能与一个数据库相关联,数据库可以被多个实例所加载,
12C引入多租用户环境,
允许一个数据库容器(CDB-Container Database)
承载多个可插拔数据库(PDB-Pluggable Database)
实例与数据库可以是一对多的关系

在这里插入图片描述

那我想在一个新的PDB里新建用户怎么操作呢


-- 1 登录到 CDB 根容器

[root@localhost ~]# sqlplus sys/**** as sysdba
连接到: 
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> SHOW CON_NAME;
CON_NAME
------------------------------
CDB$ROOT

– CDB$ROOT 是容器数据库的根容器
– 查询查看当前的容器 PDB 列表:
SQL> SELECT * FROM DBA_PDBS
.
在这里插入图片描述


-- 2 创建新的 PDB

CREATE PLUGGABLE DATABASE new_pdb
ADMIN USER pdb_admin IDENTIFIED BY password
FILE_NAME_CONVERT = ('/opt/oracle/oradata/ORCLCDB/', '/path/to/new_pdb/')

ORA-65016: 必须指定 FILE_NAME_CONVERT
(‘/old/path/’, ‘/new/path/’)
/new/path/路径需要有权限
替换 new_pdbpdb_adminpassword 为你的新 PDB 名称、管理员用户名及其密码。


-- 3 切换到新 PDB

   ALTER SESSION SET CONTAINER = new_pdb;

CREATE USER test_schema IDENTIFIED BY test;
.
ORA-01109: 数据库未打开
.
检查数据库的状态:
SELECT NAME, OPEN_MODE FROM V$DATABASE;
.
– 如果数据库已挂起 处于 MOUNT 或 NOMOUNT 状态,执行以下命令:
STARTUP MOUNT;
– 然后,打开数据库:
ALTER DATABASE OPEN;


-- 4 对于容器数据库 (CDB),启动 PDB

ALTER PLUGGABLE DATABASE new_pdb OPEN;

在这里插入图片描述


-- 5 创建用户

SQL> CREATE USER test_schema IDENTIFIED BY test;
用户已创建。

-- 6 授权

SQL> GRANT CONNECT, RESOURCE TO test_schema;
授权成功。

SQL> GRANT DBA TO test_schema;
授权成功。

查询数据库中的用户
SELECT * FROM dba_users WHERE username = ‘TEST_SCHEMA’在这里插入图片描述
.
连接到目标 PDB
sqlplus test_schema/test@//10.230.1.12:1521/new_pdb


-- 7 创建备份目录

并且 Oracle 数据库用户有权限访问
mkdir -p /path/to/backup_dir
chown oracle:oracle /path/to/backup_dir
chmod -R 777 /path/to/backup_dir

-- 8 指向路径

Oracle 数据库中创建一个目录对象,指向你刚刚创建的备份目录:
CREATE OR REPLACE DIRECTORY backup_dir AS '/path/to/backup_dir';

-- 9 可选-创建表空间:

如果你需要指定一个特定的表空间来存储这个 schema 的数据,可以创建一个表空间:
CREATE TABLESPACE new_tablespace DATAFILE '/path/to/datafile.dbf' SIZE 100M;

然后,将用户的默认表空间设置为刚创建的表空间:
ALTER USER test_schema DEFAULT TABLESPACE new_tablespace;
修改表空间
ALTER DATABASE DATAFILE '/path/to/new_table_space_file.dbf' RESIZE 500M;
增加表空间
ALTER TABLESPACE NEW_TABLESPACE ADD DATAFILE '/path/to/new_file3.dbf' SIZE 1000M;

dmp导入

impdp 
test_schema/test@//10.230.1.12:1521/new_pdb
directory=BACKUP_DIR 
dumpfile=2024file.dmp 
logfile=import.log 
remap_tablespace=XYZ_DATA:NEW_TABLESPACE
remap_schema=XYZ:test_schema
test_schema/test 用户密码
10.230.1.12 数据库服务器的 IP 地址,`1521`  端口号,
new_pdb 是 PDB_NAME
BACKUP_DIR 数据库目录对象,指向文件系统目录  step 8,Data Pump 将在这里查找 .dmp 文件和生成的日志文件
dumpfile=2024file.dmp  指定数据泵导出的 dump 文件,包含要导入的数据
logfile=import.log 指定了导入过程中生成的日志文件名
remap_tablespace=XYZ_DATA:NEW_TABLESPACE 表空间映射:将源表空间 XYZ_DATA 映射到目标表空间 NEW_TABLESPACE
remap_schema=XYZ:test_schema 模式映射:将源模式 XYZ 映射到目标模式 test_schema

KUPW: ORA-39083: 对象类型 TABLE:“XYZ”.“IMP_MOVE_CLIENT_0722” 创建失败, 出现错误:
ORA-00959: 表空间 ‘XYZ_DATA’ 不存在
.
将源模式 XYZ映射到目标模式 test_schema
remap_tablespace=XYZ_DATA:NEW_TABLESPACE
.
或者创建缺失的表空间
CREATE TABLESPACE XYZ_DATA
DATAFILE ‘/path_to_your_datafile/xyz_data01.dbf’
SIZE 100M AUTOEXTEND ON;

处理对象类型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
ORA-39083: 对象类型 SEQUENCE:“XYZ”.“GX_PROCESS_CLIENT_CLIENTID” 创建失败, 出现错误:
ORA-01917: 用户或角色 ‘’ 不存在
.
导入的数据原本属于不同的 schema,你可以使用 REMAP_SCHEMA 参数将所有对象映射到目标 schema。例,将 XYZ 映射到 test_schema
remap_schema=XYZ:test_schema
.
或者检查用户或角色是否存在
SELECT * FROM DBA_USERS WHERE USERNAME = ‘XYZ’;
SELECT * FROM DBA_ROLES WHERE ROLE = ‘ROLE_NAME’;
如果缺少用户或角色,可以在目标数据库中创建它们
创建用户 XYZ
CREATE USER XYZ IDENTIFIED BY your_password;
GRANT CONNECT, RESOURCE TO XYZ;
创建角色
CREATE ROLE ROLE_NAME;
导入过程中使用的用户具有足够的权限来创建和管理对象。需要授权导入用户
GRANT DBA TO import_user;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值