【问题标题】:Using Oracle "Create User" command does not automatically create an associated schema使用 Oracle“创建用户”命令不会自动创建关联模式
【发布时间】:2017-05-15 02:54:32
【问题描述】:

我刚刚开始使用 Oracle 数据导出和导入,并且第一次一切正常。但是第二天我又回来了,在相同的系统上重复了完全相同的步骤,但得到 ORA-01435: user does not exist 错误。

所有机器的系统规格:

-操作系统:Windows 2012 R2 x64

-Oracle 服务器:Oracle 11G Express x64

目标: 我正在从 Oracle 服务器 1 导出数据并导入到 Oracle 服务器 2。

程序: 从 Oracle 服务器 1 导出数据转储成功。

但在 Oracle 服务器 2 上导入数据转储时,我遵循以下过程:

-停止 IIS 服务

net stop WAS

在导入前创建架构/用户帐户并授予权限

net stop WAS

sqlplus / as sysdba;

CREATE user PIE1 identified by PASS1;

GRANT ALL PRIVILEGES TO PIE1;

GRANT IMP_FULL_DATABASE TO PIE1;

根据 oracle 的说法,一切顺利,但请看下面的第一张图片。在 DBeaver 中,我可以看到只创建了用户帐户 PIE1,但没有架构。 Oracle issue 1. User account created, but not the Schema

问题 1: 根据 Oracle 的说法,“创建用户”命令应该也创建一个关联的模式。任何人都知道为什么这不再为我工作?它在前一天晚上工作过一次。

然后我继续导入过程如下:

imp PIE1/PASS1@xe file=c:\Backups\AVUSER2_6_7.dmp log=c:\Backups\import.log fromuser=AVUSER2_6_7 touser=PIE1;

但是得到以下错误: Oracle claims the User doesn't exist even though it does

Oracle 声称用户不存在,即使它存在。我重复了整个过程,甚至创建了相同的导入/导出用户帐户和凭据,但仍然出现此错误。

问题 2:知道为什么 Oracle “找不到”数据库中明确存在的用户帐户吗?

附加信息:

  1. 检查我的 windows 帐户是否在管理员组中

  2. 检查了我的 windows 帐户是否在 ORA_DBA 组中

  3. 以管理员身份打开所有 CMD 提示符

【问题讨论】:

  • 是否有可能在 DBeaver 中刷新了 Users 文件夹但未刷新 Schemas 文件夹?也许导入错误是因为FROMUSER 而不是TOUSER;你确定转储文件包含用户 AVUSER2_6_7?
  • 嗨 Jon,我已经用相同的结果刷新了整个树。我还注意到,即使在手动创建架构之后。运行导入后,架构被删除。
  • 您是否真的使用导出数据泵和常规导入,或者这是一个错字?我不认为这两者会兼容。能否包含您使用的完整导出命令?
  • 问题是“导出数据转储”,而不是“泵”-我起初也误读了 *8-) 顺便说一句,虽然我可以理解您想在屏幕截图中显示 DBeaver GUI 差异, 最好包含命令行会话的文本而不是那些图像 - 更容易阅读,它们可以搜索,有些人根本无法访问图像。

标签: oracle oracle11g


【解决方案1】:

正如您所暗示的,用户和架构在 Oracle 中是相同的,您不能拥有没有架构的用户。不知道 DBeaver,但由于“模式”下未列出其他用户(根据您的第二张图片 - 匿名,DIP,...),这似乎无关。

(纯属猜测,但也许您在 DBeaver 中连接的用户只是无法查看这些用户拥有的任何对象 - 也许它只列出了它可以在 all_objects 中看到的用户,比如说。纯猜测,但您可以通过在以同一用户身份通过​​ SQL*Plus 连接时查看数据字典来调查这一点。According to this old forum post,有一个选项可以隐藏空模式...)

导入是以PIE1 成功连接 - 如果不是,您会收到另一个错误 ORA-01017,并且您不会看到“已连接到... ' 横幅或之后的任何内容。

您的导入命令后面有一个不应该出现的分号。 “importing ... objects into”消息显示它正在尝试导入PIE1; 用户,而不是您实际创建的用户PIE1。删除该分号,然后重试。

顺便说一句,您可能还可以删除@xe TNS 别名并坚持使用本地连接,假设环境配置为运行 SQL*Plus 时的状态。您还应该考虑使用数据泵 expdp/impdp 而不是旧的 exp/imp。

【讨论】:

  • 嗨,Alex,对不起,我现在不在我的电脑旁。我认为您关于在 touser 名称后删除额外分号的建议可能有效(不记得为什么我如此专注于添加分号开头)。一旦我回到我的电脑,我会尝试它并让你知道。非常感谢到目前为止大家的反馈...新年快乐
  • 事实证明我需要休假……嗯,正如 Alex 所说,touser 名后面多了一个分号。感谢您发现...我一定是用错误的命令更新了我的文档,而忽略了检查实际格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2020-08-25
相关资源
最近更新 更多