【问题标题】:ORA-02199: missing DATAFILE/TEMPFILE clauseORA-02199: 缺少 DATAFILE/TEMPFILE 子句
【发布时间】:2018-05-09 04:13:43
【问题描述】:

我导出了一个数据库,它为我创建了一个带有 create 和 insert 的 sql 文件,但我收到一条错误消息,提示 ORA-02199: missing DATAFILE/TEMPFILE clause

在sql plus我运行sql脚本并得到一堆ORA-00942: table or view does not exist然后我注意到当它创建一个表时它有TABLESPACE "LOCALDEV" ;所以我输入CREATE tablespace LOCALDEV

在我输入之前create user localdev identified by localdev;

和

grant ALTER SESSION, CREATE SESSION, CREATE DATABASE LINK, CREATE MATERIALIZED VIEW, CREATE PROCEDURE, CREATE PUBLIC SYNONYM, CREATE ROLE,CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, CREATE TRIGGER, CREATE TYPE, CREATE VIEW, UNLIMITED TABLESPACE to localdev;

SQL> 创建表空间 localdev 数据文件 '/u01/app/localdev.dbf' 尺寸 100m;

ERROR at line 1:
ORA-01119: error in creating database file '/u01/app/localdev.dbf'
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 13: Permission denied
Additional information

:1

在我运行 sql 脚本之前,我没有收到任何错误。如果我有 BDA 要问,我会但不会。任何建议将不胜感激。

【问题讨论】:

  • 这可能是显而易见的,但您是否检查过该目录的所有权是否为 oinstall/oracle。自从我从事 oracle 工作以来已经有很长时间了,但我确实记得必须对基本目录及其子目录执行 chmod 和 chown。

标签: oracle oracle12c


【解决方案1】:

我导出了一个数据库,它使用 create 和 插入但我收到一条错误消息 ORA-02199: missing DATAFILE/TEMPFILE 子句(bla bla bla)

在我看来,您所做的第一步是错误的。如果您想导出“数据库”(我认为它实际上是一个“模式”(即“用户”)),那么您应该这样做。 Oracle 提供 Data Pump 实用程序、导出和导入功能。

如果您执行了导出,您将携带 DMP 文件并使用导入数据泵将其导入另一个数据库,该数据泵带有 REMAP_TABLLESPACE 参数,该参数接受两个值:旧的“源”表空间和新的“ target”表空间,用冒号分隔。例如:

impdp scott/tiger@new_database REMAP_TABLESPACE=localdev:users DIRECTORY=dump_dir DUMPFILE=scott.dmp 

或者,由于您目前有一个包含CREATE 和INSERT 语句的文本文件,您为什么不在任何文本编辑器中打开它并替换旧表空间名称 (localdev) 与新数据库中使用的表空间名称(在我的 IMPDP 示例中为“用户”)?

这需要几秒钟,你运行它,一切都被创建了,你不必重新发明轮子,做你在第一句话之后所做的一切(那将是 bla bla 部分) .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2017-12-20
    相关资源
    最近更新 更多