Oracle10G培训教材.docx
OraclelOG培训教材数据库就是存放用户数据的存储仓库,数据通过用户执行特定的操作语言(SQL)存入数 据库中,能够被方便的保护,在将来需要的时候,通过这些SQL语言还能够高效灵活进行访问。 DBMS:数据库管理系统(Database Management System)就是管理数据库的软件,在DBMS中 有一部分数据字典,用于贮存它拥有的所有事物的有关信息,比如名称,结构定义,存储位置 与数据类型等要素,这种数据库与有关对象的数据也被称之元数据(metadata),存放在相应的 数据字典表中,能够被用户,管理员与数据库自身访问。为了更好的组织数据以利于性能的提高,出现了进一步的数据规范原则(三范式),通过三范式 将数据有效的组织成多个有特定数据关系的对象,这些对象叫做实体,而对象之间存在的数据 关系(而关系在。racle数据库中表现为主键,外键这些约束条件)RDMBS:关系型数据库管理系统,现在数据库中以增加了对象(Objects)的概念,因此现在的 数据库也被叫做对象关系型数据库。关系型数据库的概念用于描述数据库中多个表数据之间存在的关联关系,oracle的一些特点:1,支持大数据量,多用户的并发事务处理能力.提供大量并发访问下的高性能保障2 .遵守数据存取语言,操作系统,用户接口与网络通信协议的工业标准,提供安全性操纵与数据完整性操纵3 .支持分布式数据库与分布处理的能力6,具有可移植性,可兼容性与可连接性7 .提供了全球化,跨平台的数据库oracle要紧开发工具LSql*plus执行数据查询,数据操作等操作,也能够用来创建,编译,执行pl/sql程序.Pro*C嵌入式C语言,能够在C语言中直接嵌入sql语句,通过Proc*C编译器编译程序2 .SqlJ嵌入式Java语言,能够在Java语言中直接嵌入Sql语句,通过SqlJ编译生成能够调用 的 Java class.From专用的应用开发工具,通常用于OracleERP软件的二次开发4 .Report专用的报表开发工具,通常用于Oracle ERP软件的二次开发.Jdeveloper开发Java程序的工具,类似Jbuilder能够各类java应用企业管理器(oem)由Java语言开发,能够在各类平台调用emctl start dbconsole ,emctl status dbconsole ,emctl stop dbconsole 启动,查看状态,停止 oem sqlplus工具的基本特点:1 .是Oracle独有的运行环境,并不支持对其他数据库的操作.能够在不一致平台运行,运行界面相同2 .除了能够支持标准的SQL外,也具有自己的一套SQLPLUS命令,用于辅助命令的执行,管 理与格式化结果.SQLPLUS命令与SQL语句不一样,能够缩写,能够直接执行,不需要分号结束5.在标准SQL的基础上,提供了对标准SQL扩充命令的支持命令行中执行sqlplus各平台通用。标准的SQLPLUS命令行中执行sqlplusw for windows界面比标准SQL更加友好。仅在windows平台上有效 数据库对象表:最常见的数据库对象,用于存储数据的对象,也被叫做数据实体,表是用来存放数据的, 由行与列构成。列就是字段,行就是表中的记录约束条件:就是数据校验规则,用于保证表中数据务必符合制订的规则,能够设置在单个字段 或者者多个字段组合上的,写入这些字段的数据务必符合约束条件的限制$SPPARAMETER:关于当前Spfile参数文件中参数设置的信息V$VERSION:关于数据库软件版本的信息V$OPTION:关于安装在数据库中的选件信息V$DATABASE:关于数据库的信息V$CONTROLFILE:关于操纵文件的信息V$DATAFILE:关于数据库文件大小状态等信息V$LOGFILE:关于重做日志文件的信息V$SESSION:关于连接会话的信息能够通过dictionary或者者v$fixed_table熟悉更多的动态性能视图数据字典与动态性能视图都是DBA务必熟悉的工具,数据字典中包含了关于数据库与数据库对 象的重要信息,为了管理数据库提供了必要的根据,通过数据字典能够对数据库的基本情况掌 握清晰;而动态性能视图描述了数据库系统的运行状况,为故障处理与性能调整提供了必要的 信息,能够使DBA及时监控到问题的发生,同时根据动态性能视图提供的信息逐步确立问题的 原因,从而进行故障处理与调整,这两种工具缺一不可,充分熟悉与掌握这两种工具是管理好 数据库的必耍途径,DBA务必熟悉常用的数据字典与动态性能视图数据库启动分为三个阶段:NOMOUNT, MOUNT, OPENNOMOUNT:系统读取初始化参数文件的内容,分配内存空间,启动后台进程直到实例启动完 成,启动过程记录在告警日志文件中MOUNT:系统根据参数文件中的control-files参数设置找到操纵文件,读取操纵文件内容, 获取数据库的有关信息,并将数据库与实例信息关联OPEN:系统根据操纵文件中的数据库结构信息寻找所有的数据文件与重做日志文件,推断日志 文件的日志序列号也操纵文件中记录的是否一致,并读取所有数据文件头的SCN号,操纵文件 中的SCN号作对比。假如都相同,直接打开数据库,否则将由SMON进行实例恢复。数据库关闭也经历三个过程:CLOSE - DISMOUNT - SHUTDOWNstartup pfile='$ORACLE_HOME/dbs/initSID.ora'指定启动时用的参数文件,假如不指明,直接 找默认的参数文件假如打开数据库,但不希望其他用户影响DBA的管理工作,能够在打开时指定限制模式,在这 种方式下,只具有restrict session权限的用户能够连接到打开的数据库中startup restrict;假如DBA在限制模式上已经执行完管理任务,同意用户连接并执行正常操作,能够直接禁用限 制模式:alter system disable restricted session;alter database open read only以只读方式打开,只读意味着只能执行查询关闭数据库有四种选项,选项不一致,关闭的过程与结果是完全不一致的normal,默认选项,正常模式关闭,等待所有前端会话断开后执行同操作,然后关闭数据库 transactional:事务型关闭,等待所有事务结束后,主动断开残留的会话,然后执行同步操作,最 后关闭immediate:立即关闭,系统主动回滚没有结束的事务,释放事务占用的锁与其他资源,在断开 所有会话后执行同步操作,然后开始关闭abort:放弃型半闭,直接强制关闭,不做同步操作DB Server启动的第一步就是启动实例,而实例的属性由参数文件中的初始化参数决定,对参 数文件中的参数修改将在下一次启动实例时生效当startup命令执行是DB server首先读取初始化参数文件,系统将自动寻找DBA指定的参数文 件或者者系统默认的参数文件,根据参数文件中的设置分配内存空间,启动后台进程,完成实 例启动的过程,初始化参数文件仅在实例启动时需要,在系统运行后,并不要求参数文件务必 存在,也不再读取参数文件。DBA能够根据需求配置一个或者多个参数文件,用于不一致的情况,但每次只能引用其中的一 个参数文件启动数据库实例根据参数文件的使用特性,参数文件分为两种:pflle:静态参数文件,oracle往常使用的,文本文件spfile:稳固参数文件,从9i开始使用,已经逐步取代了 pfile,二进制文件DBA能够在初始化参数文件中配置pfile或者spfile参数,用于引用其它参数文件的参数值,但 是假如一个初始化参数出现多次,只取最新的设置在参数文件中*.表示对所有实例有效,假如仅对某个实例有效,则参数名称前为该实例sid; 出于保护与安全的考虑,spfile与pfile文件能够互相创建对方,作为对方的备份,一旦某种文 件损坏,都能够通过另外一种文件快速恢复create spfile from pfile;create pfile from spfile;也能够指定参数文件的路径create pfile='$ORACLE _ HOME/dbs/initORCL.ora1 fromspfile='$ORACLE _HOME/dbs/spfileORCL.oraf;两类参数文件互相创建的命令能够在DB SERVER运行的任意阶段执行,甚至在数据库已经完 全 shutdown 后alter system命令能够修改当前实例的参数状态,也能够修改spfile文件的内容 例alter system shared_pool_size= 100 scope=both即修改文件,也修改当前内存的值alter system shared_pool_size= 100 scope=spfile 修改文件alter system shared_pool_size= 100 scope=memory 修 改内存alter system shared_pool_size= 100 scope=both sid=6 %:修改所有实例通常数据库的操作信息看故障情况被记录在一些诊断文件中,DBA能够通过经常查看下面的诊 断文件熟悉系统的运行情况并进行相应的处理1 .告警日志文件alterSID.log.后台进程跟踪文件2 .用户进程跟踪文件AlterSID.log文件是DBA最应该经常查看的文件,这个文件中记录了大量对数据库日常管理与 故障处理有用的信息,要紧有下列信息1 .数据库的重大操作的信息.要紧操作事件与结果2 .各类数据库错误的信息.启动关闭的信息等所有这些事件与时间都被记录着,能够帮助DBA处理故障与监控数据库的运行,最新的日志内 容被记录文件最后,为了便于查看,必须由DBA每隔一段时间保护这个文件,文件能够随时删 除或者移走,系统在检测不到时会自动重新创建该文件文件存放位置由参数background_dump_dest决定,默认放在bdump目录下后台进程跟踪文件要紧记录后台进程检测到的错误信息,当某个后台进程遇到错误或者者特殊 时产生该文件,同时以这个后台进程的名称作为文件名称的一部分,在告警日志文件中也会包 含一些错误信息,用于确定需要解决的错误,而在后台进程跟踪文件中提供了比告警日志文件 更全面的错误信息,帮助DBA诊断与解决错误后台进程跟踪文件存放位置由参数background_dump_dest决定,默认放在bdump目录下 用户跟踪文件由用户进程或者服务进程产生,通常包含两种信息,一种是用户进程遇到的错误 或者特殊信息,另一种是SQL语句执行的跟踪统计信息。错误特殊信息要紧用于帮助DBA或 者者开发人员执行应用程序或者者系统的故障处理,只要错误发生,跟踪文件自动生成并记录 有关的内存,进程,语句等信息。SQL语句执行的跟踪统计信息则用于辅助DBA优化相应的 SQL语句,只有当用户启用了会话跟踪,才生成对应的跟踪文件,跟踪信息将一直产生并记录 在文件中,直到结束会话跟踪为止。用户进程跟踪文件可能由其他方式产生,比如event参数设置的一些事件,或者者由DBA执行 的一些特殊命令用户进程跟踪文件的存放目录由参数user_dump_dest决定,通常在udump目录下,用户跟踪文 件的最大大小由max_dump_file_size决定,默认不超过10M假如DBA需要优化一些SQL语句,需要收集这些SQL语句的信息,则务必首先开启会话跟踪, 然后执行相应的SQL语句。开启跟踪能够在两个级别开启会话级与实例级,但是为了减少对 系统的影响,同时了更准确的跟踪关心的SQL语句信息,建议只在会话级对需要优化SQL语 句的会话开启跟踪。会话级别开启跟踪文件:alter session set sql_trace = true;也能够通过DBMS系统包开启特定会话 的跟踪: exec dbms_system.set_sql_trace_in_session实例级别开启(不建议):设置初始化参数:sql_trace=true;oracle的存储层次被分为逻辑存储部分与物理存储部分。逻辑存储部分五层,分别是数据库, 表空间,段,区,数据块。物理存储部分分为两部分,分别是数据文件与操作系统块。在存储层次图中要紧包含两种关系,一对多的关系,只属于的关系,在各个层次中都表达了这 两种关系。在物理存储部分,数据文件是数据的存储体,而操作系统块是操作系统I/O最小单位,一个数据文件由多个操作系统块构成,每个操作系统块只属于一个数据文件。在 逻辑存储部分,表空间是数据库中逻辑存储集合,数据库由一个或者多个表空间构成,每个表 空间只属于一个数据库;一个表空间能够存储多个逻辑存储对象,这些逻辑存储对象也被叫做 段,每个段只属于一个表空间;一个段由一个或者多个区构成,区是段的空间扩展单位,一个 区是只属于一个段的连续存储空间;一个区中包含多个连续的数据块,数据块是数据库最小的 I/O单位,一个数据块只属于一个区。逻辑与物理之间的关系是:一个表空间实际是一个或者多个数据文件构成的逻辑存储集合,每 个数据文件只属于一个表空间;而一个数据文件上能够分配多个区,每个区一定是一个数据文 件上的连续数据块;一个数据块由一个或者多个操作系统块构成,每个操作系统块只属于一个o数据库在管理时使用逻辑存储概念,比如表空间管理,而实际上存储时使用的是物理存储概念。 所有的这些存储概念与之间的关系构成了存储层次图。在数据库存储层次图中,数据库管理员首先需要管理的是用于存储数据库对象的表空间与存储 数据的数据文件,表空间与数据文件有着密不可分的关系表空间是一个或者多个数据文件的逻辑集合,表空间的大小就是构成它的所有数据文件大小之 与,一个表空间至少包含一个数据文件,通常出于性能或者其他方面的考虑,一个表空间会建 立多个数据文件,数据文件是数据库最终的数据存储体,一个数据文件只属于一个表空间。存储对象(比如表,索引)逻辑的存储在表空间上,一个表空间能够存储多个存储对象,每个 存储对象只能属于一个表空间。存储对象的数据物理的存放在构成表空间的多个数据文件上。 数据库至少需要一个system表空间,也就是系统表空间,通常为了数据库稳固性,健壮性,高 性能,可恢复性等方面的考虑,通常都会创建更多的表空间,存放不一致类型的数据 表空间system:数据字典信息,是数据库务必的表空间,也是创建数据库时第一个被创建的表空间 sysaux:存放除了数据字典之外的一些系统管理辅助信息,是10g新增加的表空间,用于分担系 统表空间的负荷undo:存放自动管理的回滚段信息,提供事务的回滚功能与10g的闪回恢复功能,是系统非常重 要的表空间之一temp:暂存放用户排序时的临时数据与其他临时数据index:存放用户表上的索引信息,用于减轻表数据i/。与索引i/。的竞争其它:另外一些大对象数据或者特殊类型的表结构也建议单独存储在其他表空间上。上述表空间只有system,sysaux表空间的名称务必由系统命名,不可更换,其他表空间名称能够 更换。其它表空间能够在数据库生成后由DBA创建并进行管理,通常对系统表空间的管理任务 较少,因此通常做表空间管理大多是对除了 system,sysaux表空间之外的其他表空间的管理 创建表空间 create tablespace datas datafile 7u01 /app/oradata/benet/datasO 1 .dbf size 5m;在10g往常,每个表空间能够有多个数据文件构成,但每个数据文件的大小有限,因此整个表 空间总的容量也受到限制,从10g开始能够创建大文件表空间(bigfile tablespaces) .大文件表 空间由单个数据文件构成,每个数据文件最大能够包含4G (2八32)个操作系统块,扩展了表空 间的总大小使用大文件表空间使用户数据库获得了下面的好外:1 .显著的增加了 oracle数据库的存储容量.关于8K的db blocks,最大数据文件能够达到32T;关于32k的db blocks,最大数据文件可 达 128T2 .由于数据文件个数的减少,使得检查点的性能提升,减少了每次检查点的代价.缩减了超大型数据库的数据文件的数量3 .简化了文件系统的管理缺点:1 .单个文件损坏造成整个表空间的不可用.单个文件损坏丢失更多数据等10g默认仍然使用小文件(smallfile)表空间select property_value from database_properties where property_name='DEFAULT_TBS_TYPE,;能 够查看数据库默认表空间是什么文彳牛类型alter database set default bigfile tablespace 更换默认的表空间文件类型create bigfile tablespace bigfiles datafile 7uOI/app/oradata/benet/bigfilesOI.dbf size 50G;创建时能 够指定表空间的文件类型,不指定就使用默认的。(创建表空间之后,表空间文件类型不能修改) 表空间的空间管理是oracle描述表空间中空间分配状况的方法,从8i开始,空间管理方法有下 列两种:数据字典管理表空间:是从往常一直被沿用的空间管理方法,从9i开始逐步被淘汰;使用数据 字典uet$,fet$描述表空间中空闲空间与使用空间情况,在表空间发生变化时这两个表的信息随 之变化;当表空间上的存储空间被分配或者释放时,数据库自动保护这两个表中的记录信息 本地管理表空间:直接在各个表空间上管理空闲空间与使用空间;使用存储在表空间上的bitmap 标识空闲空间与使用空间的信息;bitm叩中的每一位描述一个block或者者一组block的状态; 空间发生改变时,相应的bit值将会从。变I或者者反之;从9i开始默认使用的表空间属性 段存储在表空间上,段是由区构成的,区是在数据文件上划分出的一段连续空间,在字典管理 表空间上存储的每个段都能够设置自己的存储特性,比如各个区的大小等。在创建段的时候能 够通过存储子句设置这些存储性,也能够在后期中进行修改,这些设置都反应在构成段的这些 区的空间大小上,也反映在数据字典配1$与£©1$中由于字典管理表空间的空间管理开销很大,对带来空间保护的数据库操作性能影响很大,因此 dmt这种技术现在已经被放弃,create tablespace datas datafile '*/aa.dbf size 50m extent management dictionary default storage(initial Im next Im pctincrease 0);创建字典管理表空间本地管理表空间使用bitmap描述空间分布情况,空间的变化仅仅反应在bit值的改变上,因此 明显减少了由于空间变化带来的空间信息保护的代价,保护所需的资源竞争明显减少。在本地 管理表空间上不再需要为每个段设置存储参数,所有在本地管理表空间上存储的段,区大小遵 循表空间的设置,段的存储参数无效在本地管理表空间上,当空间分配或者者释放的时候不可能产生大量的回滚信息,也没有明显 的日志生成,空间管理开销非常小,对空间保护的性能有明显改善,因此现在广泛使用LMT.create tablespace datas datafile '*/aa.dbf size 10m extent management local uniform size 128k; 仓建 本地管理表空间本地管理与字典管理表空间也务必在创建表空间之前确定,创建表空间之后不能被直接改变 移植一个DMT表空间表空间的管理方式不能直接转换,因此用户假如在升级系统后希望改变表空间的管理方式,往 往采取创建新的本地管理表空间,然后移动字典管理表空间上对象到本地管理表空间这种方法, 通常这种方法是能够把大多数字典管理表空间替换成本地管理表空间的,但是system表空间却 无法这样处理,因此oracle提供了移植数据字典管理的系统表空间到本地管理的表空间的方法: dbms_space_admin.tablespace_migrate_to_local(system);除了袤空间留空间管理方式需要在创建袤空间之前确定之外,表空间的类型也务必在创建表空 间之前确定,表空间的类型也表空间中存储的数据特性有关,根据表空间中存储的数据内容不 一致,Oracle把表空间分为三种类型:1 .永久类型存放永久存储对象的数据.临时类型暂存临时数据2 .还原类型(回滚) 存储事务中的原始数据,也就是回滚数据Oracle 默认的表空间类型都是永久类型;create tablespace datas datafile '*/aa.dbf size Im;从91开始回滚段被数据库自动管理,为了支持这种特性,Oracle9i出现一种表空间类型(undo), 这种表空间专用于存储数据库自动管理的回滚段(手工管理的回滚段不能存储在这里);一个数 据库能够创建多个Undo类型表空间,但每个实例只能使用一个undo类型表空间,因此只有在 rac架构下才能够使用多个Undo类型表空间create undo tablespace undoO 1 datafile f*/aa.dbf size 10m; 创建回滚表空间临时类型表空间要紧用于暂存排序时的临时数据,也能够存储其他用处的临时数据,比如 sqlloder装载时产生的数据,但不能存储任何永久的对象一个临时类型表空间能够暂存多个会话的排序数据,所有这些会话的排序使用一个临时表空间 上一个临时段中的不一致临时区,所有的临时数据都将会在使用完成后从临时表空间上自动释 放。一个数据库能够一个或者多个临时类型表空间,每个排序只会使用其中的一个临时表空间, 在10g往常,一个语句带来的多个排序动作,务必使用一个临时表空间的不一致临时区,所有 的排序动作堆积在一个临时表空间上带来了性能压力,从oraclelOg开始数据库支持由多个临时 表空间构成的临时表空间组,一条语句带来的多个排序动作能够被分散在临时表空间组的多个 临时表空间上,分散了排序的压力create temporary tablespace temp tempfile /aa.dbf size 20m extent management local uniform size 4m;创建临时表空间每个oracle数据库用户都有相应的临时表空间属性,代表用户的排序使用此临时表空间,但是 在创建用户时没有指定用户的临时表空间,那么oracle将把system作为用户的临时表空间,这 意味着排序的临时数据将会在系统表空间上产生大量的i/o读写,带来严重的性能影响从9i开始,oracle要求务必设置一个数据库的默认临时表空间,用于为没有明确指定临时表空间 的用户提供排序所需的表空间,以防止会话使用系统表空间做排序默认的临时表空间在创建数据库时能够设置,也能够专创建数据库后设置alter database default temporary tablespace temp;改变当前的临时表空间select property_name,property_value from database_properties where property_name like ,DEFAULT%,看询当前的默认临时表空间临时表空间一些限制:1 .不能离线.不能直接删除2 .不能指定一个永久类型表空间为默认临时表空间create temporary tablespace tempi tempfile '*/a.dbf size 10m tablespace group t; 创建临时表空间 组alter tablespace temp 1 tablespace group t;将临时表空间加入临时表空间组在用户设置临时表空间属性时,指定这个表空间组作为用户的排序表空间即可默认永久表空间:与默认临时表空间意思一样,就是当创建用户时没有指定它的默认存储表空 间,用户的数据将存在system表空间中,而创建了默认永久表空间,就放在默认永久表空间中 alter database default tablespace users; 更换默认表空间select property_name,property_ value from database_properties where property_name like DEFAULT%,石着当前的默认永久表空间表空间的状态分为下四种:1 .online2.offline3 .read write.read only表空间的状态实际上是上面的四种的组合状态,表空间的组合状态一共有三种:1 .online and read write2.online and read only3.offline正常的表空间运行在online状态下,online状态表示表空间能够被访问,而offline状态的表空 间是不可访问的当表空间外于online状态时,表空间上的数据是能够访问的,数据能够被正常读写,如今表空 间的数据可能已经被读取到内存中并被修改,因此一旦需要将表空间设置为。ffline状态,数据 库将会触发检查点事件,将该表空间有关的内存脏数据(dirtybuffer)写入有关的数据文件,并 将如今的SCN (系统改变号)写入这些数据文件的头部与操纵文件中,然后锁定整个数据文件, 表空间一旦被0ffline,表空间中数据文件的内容与文件头部的SCN信息将都不同意修改 大多数表空间能够随时offline,但是有些表空间不能够:1 .系统表空间2,存在活动回滚段的表空间(被实例使用的)3.默认的临时表空间alter tablespace users offline; alter tablespace users online;表空间只读:只同意查询,不同意dmL但ddl操作是同意的(只读表空间上的对象能够被删除) 在正常状态下修改的数据在表空间状态变为只读时也需要从内存中写入磁盘,并记录当前的 SCN到数据文件头,然后锁定数据文件内容与数据文件头,也就是在这个表空间上发生了检查 点事件alter tablespace users read only; alter tablespace users read write; 更换表空间的状态表空间的名称在9i往常的版本中没有相应的命令能够修改,从10g开始,oracle支持直接使用 sql命令修改表空间的名称了alter tablespace users rename to userdate; 修改表空间的名称;(系统表空间不能够 system ,sysaux)表空间是存储对象的空间,在表空间的管理过程中,确保表空间能够提供足够大的可用空间是 DBA 一个基本的管理任务表空间的大小是由构成它的所有数据文件大小之与决定的,因此改变表空间大小能够使用下面 的三个方法1 .启动数据文件大小的自动扩展属性,数据文件将会在空间不够时自动扩展.手工改变数据文件大小,在空间不够之前由DBA通过命令修改2 .为表空间增加数据文件启用数据文件的自动扩展属性,能够在数据文件现有空间不足的情况下自动扩展新的空间以满 足空间需求,自动扩展属性是数据文件的属性,而不是表空间的属性能够在多个SQL管理命令中启用数据文件的自动扩展属性.create database1 .create tablespace.alter tablespace . add datafile2 .alter database datafile.比如,能够直接修改数据文件的自动扩展属性alter database datafile /a.dbf autoextend on next 10m maxsize 500m;其中 autoextend on 代表启动 自动扩展;next 10m代表数据文件每次扩展10M空间; maxsize 500m代表数据文件最大 扩展到500M,默认最大能够扩展到数据所识别的最大文件大小在数据字典dba_data_files中能够查看数据文件是否启用了自动扩展属性数据文件的自动扩展特性对性能有一定的影响,但是能够减少数据库空间问题的发生,因此通 常建议启动自动扩展属性以防止空间错误的发生,同时由DBA监控表空间使用情况,并在不足 之前对数据文件大小进行手动扩展能够使用alter database命令在需要更多空间之前手动增加数据文件的大小,也能够使用这个命 令手动减少文件大小以减少空间浪费,手动减小数据文件的大小就是回收未使用的空间alter database datafile f*/a.dbf resize 10m;表空间大小是构成表空间的所有数据文件大小之与,因此增大表空间也能够通过为表空间增加 新的数据文件来实现,但是需要注意,数据文件一旦增加到表空间,将不同意直接从表空间中 删除,除非删掉整个表空间。关于数据来说,数据文件越多,执行一次检查点的代价超高,但 是增加数据文件对均衡i/。有好处,因此平衡i/。竞争与检查点的性能影响,也就是需耍适当的 增加数据文件的个数alter tablespace datas add datafile '*/a.dbf size 20m;为表空间添加更多个数据文件的命令; 表空间文件的重命名与重定位假如数据库在open状态.将需要重命名数据文件的表空间离线1 .操作系统级移动数据文件(或者者改名)3,执行下面的 rename 命令;alter tablespace datas rename datafile */a.dbf to */b.dbf;4,将表空间online假如数据库没有open1 .启动到open.操作系统级别移动数据文件2 .执行下面的 rename 命令,alter database rename file */a.dbf to '*/b.dbf.打开数据库删除表空间有些表空不能直接删除1 .系统表空间.有活动回滚段的表空间2 .默认临时/永久表空间drop tablespace datas including contents and datafiles;册”除表空间;其中 including contents 用于册U 除表空间的同时删除表空间上的所有段and datafiles删除表空间,数据文件与表空间上段的信息,同是删除操作系中的数据文件; cascadeconstraints用于将参照表空间上对象的其他对象级联删除表空 间信 息 dba_tablespaces,v$tablespace数据文件信息 dba_data_files,v$datafile临时数据文件信息 dba_temp_files ,v$tempfile;操纵文件非常重要,一旦丢臭损坏,数据库将无法使用,操纵文件之因此如此重要,是由于操 纵文件中存储了很多重要的数据库信息,假如得不到这些信息,数据库将无法使用 操纵文件的记录内容要紧有:1 .数据库名字,标识与创建时间.表空间的名字(包含已被删除的)2 .数据文件与联机重做日志文件的位置与名字(包含已被删除的).数据文件头信息3 .当前联机重做日志文件的sequence号码.检查点信息4 .归档信息.自动管理回滚段的开始与结束5 .rman备份信息.rman的配置信息关于操纵文件的内容,能够通过动态性能视图察看,也能够通过dump操纵文件内容方式来查 看alter session set events 'immediate trace name controlf level 12'生成的转储文件将作为用户进程跟 踪文件储存在相应的目录中,通常在udump目录中。操纵文件复用,能够通过参数文件中的control_files指定.alter session set controLfiles/con 1 .ctl,*/con2.ctl' scope=spfile;通过 spfile 复用操纵文件1 .cp */conl.ctl */con2.ctl 复制一份.startup 启动获得操纵文件的信息v$controlfile列出数据库所有操纵文件的名字,状态v$parameter列出所有参数的设置v$controlfile_record_section列出操纵文件记录的所有数据库特性参数的信息show parameter control_files也能够列出操纵文件的位置重做日志文件则记录薮据库中的所有操作日志信息,重做日志文件按照操作发生的时间顺序, 记录了数据库中所有的数据块改变,不论是数据字典信息的改变还是用户数据的改变或者者同 滚段信息的改变,都以重做日志记录的形式记录在重做日志文件中,每个改变都叫做一条重做 日志记录由于所有的数据块改变都被记录在重做日志中,因此数据库在出现数据故障时,通过应用重做 日志记录,能够恢复所胡提交的数据,因此重做日志记录为数据库提供数据恢复的机制; 日志文件的大小固定不变,同时以日志组的方式管理,一个数据库至少需要两个日志组,每组 至少一个构成员所有的日志组文件被循环使用,当一个联机重做日志组的文件被写满时,LGWR进程切换到下 一个日志组继续写操作,这个动作叫做日志切换。日志切换时将发生检查点事件,该日志组的 日志内容所对应的所有脏数据将被写入数据文件,并置入同步标记(SCN)一个日志组能够有多个构成员文件,这些构成员文件在日志写操作时同时被写入相同的日志内 容,这种每组日志多个组员文件的结构被叫做日志文件的复用,复用的日志文件完全相同,防 止日志文件损坏造成数据库的不可恢复配置重做日志的建议1 .足够多的日志组以减少等待,足够大的组员文件以减少切换频度2 .将日志文件复用,同时复用组员文件到不一致的磁盘中通常重做日志在当前构成员文被写满时会发生切换,切换时间并不确定,与日志文件大小与日 志产生的频度有关。当前正在被LGWR写的日志组的状态为current,这种日志组由于正在被写 入日志内容,因此不同意被直接删除alter system switch logfile;强制切换日志在强制日志切换后,当前组的状态不再是current, LGWR开始写下一个日志组,而刚才的日志 组状态已经变为active (激活的),这种状态表示该日志组内容对应的内存脏数据还没有被写入 数据文件,系统假如崩溃仍需要这部分日志内容进行恢复,因此这种状态的日志组仍然不能被 删除,为了使active状态的组能够被删除,务必触发写出脏数据的检查点事件发生。DBA能够 通过强制检查点的命令强制写出脏数据。在检查点完成后,日志组状态将改为inactive,如今该 日志组的内容对数据库已经没用了,能够被删除。alter system checkpoint;强制检查点检查点事件将引起DBWR写出内存中的所有脏数据,同时将同步标记(SCN)写入所有的数据 文件头与操纵文件中,因此检查点的执行影响着了系统崩溃时丢失的数据量,也意味着需要恢 复的数据量;检查点的执行频度决定了实例恢复时需要被恢复的数据量与需要应用的日志量, 因此能够认为检查点的频度影响着实例恢复的时间。用户往往对系统崩溃后的恢复时间有明确的要求,为了满足用户的实例恢复时间要求,务必操 纵检查点频度,在oracle 10g之前,为了确保实例恢复时间,DBA能够通过设置初化参数 fast_start_mttr_target来指定最大实例恢复时