12c 关于nologging的一些方法

对于某些加载数据的应用,比如SQL*Loader或者impdp等操作是不需要生成日志的,再这些工作之前我们可以通过以下手段有效的减少数据库的消耗。

案例演示使用oracle12c的pdb

一, 修改表空间的日志生成方式
show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO

1. 切换到pdb
alter session set container=pdb1;

2. 创建表空间Baymax作为我们的演示对象
create tablespace baymax
datafile '/u01/app/oracle/oradata/cdb/pdb1/baymax01.dbf'
size 20m
autoextend on maxsize 1g;

select tablespace_name,file_name,bytes/1024/1024 mb,autoextensible from cdb_data_files;


默认创建的表空间日志模式为开启状态LOGGING
select tablespace_name,logging,con_id from cdb_tablespaces;

3. 关闭表空间的日志模式
alter tablespace baymax nologging;

select tablespace_name,logging,con_id from cdb_tablespaces where tablespace_name='BAYMAX';

TABLESPACE LOGGING   CON_ID
---------- --------- ----------
BAYMAX     NOLOGGING 3

4. 作为数据加载后可以手工调整回日志方式
alter tablespace baymax logging;

二,数据泵导入数据时使用isable_archive_logging参数
12c的新特性,可以尽量减少导入操作时生成日志。并且在expdp时可以自动判断是否符合自动加载的条件direct=y。如果符合该条件数据泵会自动开启直接路径加载的方式来提高导出速度,比之前版本的数据泵只能了许多。
create or replace dp_dir as '/home/oracle';

grant read,write on directory dp_dir to dp

$ impdp dp/dp directory=dp_dir dumpfile=hr.dmp transform=disable_archive_logging:Y


需要注意的是常规的DML操作,如insert,update,delete语句是不受nologging限制的。即使在表空间上设置了nologging,也会生成日志,这样做是为了数据的可恢复性。

nologging的有效工作范围很小,总结如下:
  • 直接路径加载的insert语句
  • 直接路径的SQL*Loader语句
  • CREATE TABLE AS SELECT(nologging只会影响创建表时的insert语句,当表创建好以后就不再受nologging的影响)
  • ALTER TABLE MOVE
  • ALTER TABLE ADD/MERGE/SPLIT/MOVE/MODIFY PARTITION
  • CREATE INDEX
  • ALTER INDEX REBUILD
  • CREATE MATERIALIZED VIEW
  • CREATE MATERIALIZED VIEW LOG
  • ALTER MATERIALIZED VIEW MOVE
  • ALTER MATERIALIZED VIEW LOG MOVE

以后的学习过程中发现新的方法再补充进来。

全文完

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29047826/viewspace-1446735/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29047826/viewspace-1446735/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值