Oracle 12C 数据泵新特性(DISABLE_ARCHIVE_LOGGING+VIEWS_AS_TABLES导出视图+LOGTIME)

0    276    1

Tags:

👉 本文共约10159个字,系统预计阅读时间或需39分钟。

在Oracle 12c中,在数据泵(expdp)方面有哪些增强的新特性?

Oracle 12c的数据泵新增了很多的新特性,分别如下所示:

在Data Pump中引入了新的TRANSFORM的选项DISABLE_ARCHIVE_LOGGING

(1)在Data Pump中引入了新的TRANSFORM的选项DISABLE_ARCHIVE_LOGGING,这对于表和索引在导入期间提供了关闭Redo日志生成的灵活性。当为TRANSFORM选项指定了DISABLE_ARCHIVE_LOGGING:Y值,那么在整个导入期间,表和索引的Redo日志就会处于关闭状态,仅生成少量的日志。这一功能在导入大型表时缓解了压力,并且减少了过度的Redo产生,从而加快了导入。这一属性对表和索引都适用。不管是在非归档还是归档情况下使用DISABLE_ARCHIVE_LOGGING都会减小导入时间,减少归档量。但是需要注意的是,如果数据库处于FORCE LOGGING模式,那么DISABLE_ARCHIVE_LOGGING参数会无效。

以下SQL演示了这一功能:

“TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y”表示表和索引都关闭日志。

有关该新特性需要注意以下几点:

① 在导入完成后,表和索引的状态(包括LOGGING状态和索引是否有效的状态)都会恢复到导入之前的状态。

② 在使用该参数导入数据文件后,如果相应的datafile被restored和recovered,那么接下来的涉及到目标表的查询会报ORA-01578和ORA-26040的坏块错误。例如:

例如:

因此,在使用该参数导入数据文件后,需要立马对相关的数据文件做RMAN备份。

使用VIEWS_AS_TABLES选项可以让数据泵将视图转换为表然后导出

(2)使用VIEWS_AS_TABLES选项可以让数据泵将视图转换为表然后导出。需要注意的是,导出到dmp文件后,视图的定义已经自动转换为表的定义了。在执行导入操作后,会以表的形式存在

以下SQL演示了这一功能:

表数据准备:

LOGTIME参数

(3)LOGTIME参数决定时间戳是否将包括在expdp和impdp功能的输出信息中。LOGTIME的可用值如下所示:

① NONE:默认值,指示输出中不包括时间戳,输出和之前的版本相似。

② STATUS:时间戳包括在控制台输出中,但不会在日志文件中出现。

③ LOGFILE:时间戳出现在日志文件中,但不会输出到控制台。

④ ALL:时间戳出现在日志文件和控制台输出中。

关于Oracle 12c的数据泵还有很多的新特性,例如压缩、加密、审计等,这里不再详细介绍,读者可参考作者的博客或阅读相关的官方文档进行学习。

1.1 关闭redo日志的生成(TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y)

Data Pump中引入了新的TRANSFORM选项,这对于对象在导入期间提供了关闭重做生成的灵活性。当为TRANSFORM选项指定了DISABLE_ARCHIVE_LOGGING值,那么在整个导入期间,重做生成就会处于关闭状态。这一功能在导入大型表时缓解了压力,并且减少了过度的redo产生,从而加快了导入。这一属性还可应用到表以及索引。

以下案例演示了这一功能:

impdp directory=dpump dumpfile=abcd.dmp TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y logfile=abcd.log

l impdp directory=dpump dumpfile=abcd.dmp TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y logfile=abcd.log

l impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp SCHEMAS=hr TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y --表和索引都关闭日志

l impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp SCHEMAS=hr TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y:TABLE --只有表关闭日志

l impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp SCHEMAS=hr TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y TRANSFORM=DISABLE_ARCHIVE_LOGGING:N:INDEX

l impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp SCHEMAS=hr TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y:INDEX

Enables you to alter object creation DDL for objects being imported.

Syntax and Description

TRANSFORM=transform_name:value[:object_type]

The transform_name specifies the name of the transform.The possible options are as follows,in alphabetical order:

?DISABLE_ARCHIVE_LOGGING:[Y|N]

If set to Y,then the logging attributes for the specified object types(TABLE and/or INDEX)are disabled before the data is imported.If set to N(the default),then archive logging is not disabled during import.After the data has been loaded,the logging attributes for the objects are restored to their original settings.If no object type is specified,then the DISABLE_ARCHIVE_LOGGING behavior is applied to both TABLE and INDEX object types.This transform works for both file mode imports and network mode imports.It does not apply to transportable tablespace imports.

Note:

If the database is in FORCE LOGGING mode,then the DISABLE_ARCHIVE_LOGGING option will not disable logging when indexes and tables are created.

将视图转换为表然后导出(VIEWS_AS_TABLES选项)

这是Data Pump中另外一个改进。有了VIEWS_AS_TABLES 选项,你就可以将视图数据载入表中。

以下案例演示了如何在导出过程中将视图数据载入到表中:

expdp directory=dpump views_as_tables=my_view:my_table dumpfile=abcd.dmp logfile=abcd.log

1.2.1 自己实验

expdp VIEWS_AS_TABLES选项可以将视图看做表并将其数据导出。

expdp system/lhr DIRECTORY=data_pump_dir DUMPFILE=expdp_vw.dmp LOGFILE=expdp_vw.log VIEWS_AS_TABLES=lhr.my_view

表数据准备:

create table lhr.my_tab1 (nr number, txt varchar2(10));

insert into lhr.my_tab1 values (1,'Line 1');

insert into lhr.my_tab1 values (2,'Line 2');

create table lhr.my_tab2 (nr number, col2 number, col3 varchar2(10));

insert into lhr.my_tab2 values (1,1,'c3_1');

insert into lhr.my_tab2 values (2,2,'c3_2');

commit;

create view lhr.my_view (nr, txt, col3) as

select t1.nr, t1.txt, t2.col3

from lhr.my_tab1 t1, lhr.my_tab2 t2

where t1.nr=t2.nr;

开始导出:

C:\Users\xiaomaimiao>expdp system/lhr DIRECTORY=data_pump_dir DUMPFILE=expdp_vw.dmp LOGFILE=expdp_vw.log VIEWS_AS_TABLES=lhr.my_view

Export: Release 12.1.0.2.0 - Production on 星期五 12月 16 16:31:49 2016

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

连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

启动 "SYSTEM"."SYS_EXPORT_TABLE_01": system/**** DIRECTORY=data_pump_dir DUMPFILE=expdp_vw.dmp LOGFILE=expdp_vw.log VIEWS_AS_TABLES=lhr.my_view

正在使用 BLOCKS 方法进行估计...

处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA

使用 BLOCKS 方法的总估计: 16 KB

处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE

. . 导出了 "LHR"."MY_VIEW" 5.929 KB 2 行

已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TABLE_01"


SYSTEM.SYS_EXPORT_TABLE_01 的转储文件集为:

E:\APP\ORACLE\ADMIN\LHRDB12C\DPDUMP\EXPDP_VW.DMP

作业 "SYSTEM"."SYS_EXPORT_TABLE_01" 已于 星期五 12月 16 16:32:36 2016 elapsed 0 00:00:31 成功完成

查看其DDL语句:

C:\Users\xiaomaimiao>impdp system/lhr DIRECTORY=data_pump_dir DUMPFILE=expdp_vw.dmp LOGFILE=impdp_vw.log sqlfile=a.txt

Import: Release 12.1.0.2.0 - Production on 星期五 12月 16 16:35:14 2016

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

连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

已成功加载/卸载了主表 "SYSTEM"."SYS_SQL_FILE_FULL_01"

启动 "SYSTEM"."SYS_SQL_FILE_FULL_01": system/**** DIRECTORY=data_pump_dir DUMPFILE=expdp_vw.dmp LOGFILE=impdp_vw.log sqlfile=a.txt

处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE

作业 "SYSTEM"."SYS_SQL_FILE_FULL_01" 已于 星期五 12月 16 16:35:26 2016 elapsed 0 00:00:10 成功完成

DDL语句内容:

-- CONNECT SYSTEM

ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';

ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1';

ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1';

ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1';

ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1';

ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 ';

-- new object type path: TABLE_EXPORT/VIEWS_AS_TABLES/TABLE

CREATE TABLE "LHR"."MY_VIEW"

( "NR" NUMBER,

"TXT" VARCHAR2(10 BYTE),

"COL3" VARCHAR2(10 BYTE)

) SEGMENT CREATION DEFERRED

PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

NOCOMPRESS LOGGING

TABLESPACE "USERS" ;

进行导入:

C:\Users\xiaomaimiao>sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on 星期五 12月 16 16:37:03 2016

Copyright (c) 1982, 2014, Oracle. All rights reserved.

连接到:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> create user lhr01 identified by lhr;

用户已创建。

SQL> grant dba to lhr01;

授权成功。

SQL> exit

从 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 断开

C:\Users\xiaomaimiao>impdp system/lhr DIRECTORY=data_pump_dir DUMPFILE=expdp_vw.dmp LOGFILE=impdp_vw.log remap_schema=lhr:lhr01

Import: Release 12.1.0.2.0 - Production on 星期五 12月 16 16:39:49 2016

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

连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_FULL_02"

启动 "SYSTEM"."SYS_IMPORT_FULL_02": system/**** DIRECTORY=data_pump_dir DUMPFILE=expdp_vw.dmp LOGFILE=impdp_vw.log remap_schema=lhr:lhr01

处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE

处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA

. . 导入了 "LHR01"."MY_VIEW" 5.929 KB 2 行

作业 "SYSTEM"."SYS_IMPORT_FULL_02" 已于 星期五 12月 16 16:39:57 2016 elapsed 0 00:00:06 成功完成

数据泵EXPDP/IMPDP在12C版本的新特性-VIEWS_AS_TABLES

VIEWS_AS_TABLES

默认值:无默认值

提示:
该参数会使用非加密的格式导出视图的数据到非加密的表。如果正在导出敏感数据,oracle强烈建议使用加密的方式导出并导出到加密的表空间。可以使REMAP_TABLESPACE参数更换导入的表空间。

目的:
指定一个或多个视图以表的形式导出。?
语法和说明?:
VIEWS_AS_TABLES=[schema_name.]view_name[:table_name], ...

数据泵以表的形式从视图中导出相同的列和数据,也会导出依赖于视图的对象,比如:授权和约束。但是不会导出依赖于表的对象。
该参数可以单独使用也可以和TABLES参数一起使用(可以在一个job中同时导出表和视图),如果单独使用,数据泵以导出表的方式导出视图。
语法元素的定义如下:?
schema_name: 指定的schema名称,如未指定,以当前用户执行导出。
view_name: 要导出为一个表的视图的名称。视图必须存在,并且它必须是关系视图,并且只有scalar, non-LOB 列。如果指定一个无效或不存在的视图,会跳过并返回一条错误消息。
table_name: 要作为导出视图的元数据源的表的名称。默认情况下数据泵会自动为视图创建一个临时"模板表",和视图有相同列和数据类型。如果数据库是只读的则此默认创建模板表将失败。在这种情况下,您可以指定表的名称。
表必须和视图在一个schema下。它必须是一个非分区的关系表(堆表)。它不能是嵌套表。?

如果导出作业包含多个视图与显式指定的模板表,模板表都必须不同。
如下:(在这两个视图使用同一个模板表),其中一个视图是跳过:?
expdp scott/tiger directory=dpump_dir dumpfile=a.dmp views_as_tables=v1:emp,v2:emp
?报告跳过的对象并返回错误消息。?
?完成导出操作后自动删除模板表。可以执行以下查询以查看(名字以?KU$VAT开头):
SQL> SELECT * FROM user_tab_comments WHERE table_name LIKE 'KU$VAT%';
TABLE_NAME TABLE_TYPE


COMMENTS
-----------------------------------------------------
KU$VAT_63629 TABLE
Data Pump metadata template table for view SCOTT.EMPV
?限制?
?该参数不能与TRANSPORTABLE=ALWAYS参数一起使用。?
?使用该参数创建的表不包含任何隐藏的列,以指定创建的表是原视图的一部分。?
?该参数不支持LONG数据类型。
?示例?
?下面的示例导出视图的内容到一个名为的转储文件。?scott.view1scott1.dmp
> expdp scott/tiger views_as_tables=view1 directory=data_pump_dir dumpfile=scott1.dmp
dmp文件将包含一个名为view1的表。?该表所有的行从视图view1获取。



Oracle 12c 新特性 --- Oracle Data Pump Export View As a Table

概念

There is a new expdp command-line option for Oracle Data Pump Export that allows the user to indicate that a view should be exported as a table. This means that, instead of exporting the view definition, Oracle Data Pump exports a table definition and then unloads all data from the view. At import time, Oracle Data Pump creates a table using the table definition in the dump file and then inserts the data unloaded from the view into the table. The PL/SQL DBMS_DATAPUMP package has a similar option.

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复