本书介绍了数据库管理员(DBA)的任务和必须掌握的基础知识。本书内容全面、浅显易懂,作者在介绍每个基本概念之前均以生活中的一个实例进行比喻,使读者在一种轻松、自然的情景下掌握Oracle9i数据库的基本概念,了解数据库管理员的职责和日常工作,数据库的组成、结构和系统的安装管理,数据库的各种视图以及数据库的安全等内容,为成为一名合格的DBA打下基础。\r\n 本书的三位作者均是Oracle DBA培训方面的专家,具有丰富的经验,曾著有多部Oracle DBA方面的著作。\r\n 本书适合Oracle数据库的初、中级DBA阅读,欲从事Oracle数据库管理工作的读者也会从本书中获益匪浅。
前言\r\n\r\n第一部分 定义数据库\r\n\r\n第1章 成为一名Oracle DBA \r\n\r\n1.1 如何与数据库进行“交谈” \r\n1.2 什么是Oracle DBA和DBA的职责 \r\n1.2.1 数据库示例:银行 \r\n1.2.2 信息的保存 \r\n1.2.3 什么是Oracle数据库 \r\n1.2.4 你具备成为一名DBA的条件吗 \r\n1.3 DBA的种类 \r\n1.3.1 DBA的任务\r\n1.3.2 怎样才能成为一名高级DBA \r\n1.4 SQL*Plus应知应会 \r\n1.4.1 进入SQL*Plus \r\n1.4.2 环境设置类命令\r\n1.4.3 信息收集类命令\r\n1.4.4 报告生成命令 \r\n\r\n第2章 Oracle数据库的组成 \r\n\r\n2.1 逻辑对象与物理对象 \r\n2.1.1 物理对象 \r\n2.1.2 操作系统简介 \r\n2.1.3 Oracle在计算机系统中的切入点 \r\n2.1.4 Oracle软件 \r\n2.2 Oracle数据库的“物理”组成 \r\n2.2.1 数据文件 \r\n2.2.2 参数文件 \r\n2.2.3 日志文件 \r\n2.2.4 备份文件 \r\n2.3 数据库的逻辑对象 \r\n2.3.1 表空间 \r\n2.3.2 表 \r\n2.3.3 索引\r\n2.3.4 数据库触发器 \r\n2.3.5 视图 \r\n2.3.6 实体化视图 \r\n2.3.7 回退段和撤销表空间 \r\n2.3.8 临时段 \r\n2.3.9 角色 \r\n2.3.10 包、过程、函数 \r\n2.3.11 序列 \r\n2.3.12 权限 \r\n\r\n第3章 掌握Oracle数据库:“DBA_”视图 \r\n\r\n3.1 数据字典视图 \r\n3.2 DBA_视图 \r\n3.2.1 DBA_TABLESPACES视图 \r\n3.2.2 DBA_DATA_FILES视图 \r\n3.2.3 DBA_SEGMENTS视图 \r\n3.2.4 DBA_EXTENTS视图 \r\n3.2.5 DBA_ROLLBACK_SEGS视图 \r\n3.2.6 DBA_UNDO_EXTENTS视图 \r\n3.2.7 DBA_OBJECTS视图 \r\n3.2.8 DBA_TEMP_FILES视图 \r\n3.2.9 DBA_TABLES视图 \r\n3.2.10 DBA_TAB_COLUMNS视图 \r\n3.2.11 DBA_INDEXES视图 \r\n3.2.12 DBA_IND_COLUMNS视图 \r\n3.2.13 DBA_CONSTRAINTS视图 \r\n3.2.14 DBA_CONS_COLUMNS视图\r\n\r\n第4章 掌握Oracle数据库:V$视图\r\n\r\n4.1 V$视图的基本情况 \r\n4.2 实例级静态V$视图 \r\n4.2.1 V$DATABASE视图 \r\n4.2.2 V$DATAFILE视图 \r\n4.2.3 V$DATAFILE_HEADER视图 \r\n4.2.4 V$DBFILE视图 \r\n4.2.5 V$FIXED_TABLE视图 \r\n4.2.6 V$INSTANCE视图 \r\n4.2.7 V$PARAMETER视图\r\n4.2.8 V$SGA视图 \r\n4.2.9 V$TEMPFILE视图 \r\n\r\n第5章 与Oracle数据库的安全有关的视图 \r\n\r\n5.1 DBA_USERS视图 \r\n5.2 DBA_PROFILES视图 \r\n5.3 DBA_ROLES视图 \r\n5.4 DBA_ROLE_PRIVS视图 \r\n5.5 DBA_SYS_PRIVS视图 \r\n5.6 DBA_TS_QUOTAS视图 \r\n5.7 DBA_TAB_PRIVS视图 \r\n5.8 DBA_SYNONYMS视图 \r\n5.9 DBA_VIEWS视图 \r\n\r\n第6章 与Oracle数据库的优化有关的实例级动态V$视图 \r\n\r\n6.1 V$FILESTAT视图 \r\n6.2 V$LATCH视图 \r\n6.3 V$LIBRARYCACHE视图 \r\n6.4 V$LOCK视图 \r\n6.5 V$LOCKED_OBJECT视图 \r\n6.6 V$PROCESS视图 \r\n6.7 V$SESSION视图 \r\n6.8 V$ROLLSTAT视图\r\n6.9 V$ROLLNAME视图\r\n6.10 V$UNDOSTAT视图\r\n6.11 V$ROWCACHE视图\r\n6.12 V$SGASTAT视图 \r\n6.13 V$STATNAME视图\r\n6.14 V$SYSSTAT视图 \r\n6.15 V$SYSTEM_EVENT视图 \r\n6.16 V$WAITSTAT视图 \r\n\r\n第二部分 管理数据库\r\n\r\n第7章 Oracle数据库的安装、配置和建立 \r\n\r\n7.1 关于软件安装 \r\n7.2 软件安装步骤 \r\n7.2.1 安装前的准备工作 \r\n7.2.2 关于演示数据库 \r\n7.2.3 几个安装决策 \r\n7.3 创建一个数据库 \r\n7.3.1 Oracle Database Configuration Assistant的使用方法 \r\n7.3.2 软件安装工作完成之后 \r\n7.3.3 数据库创建出来以后 \r\n7.4 表空间及其结构 \r\n7.4.1 SYSTEM表空间 \r\n7.4.2 回退表空间或撤销表空间 \r\n7.4.3 TEMP或TEMPORARY表空间 \r\n7.4.4 TOOLS表空间 \r\n7.4.5 USERS表空间 \r\n7.4.6 DATA和INDEX表空间 \r\n7.4.7 设置表空间的长度 \r\n7.4.8 表空间的默认存储子句 \r\n7.5 init.ora文件与SPFILE.ora文件 \r\n7.6 实例与数据库 \r\n7.7 SGA的组成 \r\n7.8 关于演示表\r\n\r\n第8章 数据库的基本管理工作 \r\n\r\n8.1 如何对表空间进行管理 \r\n8.1.1 如何创建和删除表空间\r\n8.1.2 如何在表空间里创建对象 \r\n8.1.3 如何调整表空间的尺寸 \r\n8.1.4 表空间的自动扩展功能 \r\n8.1.5 临时表空间与永久表空间\r\n8.1.6 可移植的表空间 \r\n8.2 用文档记录数据库 \r\n8.3 在数据库里创建对象\r\n8.3.1 如何创建表 \r\n8.3.2 关系表的创建参数 \r\n8.3.3 如何创建一个复杂的表 \r\n8.3.4 如何创建索引 \r\n8.3.5 如何创建用户 \r\n\r\n第9章 DBA的日常工作 \r\n\r\n9.1 日常监控工作 \r\n9.1.1 警报日志 \r\n9.1.2 LISTENER.LOG文件 \r\n9.1.3 重做日志的状态 \r\n9.1.4 碎片 \r\n9.1.5 回退段\r\n9.1.6 监控回退段的尺寸 \r\n9.1.7 调整回退段区的尺寸\r\n9.1.8 区的使用情况 \r\n9.1.9 剩余空间 \r\n9.1.10 跟踪文件\r\n9.2 用户会话的状态 \r\n9.3 监控对象的修改情况 \r\n\r\n第三部分 保护数据库\r\n\r\n第10章 Oracle安全技术 \r\n\r\n10.1 数据库的内部安全措施 \r\n10.1.1 权限 \r\n10.1.2 角色的创建 \r\n10.1.3 同义词的创建\r\n10.1.4 视图的创建 \r\n10.2 应用程序级安全措施 \r\n10.2.1 应用程序的保护 \r\n10.2.2 虚拟专用数据库 \r\n10.2.3 创建一个VPD \r\n10.2.4 对数据库列进行加密 \r\n10.2.5 对列数据进行加密\r\n10.3 关于审计 \r\n10.3.1 尝试登录审计 \r\n10.3.2 操作行为审计 \r\n10.3.3 对象审计 \r\n10.3.4 审计跟踪的保护 \r\n10.4 数据库的外部安全 \r\n10.4.1 网络安全措施 \r\n10.4.2 Oracle Net和Oracle Advanced Security Option \r\n\r\n第11章 可用性 \r\n\r\n11.1 与可用性有关的基本概念 \r\n11.2 要预防的内容 \r\n11.2.1 物理性故障 \r\n11.2.2 逻辑性故障 \r\n11.3 数据恢复工作的分类 \r\n11.3.1 数据恢复 \r\n11.3.2 实例恢复 \r\n11.3.3 介质恢复 \r\n11.4 数据备份工作的分类 \r\n11.4.1 物理备份 \r\n11.4.2 Recovery Manager \r\n11.4.3 逻辑备份 \r\n11.5 数据库功能 \r\n11.5.1 平均恢复时间目标值 \r\n11.5.2 回闪查询 \r\n11.5.3 LogMiner \r\n11.5.4 复制 \r\n11.6 Data Guard与备用数据库 \r\n11.6.1 体系结构与术语 \r\n11.6.2 Data Guard的配置选项 \r\n11.6.3 使用Data Guard的好处 \r\n11.7 Real Application Clusters \r\n11.8 Real Application Clusters Guard \r\n11.9 与可用性有关的其他功能 \r\n11.9.1 TAF功能 \r\n11.9.2 数据库对象的联机重定义功能 \r\n11.9.3 可恢复的空间分配功能 \r\n\r\n第四部分 优化数据库\r\n\r\n第12章 服务器性能 \r\n\r\n12.1 什么是性能管理 \r\n12.1.1 80/20法则 \r\n12.1.2 什么是响应时间 \r\n12.1.3 问题出在什么地方\r\n12.1.4 响应时间与吞吐量\r\n12.2 关键业务事务 \r\n12.2.1 事务 \r\n12.2.2 制定服务级协议 \r\n12.2.3 案例总结之一:XYZ公司的主动式优化工作 \r\n12.3 性能问题的诊断 \r\n12.3.1 小窍门:如何度过最初的5分钟 \r\n12.3.2 问正确的问题 \r\n12.3.3 案例总结之二:XYZ公司的被动式优化工作 \r\n12.3.4 诊断工作的第一步:数据库服务器内的优化 \r\n12.3.5 计算总响应时间 \r\n12.4 总响应时间的优化 \r\n12.4.1 对CPU时间进行优化 \r\n12.4.2 对等待时间进行优化\r\n12.4.3 案例总结之三:解决XYZ公司的性能问题 \r\n12.5 性能问题的常见原因 \r\n12.5.1 应用程序和数据库设计缺陷 \r\n12.5.2 低效率的数据库布局和存储配置 \r\n12.5.3 应用程序的db_block_size参数设置不当 \r\n12.5.4 数据库对象设置不当 \r\n12.5.5 回退段的尺寸和数量设置不当 \r\n12.5.6 低劣的应用程序设计方案 \r\n\r\n第13章 Oracle软件工具 \r\n\r\n13.1 SQL语句的优化:Explain Plan / TKPROF / Autotrace \r\n13.1.1 优化器 \r\n13.1.2 SQL语句的优化 \r\n13.1.3 Explain Plan \r\n13.1.4 TKPROF:SQL跟踪工具 \r\n13.1.5 autotrace \r\n13.2 Oracle Enterprise Manager \r\n13.2.1 OEM的基本功能 \r\n13.2.2 与数据库管理工作有关的OEM选项 \r\n13.2.3 其他工具包 \r\n13.3 STATSPACK \r\n13.3.1 STATSPACK的用途 \r\n13.3.2 如何安装STATSPACK \r\n13.4 DBMS_STATS \r\n13.5 存储概要 \r\n\r\n第五部分 附录\r\n\r\n附录A 术语表 \r\n附录B 资源
newbie
/n[y]oo'bee/ (源自英国公立学校和军队中的俚语,意思是“新手”)一个还没有多少经验的新用户。
尝试新事物总是让人有点战战兢兢。无论是进入一所新学校,找到一份新工作,还是学习一项新技能,在激动之余,人们多少会感到一丝畏惧,多少会有一种不知所措的感觉—你会自问“我怎样才能学会这个东西呢?”我们把这种感觉称为“新生综合症”,人们在开始尝试一项新的冒险时都会有这种感觉。我们也不例外,在很多方面,我们也是一群“newbie”。
在1991年的时候,Rachel Carmichael还是一名刚出道的Oracle DBA,当时的她还根本没见过Oracle数据库,更别提使用了。当时的Marlene Theriault虽然已经在Oracle数据库上工作过一段时间,但Oracle公司推出的新版本Oracle 6却几乎完全改写了整套数据库软件,这使她也再次变成了一名不折不扣的“newbie”。但她们是幸运的,就在那一年的3月,有一些人发起并组建了一个名为Oracle User Resources(Oracle用户资源)的团体,并在美国首都华盛顿举行了第一届East Coast Oracle(美国东海岸Oracle用户大会,简称ECO大会)。后人把这次大会称为“巫师们的聚会”。
在宾馆的接待大堂里,Marlene与站在自己身边的另一位女士交谈了起来。那位女士就是Rachel。这么多年以后,她们俩人都回忆不起那次谈话到底是怎样开始的了,也忘了当时到底说了些什么。她们俩人现在能够回忆起来的只有一件事:那次谈话不知是谁先接了一句下茬!从那时起,这两位的话匣子就一直没有关上过。
又过了几年之后,Oracle用户之间的交流渠道逐渐多了起来,这俩人通过“蜗牛邮件”(指通过邮局寄送的信件)和电话互相帮助着学习掌握新版本的Oracle软件—因为一直期待能有人来帮助自己学习一些新的东西,所以她们从没有对这种交流方式感到过厌烦。
随着知识的增加,她们开始以“老”用户的身份重新出现在Oracle社团里,并开始在各种研讨会上尝试帮助其他更“新”的“newbie”们。在1996年举行的IOUW年会上,她们的老朋友Kevin Loney(他也是Marlene和Rachel后来好几本书的合作作者)介绍她们认识了Jim Viscusi。他们三个人通过电子邮件保持着联系,以这种方式互相解答对方的疑问并丰富了各自的知识。而Marlene和Rachel则把ECO大会当做了她们的娘家,每年都要结伴参加。
这两位女士在1997年创办了一组名为“DBA 101:A Refreshed Course”的培训课程。她们把课程中使用的培训教材总结成论文,并拿到好几个大会上进行宣讲。她们的培训课程和宣讲材料大受人们的欢迎。这使她们逐渐认识到:要想尽可能多地帮助人,最好的办法就是把课程讲义写成一本书。正好,Osborne/McGraw-Hill出版社与她们的这一想法不谋而合。事情的结局你已经看到了—它就是你现在拿在手里的这本书。Jim则因为在性能优化和Oracle数据库管理方面具有丰富的知识而成为本书的第三作者。
看到这里,大家可能已经发现这段文字不是一个“普通”的书籍前言。讲了半天,它也没说到“这本书包含着什么样的内容”或者“这本书到底是(或者不是)什么”。这是因为,我们想让读者知道我们都是些什么样的人,而这本书又是怎样问世的。虽然大家关心的并不是“我们是谁”和“这本书是怎样写成的”,但我们认为让读者了解一些这方面的事情也是有好处的。请记住,你并不孤独,在你学习这本书的过程中,我们将一直陪伴着你。
言归正传,我们现在就来具体地说说这本书。大家在这段前言里感受到的风格将贯穿本书的始终。我们的目标是想把这本书写成一本即使是Marlene的老母亲(她已经93岁了)也能看懂并理解其(大部分)内容的书。虽然这不是一本循规蹈矩的Oracle教科书,但里面仍包含了许多有相当深度的概念,我们只是把它们以一种更容易了解的方式讲述出来而已—至少我们希望如此。
请记住,每个人都有自己不熟悉的东西,每个人都会遇到自己解答不了的问题。换句话说,我们在很多事情面前都只能是一个“newbie”。所以,如果你想知道成为一名Oracle DBA都需要具备和掌握哪些东西,就请坐下来并打开这本书—而我们就在你的身边!