读书笔记:Oracle数据库的"日志开关"和"数据仓库"设计秘诀

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

Oracle数据库的"日志开关"和"数据仓库"设计秘诀

一、数据库的"黑匣子":日志模式选择

想象飞机上的黑匣子,它记录着飞行中的所有关键数据。Oracle数据库也有类似的机制——重做日志(redo log),而LOGGING和NOLOGGING就是控制这个"黑匣子"的开关。

两种模式怎么选?

  • 常规模式(LOGGING):像全天候工作的监控摄像头,记录所有操作(默认选择)
  • 节能模式(NOLOGGING):像选择性记录的执法记录仪,只在特定情况下工作

真实场景建议

  • 银行交易系统 → 必须用LOGGING
  • 数据分析临时表 → 可考虑NOLOGGING加速处理
  • 开发测试环境 → 根据需求灵活选择

小知识:即使设为NOLOGGING,日常的增删改操作仍会被记录,只有像大批量导入这样的特殊操作才会跳过日志。

二、数据块的"会客室":INITRANS参数

把数据库块想象成公司会议室,INITRANS就是会议室里预设的座位数:

  • 默认只有2个座位(INITRANS=2)
  • 当多人(并发事务)同时要开会时,来晚的人只能排队等待
  • 会议室可以临时加座位(动态扩展),但空间有限

实用建议

  • 普通办公室(低频修改的表):默认2个足够
  • 热门会议室(高频并发表):建议增加到10-20个座位
  • 最大容量永远是255人(Oracle的硬限制)

三、"随便放"的储物间:堆组织表的本质

堆表就像你家的大储物间:

  • 东西(数据)随便放,哪里有空塞哪里
  • 找东西时没有固定顺序,每次翻出来的顺序可能都不一样
  • 即使按顺序放进去,拿出来时顺序也会乱

经典案例

-- 往储物间放三个箱子
INSERT INTO 储物间 VALUES(1, '冬季衣服');
INSERT INTO 储物间 VALUES(2, '夏季衣服'); 
INSERT INTO 储物间 VALUES(3, '春秋衣服');

-- 扔掉第二个箱子
DELETE FROM 储物间 WHERE 箱子编号=2;

-- 放入新箱子
INSERT INTO 储物间 VALUES(4, '儿童衣物');

-- 查看时顺序可能是:3,1,4 而不是1,3,4
SELECT * FROM 储物间;

重要原则
想按顺序找东西?必须用"ORDER BY"明确说明!

-- 正确做法:使用排序指令
SELECT * FROM 储物间 ORDER BY 放入时间;

四、DBA的秘密武器:逆向工程建表语句

新手设计师常问:"这个漂亮房子是怎么建的?"Oracle也提供了类似的"设计图纸查看"功能:

-- 先建个简单表
CREATE TABLE 我的表 (
   编号 NUMBER PRIMARY KEY,
   名称 VARCHAR2(100),
   详情 CLOB
);

-- 查看完整设计图纸(包含所有隐藏细节)
SELECT dbms_metadata.get_ddl('TABLE', '我的表') FROM dual;

这个方法能揭示:

  • 默认的存储参数设置
  • 隐藏的索引配置
  • 特殊字段(如CLOB)的存储方式
  • 表空间分配情况

五、优化存储的三大法宝

  1. 空间预留(PCTFREE)

    • 像行李箱留出伸缩层:默认留10%空间
    • 装冬季衣服的箱子 → 多留空间(PCTFREE=30)
    • 装书本的箱子 → 少留空间(PCTFREE=5)
  2. 会客座位(INITRANS)

    • 预估会有多少客人同时来访
    • 家庭相册(很少修改):2个座位足够
    • 热门留言本(多人同时写):需要10个座位
  3. 压缩打包(COMPRESS)

    • 普通打包:NOCOMPRESS(保持原样)
    • 真空压缩:COMPRESS ADVANCED(节省70%空间)
    • 部分压缩:COMPRESS BASIC(仅对大件物品压缩)

特别提醒

  • 照片文件(LOB数据)有自己的存储规则,不受箱子(PCTFREE)设置影响
  • 它们总是塞满整个盒子才会换新盒子

掌握这些知识,你就能像专业仓库管理员一样高效管理Oracle数据库存储了!

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

posted @ 2025-09-01 20:35  认真就输  阅读(13)  评论(0)    收藏  举报