我想在 oracle 12c 中恢复数据库。我已经为它做了一些事情,但是在导入数据时,我遇到了一些关于 db 中不存在的用户的错误。因为数据库需要一些必须在 oracle 12c 中定义的用户。我为 db 创建了 db 需要的用户,但在 oracle 12 中创建用户系统因会话问题而发生了变化。我不得不将 c## 表达式放在用户名前面,问题仍然存在。我尝试了不同的方法来恢复,但没有导入所有表和数据。我认为这是关于用户问题。我的问题是如何创建与备份数据库用户相同的用户并恢复数据库。
4 回答
根据 OP 通过对我的评论的回答输入的信息:
/ AS SYSDBA
默认情况下将连接到CDB
而不是您的本地PDB
. 有很多方法,但是,到目前为止,您需要首先连接到本地PDB
:
SYS@<pdb service_name> AS SYSDBA
然后执行您的CREATE USER
和其他命令:
CREATE USER HASTANE IDENTIFIED BY HASTANE DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
GRANT DBA TO HASTANE;
IMP HASTANE/HASTANE FILE=c:\VERI.DMP FULL=Y
第一步:创建pdbuser
运行 Sqlplus sys/ as sysdba ,(如果有密码,你应该接下来输入)
运行
alter session set container=pdbDBName---;
(例如:pdborcl)跑
create user test identified by password default tablespace users temporary tablespace temp;
跑
grant pdb_dba to test;
跑
grant dba to test;
第二步:在tns文件中添加pdbname
跑
CMD
运行
tnsping cdbDB
(例如:tnsping orcl)找到 tns 路径并打开 tnsnames.ora 文件(如果不存在,则将其放在当前文件的同一目录中)
添加 pdbDBName 像 cdbDBName(eg:orcl) 见下面的例子
例子:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
pdbORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl)
)
)
第三步:从命令提示符检查 tnsping
跑
CMD
tnsping pdbDB(例如:tnsping pdborcl)
查看 tns 状态。路径详细信息应该没问题。
第四步连接pdbDB
运行 Sqlplus
test/password@pdborcl——不要使用分号。现在您已连接到 pdb 数据库
第五步:导入转储文件
跑
CMD
现在输入
imp test/password@pdborcl file=myfile.dump
它应该开始导入过程
注意:如果可插拔数据库处于关闭模式。在开始导入过程之前将其安装到打开模式
运行 Sqlplus
与 sys/ 作为 sysdba 连接(它将连接到 cdbdatabase)
alter pluggable database all open
IMPORT PROCEDURE 用于将完整的 DB 转储导入 12c 数据库。假设在数据库安装期间您已经创建了容器和一个可插拔数据库 (pd1)。
转到 SQL PLUS
CONN / AS SYSDBA
CONN system/syspassword@//localhost:1521/pd1 # connected to pluggable DB
CREATE USER pdusr IDENTIFIED BY pdpass3344;
CREATE OR REPLACE DIRECTORY impdir AS 'C:\app\oracle\oradata\impdir';
GRANT READ, WRITE ON DIRECTORY impdir TO pdusr;
GRANT DBA,CONNECT TO pdusr; # granted permissions to pd1 DB because we are connected to mrmspd
退出sql plus,打开CMD
impdp system/syspassword@//localhost:1521/pd1 full=Y directory=impdir dumpfile=expdat.dmp logfile=impdp_mrms.log
并确保将 expdat.dmp 放在 C:\app\oracle\oradata\impdir