循序渐进Oracle

当前位置:首页 > 网络编程 > 数据库 > 循序渐进Oracle

出版社:人民邮电出版社
出版日期:2007-9
ISBN:9787115165770
作者:盖国强
页数:468页

媒体关注与评论

  作为ITPUB社区的创建者,我亲眼目睹了作者的成长过程。从参与ITPUB技术丛书第一册的主编工作,到自己独立撰写了两本优秀的Oracle数据库专著;从初出茅庐的年轻人到Oracle ACE级别的大师。印证了传统的人才培育手段被互联网所颠覆,通过网络孕育优秀技术专家的新时代已经来临。  黄志洪(tigerfish)  ITPUB论坛创始人  eygle(盖国强)在北京将Oracle培训做得有声有色时,我就想去取经。直到2003年底我回到北京,才得以相见,这段日子我们经常切磋技术,无所不谈,我收获颇丰。eygle对Oracle技术严谨、勤奋且有天分,希望能将多年所得不断地出版成书,造福于广大Oracle爱好者。  冯春培(biti_rainy)  阿里巴巴首席DBA、Oracle ACE  eygle是一个热情奔放、乐于助人的小伙子,热衷于Oracle技术,并将学到的知识和职业生涯中积累的自有经验结合起来,通过Blog和图书与业界分享。eygle是国内享有很高信任度的Oracle专家之一,对于很多技术问题, 总能经过深层次的思考,给出专业和全面的答案,相信这本书会再一次带你领略Oracle的佳境。  楼方鑫(d.c.b.a)  Oracle ACE、AUL作者

内容概要

盖国强,网名eygle,Oracle ACE,ITPUB Oracle管理版版主,ITPUB论坛超级版主,《程序员》杂志特邀专家顾问。曾任职于某大型国企,开发基于Oracle数据库的大型ERP系统;后任职于北京某电信增值服务商企业,从事数据库的规划与运维支持。实践经验丰富,深入研究Oracle内部技术,长于数据库诊断、性能调整与SQL优化等。高级培训讲师,曾主讲ITPUB DBA培训及ITPUB高级性能调整等课程。. 2007年3月,被Oracle公司授予Oracle ACE称号。

书籍目录

第1章 Oracle数据库的创建1.1 使用DBCA创建数据库1.1.1 DBCA的启动1.1.2 配置数据库选项 1.2 数据库创建的脚本 1.2.1 数据库创建脚本 1.2.2 创建的起点 1.2.3 ORADIM工具的使用 1.2.4 ORACLE_SID的含义1.2.5 INSTANCE_NAME的含义及作用 1.2.6 Oracle的口令文件 1.2.7 脚本的执行1.2.8 DB_NAME参数和INSTANCE_NAME参数1.2.9 sql.bsq文件与数据库创建1.2.10 数据文件及字典的创建 1.3 使用模板创建数据库 1.3.1 启动创建 1.3.2 数据库创建模板 1.3.3 RMAN的引入 1.3.4 克隆数据库 1.3.5 可传输表空间 1.3.6 跨平台表空间传输 1.3.7 最后的脚本 第2章 从OEM到iSQL*Plus 2.1 Oracle的OEM工具 2.1.1 传统的OEM工具 2.1.2 安装Oracle10g Database Control选件2.1.3 手工配置DBControl 2.1.4 启停DBConsole服务 2.1.5 关于DBControl乱码的解决 2.1.6 登录及口令文件认证 2.1.7 通过DBControl登录数据库 2.1.8 定义自动邮件告警 2.2 Oracle的iSQL*Plus工具 2.2.1 Oracle 9i的iSQL*Plus 2.2.2 Oracle 10g的iSQL*Plus工具 第3章 Oracle的字符集 3.1 字符集的基本知识 3.2 数据库的字符集 3.3 字符集文件及字符支持 3.4 导入导出及转换3.5 字符集的更改 3.6 识别导出文件的字符集 3.7 乱码的产生 3.8 “靠”字的困惑 3.9 自定义字符的使用 3.10 更改字符集的内部方式 3.11 字符集更改的案例 第4章 用户的创建与管理 第5章 表空间和数据文件 第6章 临时表空间和临时文件 第7章 备份与恢复 第8章 Oracle的闪回特性 第9章 Oracle的数据加载与卸载 第10章 从Statspack到ADDM 第11章 故障诊断及分析方法

编辑推荐

《循序渐进Oracle:数据库管理、优化与备份恢复》在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性。《循序渐进Oracle:数据库管理、优化与备份恢复》适用于数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员,也可以作为各大中专院校相关专业师生的参考用书和相关培训机构的培训教材。...

作者简介

《循序渐进Oracle:数据库管理、优化与备份恢复》从基础知识入手,详细讨论了Oracle数据库的创建、OEM及iSQLPIus等工具的使用、Oracle的字符集知识、用户的创建与管理、表空间和数据文件、临时表空间和临时文件、备份与恢复、Oracle的闪回特性、Oracle的数据加载与卸载、Statspack与ADDM工具、故障诊断及分析方法等热点问题,并通过大量取自实际工作现场的实例,力图将Oracle知识全面、系统、深入地展现给读者。
继《深入浅出Oracle——DBA入门、进阶与诊断案例》后的又一力作。.
强调“由点到线再及面”的学习思路。..
融合了资深专家数年工作实践和宝贵经验。
根据DBA所需具备的从业素质设计内容结构。

图书封面


 循序渐进Oracle下载 更多精彩书评



发布书评

 
 


精彩书评 (总计2条)

  •     从内容上讲,此书是对《深入浅出ORACLE》的一个补充,具体的学习路线图可以参考作者的主页。作者表示在难度上依据读者的意见做了一些调整,但实际上并不是一本面向初学者的书,读了第一章你就知道了,呵呵。当然细节方面确实做了一些妥协,比如说测试环境换成了windows。。。我觉得最不让人满意的章节是备份恢复,虽然eygle一再强调了备份恢复的重要性,但是这一章显然是没有编排好,讲得很凌乱,没有成为一个知识体系,要知道书名可是循序渐进啊,呵呵。。。。不过其中有些小节还是蛮有参考价值的,比如说resetlogs和不完全恢复。另外,书中有一些偏冷门但是却又很重要的内容,比如说字符集。个人感觉eygle在写书方面还是没摆脱写blog的风格,不乏精彩之处,但是缺乏连贯。
  •     循序渐进Oracle注1:该笔记为未完成版(最后修改日期为2010.4.13)注2:转帖请注明出处(笔记作者:城市行走者)第1章 ORACLE数据库的创建1.1 使用DBCA创建数据库1.2 数据库创建的脚本(略)1.3 使用模板创建数据库第2章 从OEM到ISQL*PLUS2.1 ORACLE的OEM管理工具2.1.1 传统的OEM工具2.1.2 安装Oracle 10g Databse Control2.1.3 手工配置DBControl(略)2.1.4 启动Database Control端口监控程序2.1.5 关于DBControl乱码的解决2.1.6 登录及口令文件认证2.1.7 通过DBControl管理数据库2.2 ORACLE的ISQL*PLUS(略)第3章 ORACLE的字符集3.1 字符集的基本知识3.2 数据库的字符集3.3 字符集文件以及字符支持3.4 导入导出及转换3.5 字符集的更改(略)3.6识别导出文件的字符集3.7 乱码的产生(略)3.8 “靠”字的困惑(略)3.9 自定义字符的使用(略)3.10 更改字符集的内部方式(略)3.11 更改字符集的案例(略)第4章 用户的创建与管理4.1 数据库的连接4.2 用户的创建4.3 权限的授予4.4 外部认证4.5 如何切换用户4.6 通过代理用户连接数据库(略)第5章 表空间和数据文件5.1 表空间的创建5.1.1 创建表空间5.1.2 创建用户5.1.3 进行相应的权限授予5.2 表空间管理技术5.2.1 字典管理表空间(该技术已过时)5.2.2 本地管理表空间5.3 段空间管理技术5.3.1手工段空间管理(MSSM)该技术已过时5.3.2自动段空间管理(ASSM)5.4 ORACLE的存储结构5.4.1 表空间信息(dba_tablespaces)5.4.2 数据文件信息(dba_data_files)5.4.3 数据段信息(dba_segments)5.4.4 区间信息(dba_extents)5.4.5 度量信息(dba_thresholds)5.4.6 突出告警信息(dba_outstanding_alerts)5.4.7 告警历史信息(dba_alert_history)5.5 使用DB CONTROL进行空间管理5.6 SYSTEM表空间5.7 SYSAUX表空间5.7.1 SYSAUX表空间及其组件5.7.2 SYSAUX空间组建的转移5.7.3 SYSAUX的作用与意义5.8 BIGFILE和SMALLFILE表空间技术5.9 ROWID与RDBA的转换5.9.1 Oracle的ROWID及数据库限制5.9.2 BigFile表空间的ROWID5.9.3 使用dbms_rowid包获得ROWID的详细信息5.10 使用OMF管理数据文件5.11 ASM自动存储管理(略)第6章 临时表空间和临时文件6.1 临时表空间原理6.2 ORACLE 8I的临时表空间6.3 ORACLE 9I的临时表空间6.4 ORACLE 9I中如何重建与切换临时表空间6.5 ORACLE 10G的临时表空间组6.6 ORACLE 10G使用RMAN回复临时表空间的增强6.7 临时表空间过度扩张的问题解决6.8 从V$SORT_USAGE到V$TEMPSEG_USAGE6.9 临时文件FILE#和DB_FILES的关系6.10 LOB对象与临时段6.11 临时文件和稀疏文件第7 章 备份与恢复7.1 备份与恢复概述7.2 备份方法7.3 恢复原理7.4 数据库的运行模式7.5 ORACLE 10G的闪回恢复区7.6 逻辑备份与恢复7.6.1 使用EXP进行逻辑备份7.6.2 使用IMP进行逻辑恢复7.6.3 使用Oracle 10g数据泵(EXPDP/IMPDP) (暂时用不到)7.7 物理备份与恢复7.7.1 冷备份(也叫脱机备份、一致性备份)7.7.2 热备份(也叫联机备份、不一致备份)7.7.3 RMAN的备份与恢复1. RMAN备份保留策略2. 常用的crosscheck命令3. 使用NOCATLOG方式进行备份4. Resetlogs/Noresetlogs与控制文件(P275)5. 数据文件头信息与数据库恢复6. 使用控制文件快照辅助恢复7. 用RMAN的Plus archivelog选项简化数据库备份8. 使用RMAN对控制文件进行备份9. RMAN的镜像COPY功能10. RMAN基于镜像COPY的表空间恢复11. 使用RMAN进行完全恢复12. 使用RMAN的不完全数据恢复13. 使用RMAN对ASM文件的备份与恢复14. 使用RMAN对RAC环境的备份15. Nocatalog方式的备份方案制定16. 目录(Catalog)数据库17. 使用Catalog数据库对目标数据库进行备份18. 完全恢复与Resetlogs19. 使用RMAN进行增量备份20. Oracle 10g Block Change Tracking选项第1章 Oracle数据库的创建在安装的最后一项是“仅安装数据库软件”,建议大家选择此项,好处是将软件安装和数据库创建分离开来。1.1 使用DBCA创建数据库在书上本节做了一些标记——关于创建过程中的重要步骤。大部分选项可以保留默认值。需要注意的是数据块大小的设置和字符集的选择。1.2 数据库创建的脚本(略)1.3 使用模板创建数据库第2章 从OEM到iSQL*Plus对于Oracle管理工具,除去第三方管理工具,官方提供的有:OEM(Oracle Enterprise Manager)和SQL*Plus。2.1 Oracle的OEM管理工具在10g之前(比包括10g),OEM是基于Java的客户端应用。从10g开始,Oracle引入了全新的基于Web方式发布的Enterprise Manager,并且分为了两个产品:Database Control和Grid Control。2.1.1 传统的OEM工具2.1.2 安装Oracle 10g Databse Control2.1.3 手工配置DBControl(略)2.1.4 启动Database Control端口监控程序如果希望启动、停止Database Control进程,需要使用emctl实用程序。C:\>emctl start dbconsoleC:\>emctl stop dbconsoleC:\>emctl status dbconsoleC:\>set oracle_sid=OCP10GC:\>emctl status dbconsoleOracle Enterprise Manager 10g Database Control Release 10.1.0.2.0Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved.http://lenovo-fe3b8a55:5500/em/console/aboutApplicationOracle Enterprise Manager 10g is running.--------------------------------------------------------------Logs are generated in directory D:\oracle\product\10.1.0\db_1/lenovo-fe3b8a55_OCP10G/sysman/log一旦这个进程运行中,就可以使用如下的URL来连接数据库http://<host.domain>:<port>/em其中默认的端口是5500。2.1.5 关于DBControl乱码的解决解决乱码的一个临时性方案是,将客户端浏览器的首选语言选项设置为英文。2.1.6 登录及口令文件认证P69SQL> show parameter passNAME TYPE VALUE------------------------------------ ----------- ------------------------------remote_login_passwordfile string NONESQL> alter system set remote_login_passwordfile=exclusive scope=spfile;2.1.7 通过DBControl管理数据库2.2 Oracle的iSQL*Plus(略)第3章 Oracle的字符集select name,value from v$parameter where name like '%nls%';3.1 字符集的基本知识如果从头说起,字符集最早的编码方案来自于ASCII,这也是最常见的编码方式。该方案起源于20世纪60年代初期...历史:ASCII(1967)-远远不能满足计算机发展的需要-Unicode(1991)。集体参考P85-863.2 数据库的字符集P86字符集在创建数据库时指定,在创建后一般不能修改,所以在创建数据库时能否选择一个正确的字符集就显得尤为重要。3.3 字符集文件以及字符支持Oracle的全球支持是通过Oracle NLS Runtime Library(NLSRTL)来实施的,NLS运行库通过独立的函数来完成运行时与语言相关的转换及控制。在Oracle 9i中,该环境变量为ORA_NLS33在Oracle 10g中,该环境变量变更为ORA_NLS10。通常缺省的,可以不设置这个变量。Locale Builder工具SQL> select dump('盖') from dual;DUMP('盖')---------------------Typ=96 Len=2: 184,199SQL> select to_char(184,'xx'),to_char(199,'xx')from dual;TO_CHAR(184,'XX') TO_CHAR(199,'XX')----------------- -----------------b8 c7SQL> select to_number('b8c7','xxxxxx') from dual;TO_NUMBER('B8C7','XXXXXX')--------------------------47303SQL> select chr(47303) from dual;CHR(47303)----------盖作者在这里给的例子很好:直接明了。3.4 导入导出及转换导入导出(IMP/EXP)是一个常用的数据迁移和转换工具,其导出文件具有平台无关性。P92,例子未看在使用传统的导入导出工具(IMP/EXP)时,最好把客户端字符集(查询命令为#env |grep NLS_LANG)设置的和数据库系相同。这样可以在导出时避免不必要的数据转换,导出文件将和数据库具有相同的字符集,数据得一万好备份。从10g开始,可以使用数据泵进行数据库导入导出,不再存在以前EMP/IMP的字符集转换问题。3.5 字符集的更改(略)3.6识别导出文件的字符集P101 例子未看UNIX环境下的命令: cat expdat.dmp |od -x |head3.7 乱码的产生(略)3.8 “靠”字的困惑(略)3.9 自定义字符的使用(略)3.10 更改字符集的内部方式(略)3.11 更改字符集的案例(略)第4章 用户的创建与管理4.1 数据库的连接4.2 用户的创建P120盖国强的这里的例子很好(略)创建用户的最简单语法如下:CREATE USER <username> IDENTIFIED BY <password>;这个字句已经过于简单,省略了空间分配的字句(请注意作为一个DBA,要尽量避免这样的语句),通常这是不推荐的写法,可是很多使用者就是这样创建用户的。需要理解一下的是,这个语句在不同的Oracle版本中会有不同的结果。Oracle 8i:略Oracle 9i:略Oracle 10g中:Oracle最终解决了这个问题,这得益于全局缺省表空间的引入。SQL> select * from v$version where rownum<2;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - ProdSQL> create user eygle01 identified by eygle01;User createdSQL> SQL> select username,default_tablespace,temporary_tablespace from dba_users2 where username='EYGLE01';USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE------------------- ---------------------- -----------------EYGLE01 USERS TEMP由于一直以来存在数据空间的分配和使用问题,我们建议在创建用户时就为用户制定缺省的表空间完善后的语句为:CREATE USER <username> IDENTIFIED BY <password>DEFAULT TABLESPACE <tablespace_name>TEMPORARY TABLESPACE <tablespace_name>;4.3 权限的授予P122盖国强的这里的例子很好——连贯、顺序好:先举例,后理论;先重点,后细节。不像其他书——上来先是讲什么是权限,权限的分类以及其中的细节(比如转授),(看到这里已经有点晕了)最后才是最重要的实例。@ > conn eygle01/eygle01ERROR:ORA-01045: user EYGLE01 lacks CREATE SESSION privilege; logon denied如果用户需要连接数据库并创建数据表,那么至少需要获得至少两个授权:CREATE SESSION 和CREATE TABLE。grant create session to <username>;grant create table to <username>;这里需要继续授予用户使用其表空间的权限SQL> alter user eygle01 quota 10M on users;User alteredOracle的权限可以分为两种:系统权限对象权限查询权限,通过视图dba_sys_privsselect * from dba_sys_privs --(有488条记录)进一步,可以查询和TABLE有关的权限select distinct privilege from dba_sys_privswhere privilege like '%TABLE';-----------PRIVILEGE1 ALTER ANY TABLE2 BACKUP ANY TABLE3 COMMENT ANY TABLE4 CREATE ANY TABLE5 CREATE TABLE6 DELETE ANY TABLE7 DROP ANY TABLE8 FLASHBACK ANY TABLE9 INSERT ANY TABLE10 LOCK ANY TABLE11 SELECT ANY TABLE12 UNDER ANY TABLE13 UPDATE ANY TABLE------------13 rows selected 可以想象,如果数据库中存在大量用户,如果我们将这些权限一一授予这些用户,操作将会极其繁琐,于是Oracle设计了一个新的技术:角色(Role)。定义:角色是一系列权限的集合。(有个权限的概念后)通常一个用户创建之后,我们授予用户两个角色就足够使用了,这两个角色是:CONNECT和RESOURCE。(Oracle在10g版本中对角色重新进行了定义)grant conect,resource user_name;SQL> select grantee,privilege from dba_sys_privs where grantee='RESOURCE';GRANTEE PRIVILEGE------------------------------ ----------------------------------------RESOURCE CREATE TYPERESOURCE CREATE TABLERESOURCE CREATE CLUSTERRESOURCE CREATE TRIGGERRESOURCE CREATE OPERATORRESOURCE CREATE SEQUENCERESOURCE CREATE INDEXTYPERESOURCE CREATE PROCEDURE8 rows selectedSQL> select grantee,privilege from dba_sys_privs where grantee='CONNECT';GRANTEE PRIVILEGE------------------------------ ----------------------------------------CONNECT CREATE VIEWCONNECT CREATE TABLECONNECT ALTER SESSIONCONNECT CREATE CLUSTERCONNECT CREATE SESSIONCONNECT CREATE SYNONYMCONNECT CREATE SEQUENCECONNECT CREATE DATABASE LINK8 rows selected现在回顾一下,为了创建一个可以访问数据库的用户,步骤如下:@ > conn /as sysdba已连接。SYS AS SYSDBA@ OCP10G> CREATE USER eygle02 IDENTIFIED BY eygle022 DEFAULT TABLESPACE users3 TEMPORARY TABLESPACE temp_new;用户已创建。SYS AS SYSDBA@ OCP10G> grant connect,resource to eygle02;授权成功。SYS AS SYSDBA@ OCP10G> conn eygle02/eygle02已连接。EYGLE02 @ OCP10G> create table eygle02_tab (name varchar2(20));表已创建。表已创建。注意:此处不再需要对空间进行授权,因为在RESOURSE角色的授予过程中,Oracle潜在的给用户分配了无限制使用默认表空间的权限。SQL> select * from dba_sys_privs where grantee='EYGLE02';GRANTEE PRIVILEGE ADMIN_OPTION--------------------- ------------------------- ------------EYGLE02 UNLIMITED TABLESPACE NO注意:具备了这个权限,用户也获得了这所有表空间的不限制空间的使用的权限,现在用户eygle02甚至可以将表建立在SYSTEM表空间中:EYGLE02 @ OCP10G> create table eygle02_tab_on_system tablespace system as select * from user_tables;表已创建。EYGLE02 @ OCP10G> select table_name,tablespace_name from user_tables;TABLE_NAME TABLESPACE_NAME------------------------------ ------------------------------EYGLE02_TAB_ON_SYSTEM SYSTEMEYGLE02_TAB USERS UNLIMITED TABLESPACE这一权限是为了向后兼容而保留的,如果使用不当,则会对数据库造成严重影响。P126,并参考备份与恢复一章。为了更严谨的管理,可以回收用户的UNLIMITED TABLESPACE权限,然后对用户的空间进行单独授权。EYGLE02 @ OCP10G> conn /as sysdba已连接。SYS AS SYSDBA@ OCP10G> revoke UNLIMITED TABLESPACE from eygle02;撤销成功。SYS AS SYSDBA@ OCP10G> alter user eygle02 quota unlimited on users;用户已更改。SQL> select tablespace_name,username,max_bytes from dba_ts_quotas where username='EYGLE02';TABLESPACE_NAME USERNAME MAX_BYTES------------------------ ------------------------------- ----------USERS EYGLE02 -1这时,再企图在其他表空间创建对象时,会收到错误提示:SYS AS SYSDBA@ OCP10G> conn eygle02/eygle02已连接。EYGLE02 @ OCP10G> create table eygle02_tab01_on_system tablespace system as select * from user_tables;create table eygle02_tab01_on_system tablespace system as select * from user_tables*第 1 行出现错误:ORA-01536: 超出表空间 'SYSTEM' 的空间限额4.4 外部认证SQL> show parameter REMOTE_OS_AUTHENTNAME TYPE VALUE----------------------------- ----------------- ---------remote_os_authent boolean FALSEREMOTE_OS_AUTHENT应该被设置为FALSE,以防止远程系统认证用户的登录。4.5 如何切换用户P128很实际的例子在DBA管理数据库的过程中,经常需要为其他用户进行维护,这需要我们能够进行用户切换。4.6 通过代理用户连接数据库(略)第5章 表空间和数据文件5.1 表空间的创建5.1.1 创建表空间SQL> create tablespace eygle032 datafile 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP10G\EYGLE03.DBF'3 size 30M autoextend on next 3M maxsize 100M4 extent management local uniform size 128K5 segment space management auto;Tablespace created查询表空间信息,通过视图dba_tablespaces。SQL> select tablespace_name,block_size,contents,extent_management,allocation_type,2 segment_space_management from dba_tablespaces3 where tablespace_name='EYGLE03';TABLESPACE_NAME BLOCK_SIZE CONTENTS EXTENT_MANAGEMENT ALLOCATION_TYPE SEGMENT_SPACE_MANAGEMENT------------------------------ ---------- --------- ----------------- --------------- ------------------------EYGLE03 8192 PERMANENT LOCAL UNIFORM AUTO5.1.2 创建用户SQL> CREATE USER eygle03 IDENTIFIED BY eygle032 DEFAULT TABLESPACE eygle033 TEMPORARY TABLESPACE temp_new;User created查询用户信息,通过视图dba_users。SQL> select username,user_id,password,default_tablespace,temporary_tablespace2 from dba_users where username='EYGLE03';USERNAME USER_ID PASSWORD DEFAULT_TABLESPACE TEMPORARY_TABLESPACE------------------------------ ---------- ------------------------------ ------------------------------ ------------------------------EYGLE03 34 DC8CDF566E9827F6 EYGLE03 TEMP_NEW5.1.3 进行相应的权限授予SQL> grant connect,resource to eygle03;Grant succeededSQL> select * from dba_sys_privs where grantee='EYGLE03';GRANTEE PRIVILEGE ADMIN_OPTION------------------------------ ---------------------------------------- ------------EYGLE03 UNLIMITED TABLESPACE NOSQL> revoke unlimited tablespace from eygle03;Revoke succeededSQL> alter user eygle03 quota unlimited on eygle03;User altered在创建表空间的过程中,有两个子句需要特别注意,这两个子句是extent management local uniform size 128K和segment space management auto。这两个子句代表了Oracle的两次重大技术改进,接下来一起探索Oracle的这些改变。作者从实际例子入手,好方法!(不是采取一般教科书上的从理论到实践的顺序)5.2 表空间管理技术Oracle主要的表空间管理技术主要有两种:一种是8i以前(不包括8i)的字典管理表空间(DMT);一种是从8i开始的本地管理表空间(LMT)技术。由于区间(extent)是Oracle创建对象时的最小分配单元,所以表空间管理实际上就是针对区间的管理。5.2.1 字典管理表空间(该技术已过时)定义P1345.2.2 本地管理表空间本地化管理,就是指Oracle不再利用数据字典表来记录表空间里的区间的使用状况,而是在每个表空间的数据文件头部加入了一个位图区域,在其中记录每一个区间的使用状况。在使用本地管理表空间时,可以选择更具体的空间分配方式:自动分配(AUTOALLOCATE)或者统一尺寸(UNIFORM)。如果选者同意尺寸,可以指定每个区间(extent)的大小,如不指定具体的大小,默认为每个区间分配1024KB。EYGLE03 @ OCP10G> create table eygle03_tab as select * from user_users;表已创建。SQL> select owner, tablespace_name, segment_name, extent_id, block_id, blocks from dba_extents where tablespace_name='EYGLE03';OWNER TABLESPACE_NAME SEGMENT_NAME EXTENT_ID BLOCK_ID BLOCKS------------------------------ ------------------------------ -------------------------------------------------------------------------------- ---------- ---------- ----------EYGLE03 EYGLE03 EYGLE03_TAB 0 9 16注意:BLOCKS字段的定义是Size of the extent in ORACLE blocks。即,16×8KB=128KB。具体的表空间的定义在5.1.1小节。当创建第一张数据表时,分配的block_id是从第9个block开始的,也就是说前8个block被系统保留了。通过DUMP方式可以了解保留块的内容P138,略。5.3 段空间管理技术SQL> select distinct(segment_type) from dba_segments;SEGMENT_TYPE------------------CLUSTERINDEXINDEX PARTITIONLOB PARTITIONLOBINDEXLOBSEGMENTNESTED TABLEROLLBACKTABLETABLE PARTITIONTYPE2 UNDO11 rows selectedOracle主要的段空间管理技术主要有两种:一种是9i以前(不包括9i)的手工段空间管理(MSSM,Manual Segment Space Management);一种是从9i开始的自动段空间管理(ASSM)技术。5.3.1手工段空间管理(MSSM)该技术已过时5.3.2自动段空间管理(ASSM)通过DUMP方式可以了解保留块的内容。略P143。5.4 Oracle的存储结构5.4.1 表空间信息(dba_tablespaces)10g中增加了retention和bigfile字段SQL> select tablespace_name, block_size, extent_management EXT_MAN,2 segment_space_management SEG_MAN, contents, retention from dba_tablespaces;TABLESPACE_NAME BLOCK_SIZE EXT_MAN SEG_MAN CONTENTS RETENTION------------------------------ ---------- ---------- ------- --------- -----------SYSTEM 8192 LOCAL MANUAL PERMANENT NOT APPLYUNDOTBS1 8192 LOCAL MANUAL UNDO NOGUARANTEESYSAUX 8192 LOCAL AUTO PERMANENT NOT APPLYUSERS 8192 LOCAL AUTO PERMANENT NOT APPLYEYGLE 8192 LOCAL MANUAL PERMANENT NOT APPLYTEMP_NEW 8192 LOCAL MANUAL TEMPORARY NOT APPLYEYGLE02 8192 LOCAL AUTO PERMANENT NOT APPLYEYGLE03 8192 LOCAL AUTO PERMANENT NOT APPLYEYGLE04 8192 LOCAL AUTO PERMANENT NOT APPLYEYGLE05 8192 LOCAL AUTO PERMANENT NOT APPLY10 rows selected5.4.2 数据文件信息(dba_data_files)SQL> select file_id, file_name, tablespace_name,round(bytes/1024/1024,2) MB from dba_data_files;FILE_ID FILE_NAME TABLESPACE_NAME MB-----------------------------------------------------------------1 D:\...\SYSTEM01.DBF SYSTEM 3502 D:\...\UNDOTBS01.DBF UNDOTBS1 2003 D:\...\SYSAUX01.DBF SYSAUX 2304 D:\...\USERS01.DBF USERS 55 D:\...\EYGLE.DBF EYGLE 106 D:\...\EYGLE02.DBF EYGLE02 307 D:\...\EYGLE03.DBF EYGLE03 308 D:\...\EYGLE0.DBF EYGLE04 309 D:\...\EYGLE05.DBF EYGLE05 30 9 rows selected5.4.3 数据段信息(dba_segments) SQL> select tablespace_name, count(*),2 round(sum(bytes)/1024/1024,2) MB, sum(blocks), sum(extents)3 from dba_segments4 group by tablespace_name;TABLESPACE_NAME COUNT(*) MB SUM(BLOCKS) SUM(EXTENTS)------------------------------ ---------- ---------- ----------- ------------EYGLE 7 0.44 56 7EYGLE03 1 0.13 16 1EYGLE04 1 1.25 160 10EYGLE05 1 1.19 152 19SYSAUX 1739 220.13 28176 2817SYSTEM 1141 341.25 43680 2040UNDOTBS1 19 15.69 2008 56USERS 1 0.06 8 18 rows selected评估高水位标记(HWM,High Water Mark),以及解决方法。P157-P166关于分区的建议。P1665.4.4 区间信息(dba_extents)SQL> select segment_name, file_id, extent_id, block_id, blocks from dba_extents2 where segment_name='OBJ$';SEGMENT_NAME FILE_ID EXTENT_ID BLOCK_ID BLOCKS-------------- ---------- ---------- ---------- ----------OBJ$ 1 0 121 8OBJ$ 1 1 5249 8OBJ$ 1 2 5713 8OBJ$ 1 3 5857 8OBJ$ 1 4 6273 8OBJ$ 1 5 6929 8OBJ$ 1 6 9217 8OBJ$ 1 7 11673 8OBJ$ 1 8 12769 8OBJ$ 1 9 14697 8OBJ$ 1 10 16993 8OBJ$ 1 11 24753 8OBJ$ 1 12 25161 8OBJ$ 1 13 26817 8OBJ$ 1 14 27281 8OBJ$ 1 15 40041 816 rows selected收缩文件。P1675.4.5 度量信息(dba_thresholds)10g中新增的SQL> select metrics_name, warning_value, critical_value from dba_thresholds;METRICS_NAME WARNING_VALUE CRITICAL_VALUE--------------------------------------------- ----------------------- ----------------------Average Users Waiting Counts 10 Average Users Waiting Counts 10 Average Users Waiting Counts 10 Average Users Waiting Counts 10 Average Users Waiting Counts 10 Average Users Waiting Counts 10 Average Users Waiting Counts 30 Average Users Waiting Counts 30 Blocked User Session Count 11 Current Open Cursors Count 1200 Database Time Spent Waiting (%) 30 Database Time Spent Waiting (%) 30 Database Time Spent Waiting (%) 30 Database Time Spent Waiting (%) 30 Database Time Spent Waiting (%) 30 Database Time Spent Waiting (%) 30 Database Time Spent Waiting (%) 50 Database Time Spent Waiting (%) 50 Logons Per Sec 100 Session Limit % 90 97Tablespace Space Usage 85 9721 rows selected5.4.6 突出告警信息(dba_outstanding_alerts)10g中新增的select * from dba_outstanding_alerts;5.4.7 告警历史信息(dba_alert_history)10g中新增的select * from dba_outstanding_alerts;5.5 使用DB Control进行空间管理找不到收缩(Shrink)相应的页面。P1725.6 SYSTEM表空间注意:SYSTEM表空间极其重要,其中包含了数据库的元数据,备份重于一切。5.7 SYSAUX表空间SYSAUX表空间从10g开始引入,用来作为SYSTEM表空间的辅助表空间。作为辅助表空间,以前使用SYSTEM表空间或独立表空间的数据库组件现在在SYSAUX表空间中创建。通过剥离,SYSTEM表空间的作用更加单纯,更易于管理和维护。数据库系统的前几名空间使用对象:select segment_name, segment_type, tablespace_name,round(bytes/1024/1024/1024,2) GB from dba_segments where bytes/1024/1024/1024 >3;查看是否有SYSTEM表空间的大数据表。Oracle会缺省地将所有的复制的系统对列表(queue table)置于SYSTEM表空间之中。所以,生产系统还是有一定的隐患!!!SQL> select segment_name, segment_type, tablespace_name,bytes/1024 from dba_segments where segment_name like'%DEF$_%';SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES/1024----------------------------- ------------------ ---------------- ----------DEF$_AQCALL TABLE SYSTEM 64DEF$_AQERROR TABLE SYSTEM 64DEF$_TRANORDER INDEX SYSTEM 64DEF$_ERROR_PRIMARY INDEX SYSTEM 64DEF$_ERROR TABLE SYSTEM 64DEF$_DESTINATION TABLE SYSTEM 64DEF$_DESTINATION_PRIMARY INDEX SYSTEM 64DEF$_CALLDEST TABLE SYSTEM 64DEF$_CALLDEST_PRIMARY INDEX SYSTEM 64DEF$_CALLDEST_N2 INDEX SYSTEM 64DEF$_DEFAULTDEST TABLE SYSTEM 64DEF$_DEFAULTDEST_PRIMARY INDEX SYSTEM 64DEF$_LOB TABLE SYSTEM 64DEF$_LOB_PRIMARY INDEX SYSTEM 64DEF$_LOB_N1 INDEX SYSTEM 64DEF$_TEMP$LOB TABLE SYSTEM 64DEF$_PROPAGATOR TABLE SYSTEM 64DEF$_PROPAGATOR_PRIMARY INDEX SYSTEM 64DEF$_ORIGIN TABLE SYSTEM 64DEF$_PUSHED_TRANSACTIONS TABLE SYSTEM 64SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES/1024----------------------------- ------------------ ---------------- ----------DEF$_PUSHED_TRAN_PRIMARY INDEX SYSTEM 6421 rows selected一般建议在初始创建数据库时,可以通过修改队列创建脚本$ORACLE_HOME/rdbms/admin/catdefrt.sql定义存储参数来更改创建地点。具体案例P185,略。5.7.1 SYSAUX表空间及其组件查询SYSAUX表空间中的数据库组件,通过视图v$sysaux_occupants:SQL> select occupant_name, occupant_desc, schema_name from v$sysaux_occupants;在DB Control中的分析图表Server Manageability - Automatic Workload Repository(38.8%) Enterprise Manager Repository(29.2%) Server Manageability - Optimizer Statistics History(15.3%) Server Manageability - Advisor Framework(4.2%) LogMiner(3.3%) Other(3%) Workspace Manager(2.9%) Server Manageability - Other Components(2.4%) Analytical Workspace Object Table(0.3%) OLAP API History Tables(0.3%) Unified Job Scheduler(0.1%) Oracle Streams(0.1%)5.7.2 SYSAUX空间组建的转移5.7.3 SYSAUX的作用与意义有关高级复制对列表的案例P183-P185 不理解5.8 BigFile和SmallFile表空间技术SQL> select * from database_properties where property_name='DEFAULT_TBS_TYPE';PROPERTY_NAME PROPERTY_VALUE DESCRIPTION---------------- ---------------- --------------------------DEFAULT_TBS_TYPE SMALLFILE Default tablespace type数据库缺省的表空间类型为SmallFile,所以缺省创建的表空间都是小文件表空间5.9 ROWID与RDBA的转换5.9.1 Oracle的ROWID及数据库限制数据存放在数据文件中,因为其存储,数据的一系列属性就随之确定,这些属性包括记录存储所在的数据文件(file#)、所属的数据库对象(obj#)、所在的数据块号(block_no#)以及在表中的行号(row#),这些属性合并起来就构成了Oralce的ROWID。(作者给出的定义很有条理,也算是使用例子说明,来龙去脉很清晰)Oracle的ROWID用可以分为两种:物理ROWID和逻辑ROWID。索引组织表示用逻辑ROWID,其他类型的表使用物理ROWID。ROWID在表中并不存在,但是查询时可以使用这一伪列:SQL> select rowid,t.* from eygle.dept t;ROWID DEPTNO NAME------------------ ---------- ----------AAAEsIAAFAAAAAyAAA 50 support索引(Index)中存储了ROWID,而ROWID可以唯一的标识一条记录;也就是说,通过索引访问记录,实际上就是通过索引获得ROWID,再根据ROWID到数据表中定位记录的过程。从8i开始,ROWID占用10字节,采用Base64编码,代表80位二进制数:32bit数据库对象(obj#)、10bit数据文件(file#)、22bit数据块号(block_no#)、16bit行号(row#)了解了ROWID的构成后,就可以很清楚的理解Oracle数据库的一些内部限制,例如:每个表空间最大文件数:2的10次方=1024,还需去掉全0全1,通常为1022。数据文件最大的Block数量为2的22次方=4M个Block每个Block中可容纳最多的行数为:2的16次方=65536行5.9.2 BigFile表空间的ROWID5.9.3 使用dbms_rowid包获得ROWID的详细信息5.10 使用OMF管理数据文件从9i开始引入OMF(Oralce文件管理)这一新特性。Oracle通过这一特性实现了数据文件的自管理。P190OMF特性可以将DBA从直接的操作系统交互中解脱出来。之前,当DBA从数据库删除一个表空间后,数据文件可能仍然在操作系统上存在,这样DBA就需要去操作系统上手工删除数据文件来释放空间。这个操作非常危险,由于误操作删除在用文件的案例很多。使用OMF需要配置两个初始化参数db_create_file_dest和db_create_online_log_dest_nSYSTEM @ OCP10G> show parameter db_createNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_create_file_dest stringdb_create_online_log_dest_1 stringdb_create_online_log_dest_2 stringdb_create_online_log_dest_3 stringdb_create_online_log_dest_4 stringdb_create_online_log_dest_5 stringSYSTEM @ OCP10G> set timing onSYSTEM @ OCP10G> set time on16:54:46 SYSTEM @ OCP10G>16:54:51 SYSTEM @ OCP10G> create tablespace eygle06 datafile 'D:\oracle\product\10.1.0\oradata\OCP10G\eygle06.dbf' size 10m;表空间已创建。已用时间: 00: 00: 00.8216:55:20 SYSTEM @ OCP10G> drop tablespace eygle06;表空间已删除。已用时间: 00: 00: 00.1816:56:03 SYSTEM @ OCP10G> 但是数据文件去没有被删除!!!D:\oracle\product\10.1.0\oradata\OCP10G>dir eygle06*驱动器 D 中的卷是 WindowsXP卷的序列号是 F419-61E0D:\oracle\product\10.1.0\oradata\OCP10G 的目录2010-04-12 16:56 10,493,952 EYGLE06.DBF1 个文件 10,493,952 字节0 个目录 1,138,704,384 可用字节5.11 ASM自动存储管理(略)SQL> show parameter instance_typeNAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_type string RDBMS生产系统使用的是RDBMS,代表数据库实例;如果VALUE值为ASM,代表ASM实例。第6章 临时表空间和临时文件6.1 临时表空间原理临时表空间的典型操作是用于磁盘排序,常见的会引发排序的操作的有CREATE INDEX, ANALYZE, DISTINCT, ORDER BY, GROUP BY, UNION, INTERSECT, MINUS, Sort-Merge Join等。当用于执行排序操作时,Oracle将优先将这个操作放到内存中执行,如果内存中无法容纳排序操作,则Oracle将使用临时表空间进行排序。如果一个数据库的磁盘排序过多,需要考虑优化SQL,看能否减少不适当的排序操作。查看数据库排序信息,通过V$SYSSTAT视图:SQL> select name, value from v$sysstat where name like 'sort%';NAME VALUE---------------------------------------------------------------- ----------sorts (memory) 481458sorts (disk) 19sorts (rows) 47362799在生产环境中,我们可能会遇到如下错误:ORA-1652: unable to extend temp segment by 128 in tablespace TEMP2这个提示表明临时表空间不足,空间不足可能是由于空间耗尽,也可能是临时表空间不能扩展,通过如下SQL能够获得正在使用临时段排序的用户。具体案例,关于查询正在使用临时段排序的用户。P210下回再看。6.2 Oracle 8i的临时表空间在Oracle8i或Oracle8i以下版本,Oracle使用的是有数据文件特性的临时数据文件。6.3 Oracle 9i的临时表空间在Oracle9i中,Oracle引入了真正意义上的临时文件,在创建表临时空间时Oracle增加了一个新的关键字tempfile,6.4 Oracle 9i中如何重建与切换临时表空间具体案例P2136.5 Oracle 10g的临时表空间组具体案例在P215。生产系统没有使用这一特性。SQL> select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------返回值为空。6.6 Oracle 10g使用RMAN回复临时表空间的增强我们需要养成的一个好习惯是,在完成重要操作后(特别是恢复操作等),应当及时仔细检查告警日志文件。从Oracle 10gR2开始,在使用了RMAN恢复数据库之后,Oracle会自动重新创建临时文件。6.7 临时表空间过度扩张的问题解决resize临时文件到多大呢?可以查询一下临时空间使用情况(通过视图v$tempseg_usage)来确认一下select name, bytes/1024/1024/1024 GB from v$tempfile;select max(segblk#) from v$tempseg_usage; --317321select 317321*8192/1024/1024/1024 from dual; --2.421、可以考虑通过resize的方式减小文件大小,具体案例P2182、很多时候临时表空间不能释放,这是需要通过切换临时表空间来解决,参考6.4小节。6.8 从V$SORT_USAGE到V$TEMPSEG_USAGE从Oracle 9i开始,V$SORTUSAGE视图从文档中被删除,取而代之的是V$TEMPSEG_USAGE。与V$SORT_USAGE相比,V$TEMPSEG_USAGE来的用词更为确切。(原因:临时表空间的典型操作是用于磁盘排序,但是除了排序之外,常见的会引发排序的操作的有CREATE INDEX, ANALYZE, DISTINCT, ORDER BY, GROUP BY, UNION, INTERSECT, MINUS, Sort-Merge Join等。)V$TEMPSEG_USAGE的SEGTPYE字段,取之可以为SORT, HASH, DATA, INDEX, LOB_DATA, LOB_INDEX等等。V$SORT_USAGE以及V$TEMPSEG_USAGE是同义词。SQL> select object_name, object_type from dba_objects where object_name in('V$SORT_USAGE', 'V$TEMPSEG_USAGE');OBJECT_NAME OBJECT_TYPE------------------------- ------------------V$SORT_USAGE SYNONYMV$TEMPSEG_USAGE SYNONYM词源都是V_$SORT_USAGE。SQL> select * from dba_synonyms where synonym_name in('V$SORT_USAGE', 'V$TEMPSEG_USAGE');OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK--------- ------------------ ---------------- ---------------- ------------PUBLIC V$TEMPSEG_USAGE SYS V_$SORT_USAGE PUBLIC V$SORT_USAGE SYS V_$SORT_USAGE 6.9 临时文件file#和db_files的关系临时段的文件号是从2049开始的,因为临时文件的绝对文件号segfile#是按照db_files+ file#来分配的。SQL> select username,segfile# from v$tempseg_usage order by segfile#;USERNAME SEGFILE#------------------------------ ----------DFGX 2049DFGX 2049SYS 2049SYS 2049SYS 2049DFGX 20496 rows selectedSQL> select name,value from v$parameter where name='db_files';NAME VALUE ------------ -----------db_files 2048 SQL> select file#, name from v$tempfile;FILE# NAME---------- ----------------------------------------------------------------1 /actdbdata1/ngact/temp01.dbf2 /actdbdata2/ngact/temp02.dbf3 /actdbdata3/ngact/temp03.dbf4 /actdbdata4/ngact/temp04.dbf5 /actdbdata5/ngact/temp05.dbf6 /actdbdata2/ngact/temp07.dbf7 /actdbdata1/ngact/temp06.dbf7 rows selected6.10 LOB对象与临时段6.11 临时文件和稀疏文件Oracle的临时表空间,初始创建时,这个空间是延后分配的。这种特性,叫做稀疏文件。对于Windows操作系统,NTFS从版本5开始支持稀疏文件。D:\>fsutil fsinfo volumeinfo d:\卷名 : WindowsXP卷序列号 : 0xf41961e0组件长度最大值 : 255文件系统名 : NTFS支持区分大小写的文件名保留文件名的大小写支持文件名中的 Unicode保留并加强 ACL支持基于文件的压缩支持磁盘配额支持稀疏文件支持重分析点支持对象标识符支持带有名称的数据流第7 章 备份与恢复7.1 备份与恢复概述7.2 备份方法7.3 恢复原理7.4 数据库的运行模式7.5 Oracle 10g的闪回恢复区7.6 逻辑备份与恢复7.6.1 使用EXP进行逻辑备份7.6.2 使用IMP进行逻辑恢复7.6.3 使用Oracle 10g数据泵(EXPDP/IMPDP) (暂时用不到)7.7 物理备份与恢复7.7.1 冷备份(也叫脱机备份、一致性备份)7.7.2 热备份(也叫联机备份、不一致备份)7.7.3 RMAN的备份与恢复1. RMAN备份保留策略2. 常用的crosscheck命令3. 使用NOCATLOG方式进行备份4. Resetlogs/Noresetlogs与控制文件(P275)5. 数据文件头信息与数据库恢复6. 使用控制文件快照辅助恢复7. 用RMAN的Plus archivelog选项简化数据库备份8. 使用RMAN对控制文件进行备份9. RMAN的镜像COPY功能10. RMAN基于镜像COPY的表空间恢复11. 使用RMAN进行完全恢复12. 使用RMAN的不完全数据恢复13. 使用RMAN对ASM文件的备份与恢复14. 使用RMAN对RAC环境的备份15. Nocatalog方式的备份方案制定16. 目录(Catalog)数据库17. 使用Catalog数据库对目标数据库进行备份18. 完全恢复与Resetlogs19. 使用RMAN进行增量备份20. Oracle 10g Block Change Tracking选项

精彩短评 (总计6条)

  •     一部分内容而已,适合DBA。而且本书已经被《深入浅出……》取代了。
  •     比《深入解析 oracle》较容易理解的,适合oracle 入门的人。
  •     本书内容,深浅跨度较大,有些内容那个写的比较深入,但有些还是比较粗略的,但最后的一章的亮点,总结了解决问题思维导向。
  •     读过,内容已经记不得了,唉。。。年老多健忘呀~
  •     当年啥也不清楚的时候买的,比《深入浅出Oracle》要难些。。。现在一样是很多都看不懂。
  •     不错
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024