包含了MVIEW的表领域,在进行导出,表领域改名,再导入后,MVIEW会消失不见。

测试环境12.1.0.2

=================
步骤1:数据的准备

[oracle@db12102 admin]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on 木 8月 17 13:01:48 2017
...

SQL> alter session set container=pdb1;
SQL> create tablespace userdata1 datafile '/home/oracle/data5.dbf' size 20M;

SQL> grant dba to user001 identified by user001;
SQL> alter user user001 default tablespace userdata1;

SQL> conn user001/user001@mypdb1

SQL> create table journal_tab001(ss_pk integer primary key, base_date date, cancel_date date,app_date date);
SQL> create materialized view log on journal_tab001;

SQL> insert into journal_tab001 values(1,sysdate,sysdate,sysdate);
SQL> insert into journal_tab001 values(2,sysdate,sysdate,sysdate);
SQL> insert into journal_tab001 values(3,sysdate,sysdate,sysdate);
SQL> commit;

创建 MVIEW:

SQL> create materialized view journal_tab001_MDATE_MV  TABLESPACE USERDATA1
       AS SELECT  ss_pk,
                  MAX (GREATEST (base_date, NVL (cancel_date,TO_DATE ('00010101', 'yyyymmdd')),app_date) ) basedate
          FROM journal_tab001 GROUP BY ss_pk;  2

SQL> select * from journal_tab001_MDATE_MV;

SS_PK          BASEDATE
-------------- --------
            1 17-08-17
            2 17-08-17
            3 17-08-17

=================
步骤2:数据的导出

SQL> create or replace directory DATAPUMP_DIR_D001 as '/home/oracle';

SQL> show con_name;

CON_NAME
------------------------------
PDB1
SQL>

以表领域 模式导出:

[oracle@db12102 ~]$ expdp "'"sys/oracle@mypdb1 as sysdba"'" tablespaces=USERDATA1 directory=DATAPUMP_DIR_D001 dumpfile=userdata1.dmp logfile=userdata1_export.log

Export: Release 12.1.0.2.0 - Production on 木 8月 17 13:39:02 2017

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

Connect to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
"SYS". "SYS_EXPORT_TABLESPACE_01" is running: "sys / ******** @ mypdb1 AS SYSDBA" tablespaces = USERDATA1 directory = DATAPUMP_DIR_D001 dumpfile = userdata1.dmp logfile = userdata1_export.log
Estimating using BLOCKS method ...
Processing of object type TABLE_EXPORT / TABLE / TABLE_DATA
Total estimates using the BLOCKS method: 192 KB
Processing of object type TABLE_EXPORT / TABLE / TABLE
Processing of object type TABLE_EXPORT / TABLE / COMMENT
Processing of object type TABLE_EXPORT / TABLE / INDEX / INDEX
Processing of object type TABLE_EXPORT / TABLE / INDEX / FUNCTIONAL_INDEX / INDEX
Processing of object type TABLE_EXPORT / TABLE / CONSTRAINT / CONSTRAINT
Processing of object type TABLE_EXPORT / TABLE / INDEX / STATISTICS / INDEX_STATISTICS
Processing of object type TABLE_EXPORT / TABLE / INDEX / STATISTICS / FUNCTIONAL_INDEX / INDEX_STATISTICS
Processing of object type TABLE_EXPORT / TABLE / STATISTICS / TABLE_STATISTICS
Processing of object type TABLE_EXPORT / TABLE / STATISTICS / MARKER
Processing of object type TABLE_EXPORT / TABLE / POST_TABLE_ACTION
. "user001". "journal_tab001" 6.445 KB 3 rows have been exported
. "user001". "journal_tab001_MDATE_MV" 5.984 KB 3 rows have been exported
. "user001". "MLOG $ _journal_tab001" 7.273 KB 3 rows have been exported
Master table "SYS". "SYS_EXPORT_TABLESPACE_ 01" has been successfully loaded / unloaded
************************************************** ****************************
The dump file set to SYS.SYS_EXPORT_TABLESPACE_01 is as follows:
 /home/oracle/userdata1.dmp
Job "SYS". "SYS_EXPORT_TABLESPACE_01" completed successfully with tree August 17 13:39:55 2017 elapsed 0 00: 00: 50

[oracle@db12102 ~]$

===

SQL> set pages 0
SQL> set longchunksize 3000
SQL> set long 2000000000

SQL> select dbms_metadata.get_ddl('MATERIALIZED_VIEW','journal_tab001_MDATE_MV','user001') from dual;

CREATE MATERIALIZED VIEW "user001"."journal_tab001_MDATE_MV" ("ss_pk", "BASEDATE")
 ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USERDATA1"
 BUILD IMMEDIATE
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USERDATA1"
 REFRESH FORCE ON DEMAND
 USING DEFAULT LOCAL ROLLBACK SEGMENT
 USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
 AS SELECT  ss_pk, MAX (GREATEST (base_date, NVL (cancel_date,TO_
DATE ('00010101', 'yyyymmdd')),app_date) ) basedate FROM journal_tab001 GROUP BY ss_pk

SQL>

SQL> alter tablespace USERDATA1 rename to USEROLD; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   为了导出作准备,原有表领域改名

SQL> select dbms_metadata.get_ddl('MATERIALIZED_VIEW','journal_tab001_MDATE_MV','user001') from dual;

CREATE MATERIALIZED VIEW "user001"."journal_tab001_MDATE_MV" ("ss_pk", "
BASEDATE")
 ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USEROLD"
 BUILD IMMEDIATE
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USEROLD" ★
 REFRESH FORCE ON DEMAND
 USING DEFAULT LOCAL ROLLBACK SEGMENT
 USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
 AS SELECT  ss_pk, MAX (GREATEST (base_date, NVL (cancel_date,TO_
DATE ('00010101', 'yyyymmdd')),app_date) ) basedate FROM journal_tab001 GROUP BY ss_pk

SQL>

SQL> create tablespace USERDATA1 LOGGING DATAFILE '/home/oracle/data6.dbf' SIZE 20M; <<<<<<<<<<<<<<<<<<<<<<<<<,创建同名的表领域

SQL> select object_id,object_name,object_type, status from dba_objects where owner='user001' order by object_id;  [***1]

91961 journal_tab001                    TABLE                          VALID
    91962 SYS_C0010023                     INDEX                          VALID
    91963 MLOG$_journal_tab001              TABLE                          VALID
    91964 RUPD$_journal_tab001              TABLE                          VALID
    91965 I_MLOG$_journal_tab001            INDEX                          VALID
    91966 journal_tab001_MDATE_MV           TABLE                          VALID
    91967 I_SNAP$_journal_tab001_MAXDAT     INDEX                          VALID
    91968 journal_tab001_MDATE_MV           MATERIALIZED VIEW              VALID

SQL>

=================
步骤3:数据的导入

[oracle @ db12102 ~] $ impdp "'" sys / oracle @ mypdb1 as sysdba "'" tablespaces = USERDATA1 directory = DATAPUMP_DIR_D001 dumpfile = userdata1.dmp logfile = userdata1_import.log table_exists_action = replace

Import: Release 12.1.0.2.0 - Production on Tree August 17 13:45:58 2017

Copyright (c) 1982, 2014, Oracle and / or its affiliates. All rights reserved.

Connect to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
The master table "SYS". "SYS_IMPORT_TABLESPACE_ 02" was successfully loaded / unloaded
"SYS". "SYS_IMPORT_TABLESPACE_02" is running: "sys / ******** @ mypdb1 AS SYSDBA" tablespaces = USERDATA1 directory = DATAPUMP_DIR_D001 dumpfile = userdata1.dmp logfile = userdata1_import.log table_exists_action = replace
Processing of object type TABLE_EXPORT / TABLE / TABLE
Processing of object type TABLE_EXPORT / TABLE / TABLE_DATA
. "user001". "journal_tab001" 6.445 KB 3 rows imported
. "user001". "journal_tab001_MDATE_MV" 5.984 KB 3 rows imported
. "user001". "MLOG $ _journal_tab001" 7.273 KB 3 rows imported
Processing of object type TABLE_EXPORT / TABLE / COMMENT
Processing of object type TABLE_EXPORT / TABLE / INDEX / INDEX
Processing of object type TABLE_EXPORT / TABLE / INDEX / FUNCTIONAL_INDEX / INDEX
Processing of object type TABLE_EXPORT / TABLE / CONSTRAINT / CONSTRAINT
Processing of object type TABLE_EXPORT / TABLE / INDEX / STATISTICS / INDEX_STATISTICS
Processing of object type TABLE_EXPORT / TABLE / INDEX / STATISTICS / FUNCTIONAL_INDEX / INDEX_STATISTICS
Processing of object type TABLE_EXPORT / TABLE / STATISTICS / TABLE_STATISTICS
Processing of object type TABLE_EXPORT / TABLE / STATISTICS / MARKER
Processing of object type TABLE_EXPORT / TABLE / POST_TABLE_ACTION
Job "SYS". "SYS_IMPORT_TABLESPACE_02" completed successfully with tree August 17 13:46:18 2017 elapsed 0 00: 00: 17

SQL> select object_id,object_name,object_type, status from dba_objects where owner='user001' order by object_id;   [***2]

92014 journal_tab001                    TABLE                          VALID
    92015 MLOG$_journal_tab001              TABLE                          VALID
    92016 journal_tab001_MDATE_MV           TABLE                          VALID
    92017 I_MLOG$_journal_tab001            INDEX                          VALID
    92018 I_SNAP$_journal_tab001_MAXDAT     INDEX                          VALID
    92019 SYS_C0010034                      INDEX                          VALID

对比上面的 [***1] 和 [**2], 可以发现,缺少了几个内部表。journal_tab001_MDATE_MV 也不见了。

SQL>
SQL> select dbms_metadata.get_ddl ('MATERIALIZED_VIEW', 'journal_tab001_MDATE_MV', 'user001') from dual;
ERROR:
ORA-31603: Object "journal_tab001_MDATE_MV" (type MATERIALIZED_VIEW) not found in schema "user001". ORA-06512:
"SYS.DBMS_METADATA", line 6069
ORA-06512: "SYS.DBMS_METADATA", line 8666
ORA-06512: Row 1

no record selected.

事实上,即便是如下的方式来进行,导入后也会发现 mview 不见了。
   Export、MVIEW删除、表领域改名、再新建一个同名表领域、Import (过程略)

此现象,是否是 Bug, 是不明确的。 在如下几种环境中都会发生:

  11.2.0.4
  12.1.0.2 Non-CDB
  12.1.0.2 CDB/PDB
   12.2.0.1 Non-CDB
   12.2.0.1 CDB/PDB

对策是 :

通过 Schema 模式来进行导出/导入。

[Oracle]包含了MVIEW的表领域,在进行导出,表领域改名,再导入后,MVIEW会消失不见。的更多相关文章

  1. Oracle - 数据库的实例、表空间、用户、表之间关系

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  2. 【转】Oracle - 数据库的实例、表空间、用户、表之间关系

    [转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机 ...

  3. oracle高级查询(实例基于scott用户四张表)

    oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...

  4. oracle下的数据库实例、表空间、用户及其表的区分

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  5. [转]Oracle - 数据库的实例、表空间、用户、表之间关系

    本文转自:http://www.cnblogs.com/adforce/p/3312252.html 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物 ...

  6. Oracle 优化器_访问数据的方法_单表

    Oracle 在选择执行计划的时候,优化器要决定用什么方法去访问存储在数据文件中的数据.我们从数据文件中查询到相关记录,有两种方法可以实现:1.直接访问表记录所在位置.2.访问索引,拿到索引中对应的r ...

  7. Oracle大表改为分区表及表空间切换方案

    Oracle大表改为分区表及表空间切换方案 一.            背景 由于之前数据库表和索引放在一个表空间导致表空间数据文件增长太快,文件数量即将达到Oracle表空间的限制,需要对表(没有分 ...

  8. Oracle基础维护02-表、主键、索引、表结构维护手册

    目录 一.项目新建表.主键.索引注意事项 二.举例说明建表.主建.索引的操作方法 2.1 设定需求如下 2.1.1 查询数据库有哪些表空间 2.1.2 本文档假设数据库有这两个业务用户的表空间 2.2 ...

  9. oracle的minus返回第一个表中有、第二个表中没有的数据

    oracle的minus返回第一个表中有.第二个表中没有的数据 CREATE TABLE hovertree_union_1 ( id INT, val ) ); CREATE TABLE hover ...

随机推荐

  1. 开始记录 Windows Phone 生涯

    已经快接近三年没有更新博客了,最近打算把博客这块从新建设起来. 由于工作原因,现在已经很久没有接触过Android了.目前工作是全力 Windows Phone,并且也已经工作一年半了,以后会陆续把之 ...

  2. (网页)logback的使用和logback.xml详解(转)

    转自博客园:行走在云端的愚公: 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: ...

  3. python中常用函数整理

    1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object): ""&q ...

  4. MySQL--eq_range_index_dive_limit参数学习,MYSQL 5.6 5.7处理数据分布不均的问题

    官方文档如下描述:This variable indicates the number of equality ranges in an equality comparison condition w ...

  5. git命令设置简写(别名)

    ### git命令设置简写(别名) 前言:有时候在执行git命令比较多的情况下,每次敲git命令比较费时,同时有些命令比如cherry-pick这种比较长时更是费时,所以可以通过设置命令行简写来设置. ...

  6. Qt实现同步(阻塞式)http get等网络访问操作

    Qt的网络操作类是异步(非阻塞的),但有时想做一些阻塞的事情就不方便了,可用如下几行代码轻松实现: QByteArray MyNetworkAccess::get(const QString & ...

  7. KVM网络桥接模式解说

    在上一篇博客中,我画了一张图来解说桥接模式下kvm的网络是什么样子的.那今天我就仔细来解释一下这方面的内容,让大家学会配置桥接网络. 还是这样的一张图,我们知道bridge就是桥接网卡的名称.让虚拟机 ...

  8. Linux运维之如何查看目录被哪些进程所占用,lsof命令、fuser命令

    之前将一块硬盘挂载到某个目录下,但是现在我想卸载掉这块硬盘,无论如何都umount不了,有些同学可能说需要加上 -f 参数强制卸载,理论上是可以的,但是在我这里依然不起作用,比如: [root@:vg ...

  9. January 04th, 2018 Week 01st Thursday

    Just do what works for you, because there will always be someone who think differently. 就做你自己所能做的,因为 ...

  10. Django复习之ORM

    QuerySet数据类型:                        1.可切片,可迭代      [obj,....]                    2.惰性查询:            ...