如何在Oracle 12c中恢复转储文件

时间:2014-10-02 09:51:58

标签: oracle datapump

我想在oracle 12c中恢复数据库。我已经为它做了一些事情但是在导入数据时我得到了一些关于db中不存在的用户的错误。因为数据库需要一些必须在oracle 12c中定义的用户。我为数据库创建了db需要的用户,但是在oracle 12中,创建用户系统的用户系统已经更改了会话问题。我不得不将c ##表达式放在前面的用户名中,问题仍然存在。我尝试了不同的方法来恢复,但它没有导入所有表和数据。我认为这是关于用户问题。我的问题是如何创建一个与备份数据库用户和恢复数据库相同的用户。

4 个答案:

答案 0 :(得分:2)

第一步:创建pdbuser

  1. 运行Sqlplus sys / as sysdba,(如果有密码,你应该输入它)

  2. 运行alter session set container=pdbDBName---;(例如:pdborcl)

  3. 运行create user test identified by password default tablespace users temporary tablespace temp;

  4. 运行grant pdb_dba to test;

  5. 运行grant dba to test;

  6. 第二步:在tns文件中添加pdbname

    1. 运行CMD

    2. 运行tnsping cdbDB(例如:tnsping orcl)

    3. 找到tns路径并打开tnsnames.ora文件(如果不存在,请将其置于当前文件的同一目录中)

    4. 像cdbDBName一样添加pdbDBName(例如:orcl),见下面的例子

    5. 示例:

      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

      1. 运行CMD

      2. tnsping pdbDB(例如:tnsping pdborcl)

      3. 查看tns状态。路径细节应该没问题。

      4. 第四步连接到pdbDB

        1. 运行Sqlplus

        2. test / password @ pdborcl--不要使用分号。现在您已连接到pdb数据库

        3. 第五步:导入转储文件

          1. 运行CMD

          2. 输入imp test/password@pdborcl file=myfile.dump 现在它应该开始导入过程

          3. 注意:如果可插拔数据库处于关闭模式。在开始导入过程之前将其挂载到打开模式

            1. 运行Sqlplus

            2. 连接sys / as sysdba(它将连接到cdbdatabase)

            3. alter pluggable database all open

答案 1 :(得分:1)

基于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

答案 2 :(得分:0)

首先了解一下该数据库。这是一个关于12c中用户管理的文档 Administering User Accounts and Security DBA essentials一般来说是一个非常好的起点

您正在查看容器数据库的根目录,并且需要在本地PDB中创建用户并在其中导入数据。最简单的方法是为该pdb创建一个tnsalias,指向导入的特定PDB service_name。

答案 3 :(得分:0)

导入过程 用于将完整的数据库转储导入12c数据库。假设在安装DB的过程中创建了容器和一个可插拔的DB(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