owbsys 口令 oracle dba口令创建工作区时 默认的口令密码是什么?

oracle完全手册_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
oracle完全手册|o​r​a​c​l​e​简​单​实​用​介​绍
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢数据库存储空间由一个或多个表空间构成。(如system、sysaux...) &表空间(tablespace)组织数据库空间的逻辑结构,其对物理结构是数据文件,一个表空间物理上由一个或多个数据文件组成,逻辑上由一个或多个数据段组成。&数据段(segment)逻辑对象所占用空间,如表段,索引段,回滚段等,段存在于表空间中,并对应一定的存储空间。数据段又划分为一个或多个区间。&区(extent)区间是用于为数据一次性预留的一个逻辑上连续的一组disk空间(默认8块),每个区间占用一定数量的数据块。区不能跨数据文件。&块(block)数据库最小的存储单位(默认8k),是所有逻辑结构的基本分配单元。&一.&&& 表空间1.&&& 表空间概述&O&&& 功能和作用&组织数据段空间,控制存储空间的分配&通过使单个表空间在线或离线,控制数据的可用性&通过表空间划分实现跨越设备分配数据存储,以提高性能&通过指定用户使用指定表空间实现对用户的限制&执行部分数据的后备和恢复操作&O&&& 特点&数据中的最大逻辑单位&一个数据库逻辑上至少由一个系统表空间构成&一个表空间物理上至少由一个数据文件构成&一个表空间至少包括一个段(控制信息)&表空间的大小等于所有从属于它的数据文件大小的总和&O&&& 查询表空间使用状况SQL& select * from dba_& 查询数据库中所有表空间信息SQL&& select * from dba_data_& 查询表空间所含数据文件信息,不含临时表空间SQL& select * from dba_temp_&& 专查临时表空间所含数据文件SQL& select tablespace_name,sum(bytes) from dba_data_files group by tablespace_&&&&&&&&&&& 查询表空间大小SQL& select tablespace_name,sum(bytes) from dba_free_space group by tablespace_&&&&&&&&&&& 查询表空间空闲空间大小&测试表空间使用情况SQL& create tablespace test datafile '/u01/a.dat' size 5m;SQL& alter tablespace test add datafile '/u01/b.dat' size 6m;SQL& select tablespace_name,sum(bytes) from dba_data_files group by tablespace_TABLESPACE_NAME&&&&&&&&&&&&&&& SUM(BYTES)------------------------------ ----------TEST&&&&&&&&&&&&&&&&&&&&&&&&&&&& ..........SQL& select tablespace_name,sum(bytes) from dba_free_space group by tablespace_TABLESPACE_NAME&&&&&&&&&&&&&&& SUM(BYTES)------------------------------ ----------TEST&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(控制信息)..........SQL&create table lj tablespace test as select * from dba_SQL& select tablespace_name,sum(bytes) from dba_free_space group by tablespace_TABLESPACE_NAME&&&&&&&&&&&&&&& SUM(BYTES)------------------------------ ----------TEST&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 5111808&&O&&& 更改表空间SQL& alter tablespac&& 表空间更名SQL& alter tab&&&&&&&& 表空间脱机SQL& alter ta&&&&&&&&& 表空间联机SQL& alter database datafile '/u01/a.dat' 表空间中数据文件脱机SQL& alter database datafile '/u01/a.dat'& 表空间中数据文件联机失败alter database datafile '/u01/a.dat' online*ERROR at line 1:ORA-01113: file 6 needs media recoveryORA-01110: data file 6: '/u01/a.dat'SQL& recover datafile 6;SQL& alter database datafile '/u01/a.dat'表空间offline,数据文件offline 的区别在对表空间进行offline时,oracle需要针对这个表空间生成检查点,刷新表空间中数据文件的相关事务,更新数据文件头SCN,数据文件SCN,文件终止SCN,达到一致状态,当表空间被再次ONLINE时,oracle会捕捉online时刻的SCN,更新上面各个位置的SCN(当然文件结束SCN号会置为无穷大),将数据文件都打开在对单个数据文件做offline时,是立即offline,此时不会针对数据文件生成检查点,所以数据文件的终止SCN为无穷大,处于不一致状态,数据文件也需要recover,在v$recover_file视图也可以看到这个文件的信息,要想将数据文件online,必须先对文件执行recover操作,所以建议offline数据文件后应该立刻执行recover操作,使他处于一致状态,以免后面出现不必要的麻烦SQL& alter table&& 设置表空间只读SQL& alter tables& 设置表空间可读写&&O&&& 扩展表空间SQL& alter tablespace test add datafile '/u01/c.dat' size 500M;增加数据文件个数以扩充表空间(数据文件大约5~20个)SQL& alter database datafile '/u01/a.dat' resize 80M;扩充数据文件大小扩充表空间SQL& alter database datafile '/u01/a.dat' autoextend on maxsize 100M;&&&&&&&&&&&&&&&&&&&&&&& 设置自动扩充参数以自动扩充表空间&&O&&& 删除表空间SQL& drop tablespace test including co &&&&&&&&&&&&&&&&&&&&&&& 删除表空间和os下的数据文件& 2. 表空间的管理方式&O&&& 数据字典管理方式:(DMT dictionary managed tablespace)UET$(used extent):记载以使用的区间FET$(free extent):记载空闲空间每个使用空间或空闲空间(一个或多个extent)都在两表中对应了一行,当一表(即段)被删除的时候,oracle就移动UET$中相应的行到FET$,建表则反之,当并发性很高的时候,发生数据字典争用;另外当表达空间很不连续或表空间有大量的碎片引起这两个表达增大,也会引起数据库性能下降。oracle9.2以后已不支持DMT管理方式&&O&&& 本地表空间管理:(LMT,locally managed tablespace,默认)oracle不再利用数据字典表达记录表空间内区的使用状况,而是在每个表空间的数据文件的头部加入了一个位图区(二维数组区),在其中记录每个区的使用状况。每当一个区被使用,或者被释放以供重新使用时,oracle都会跟新数据文件头部的这个记录以反映该变化,从而减少了数据字典表的竞争,提高了空间管理的并发性,且能自动优化区的管理以避免碎片的产生。SQL& select tablespace_name,extent_management from dba_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 查询表空间使用的管理方式本地表空间管理分两类&autoallocate管理方式:由系统自动决定extents大小(默认)若表空间中的extent的尺寸是不一定的,即需要不同的区大小和拥有很多区的大小变动的对象,这时使用autoallocate是比较合理的选择。虽然有可能浪费了一些空间,但是有oracle管理空间的使用(空间分配和回收),简化了用户的管理对于8k的data blocks,每个segment的前16个exten大小是64k,接着的63个extent是1M的,再接着是120个8M的,然后是64M&uniform管理方式:由用户指定extents大小(临时表空间只能使用此方法)若想要准确控制未用的空间,并且能够精确地预计为一个或更多对象要分配的空间和盘区的数目、大小等,那么使用uniform选项更合适,因为它确保在表空间中永远不会有一定数量的未用空间。uniform size的默认大小是1M,此时,使用此方式创建数据文件时,数据文件的大小至少为1M当指定uniform参数时,若过小则大表被分配过多分区,若过大则小表将浪费掉分区空间,可设置不同uniform大小的表空间以适应不同大小对象,一个较标准的LMT+uniform的用户表空间(不考虑system/temp/undo)应有8个表空间,4个for data,4个for index:对象小于1M:&&&&& uniform size 64k(or 128k)对象介于1~20M:& uniform size 1M对象介于10~100M:uniform size 10M对象大于100M:&&& uniform size 100MSQL& create tablespace t1 datafile 't1.dbf' size 5M; 默认建立autoallocate管理的表空间SQL& create tablespace t2 datafile 't2.dbf' size 5M uniform size 2M;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 建立uniform管理的表空间SQL& select tablespace_name,allocation_type from dba_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 查看所有表空间的本地管理方式3. 表空间分类按内容分为:PERMANENT永久表空间,TEMPORARY临时表空间,UNDO回滚表空间.表空间主要分为系统表空间(system、sysaux),数据表空间(user),回滚表空间(undotbs),临时表空间(temp)。&&O&&& 系统表空间每个数据库都必须具备一个system表空间,该表空间是在数据库创建或数据库安装时自动创建的,名称不能更改,任何时候均必须保持online状态,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。为避免系统表空间产生磁场碎片以及争用系统资源的问题,应单独创建至少一个独立的表空间用来单独抽出用户数据。sysaux表空间也随数据库的创建而创建,是system表空间的辅助表空间,主要存储存放支持oracle系统活动的多种工具如logminer等,sysaux降低了system表空间的负荷。&&O&&& 数据和索引表空间由用户在数据建立完毕自行创建,是数据库空间的最主要组成部分,数据表空间应该建立多个,建立不同用户及性质的数据库对象时应指定其存放在指定的数据表空间中,索引表空间也应建立多个,并分类将不同对象的索引按大小及访问频度分别指定存放到指定的数据表空间中。通常情况下,数据和索引表空间应建立适当多个,太少则单个表空间过大,数据不安全且恢复费时,太小则难管理。数据库创建时默认创建users表空间,包含一个数据文件user01.dbf,新建用户的未指定存储表空间时默认使用该表空间。&SQL& create tablespace data01 datafile '/u01/data01.dbf' size 50M;新建数据表空间SQL& create tablespace index01 datafile '/u01/index01.dbf' size 50M;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 新建索引表空间SQL& create user kitty identified by "123456";&&&&& 纯数字口令用&&SQL& grant connect,&&&&&&&&&&&&&&&&&&&& 赋一组权限$sqlplus kitty/123456SQL& create table i (i char);SQL& select table_name,tablespace_name from user_tables where table_name='I';&TABLE_NAME&&&&&&&&&&&&&&&&&&&& TABLESPACE_NAME------------------------------ ------------------------------I&&&&&&&&&&&&&&&&&&&&&&&&&&&&& USERS&SQL& select index_name,tablespace_name from user_indexes where index_name='II';INDEX_NAME&&&&&&&&&&&&&&&&&&&& TABLESPACE_NAME------------------------------ ------------------------------II&&&&&&&&&&&&&&&&&&&&&&&&&&&& USERS新建用户kitty所建表与索引都被查处在缺省users表空间中SQL& conn sys as sysdba& SQL& alter user kitty default tablespace data01; 以sysdba更改默认使用表空间SQL& select table_name,tablespace_name from user_TABLE_NAME&&&&&&&&&&&&&&&&&&&& TABLESPACE_NAME------------------------------ ------------------------------I&&&&&&&&&&&&&&&&&&&&&&&&&&&&& USERSO&&&&&&&&&&&&&&&&&&&&&&&&&&&&& DATA01用户kitty所建表已被存储data01表空间中SQL& create index oo on o (o);SQL& select table_name,tablespace_name from user_TABLE_NAME&&&&&&&&&&&&&&&&&&&& TABLESPACE_NAME------------------------------ ------------------------------O&&&&&&&&&&&&&&&&&&&&&&&&&&&&& DATA01I&&&&&&&&&&&&&&&&&&&&&&&&&&&&& USERSkitty所建索引也被查处在data01表空间中,要指定其存储表空间为index01,只能在建索引是显示指定。SQL&SQL& create index oo on o (o) tablespace index01;SQL& select table_name,tablespace_name from user_TABLE_NAME&&&&&&&&&&&&&&&&&&&& TABLESPACE_NAME------------------------------ ------------------------------O&&&&&&&&&&&&&&&&&&&&&&&&&&&&& INDEX01&&O&&& 回滚表空间undo数据又称回滚(rollback)数据,用户确保数据的一致性,当执行DML操作时,事务操作前的数据被称undo记录,undo表空间用于保存undo记录。undo表空间用户保存undo记录,是数据库空间的最关键的组成部分,其对数据库的运行影响很大。oracle 8i及之前称rollback tablespace,oracle 9i及之后成为undo tablespace对delete操作,undo记录整行数据,update操作则只记录被修改的字段变化前数据,insert操作则记录插入记录的rowid(唯一)。Oracle 9i以前使用回滚来管理undo数据,灵活但管理麻烦。oracle 9i后数据库通过建立undo表空间,由oracle自动分配回滚段的个数和大小来自动管理undo数据,管理简单但欠灵活。数据库创建时默认建立一个回滚段表空间undotbs1,包含一个数据文件undotbs01.dbs。SQL&NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TYPE&&&&&&& VALUE-------------------- ----------- ---------------------------undo_management&&&&&& string&&&&& AUTO& undo数据的管理方式undo_retention&&&&& integer&&&& 900& 事务提交后undo数据继续保留(flashback查询)的秒数undo_tablespace&&&&&& string&&& UNDOTBS1&& 当前使用的undo表空间名,默认系统中可回滚表空间,但只能一个能被在当前实例中使用&SQL& select tablespace_name,contents from dba_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 查询数据库中那些表空间是undo表空间SQL& select to_char(begin_time,'hh24:mi:ss') begin_time,to_char(end_time,'hh24:mi:ss') end_time,undoblks from v$BEGIN_TI END_TIME&& UNDOBLKS-------- -------- ----------18:32:39 18:43:24&&&&&&&&& 8查DB运行过程中每10分钟周期内事务所占block数。DB默认每10分钟自动生成统计。&SQL& create table t1 as select * from dba_objects where 1=2;SQL& insert into t1 select *& from dba_SQL& select to_char(begin_time,'hh24:mi:ss')begin_time,to_char(end_time,'hh24:mi:ss') end_time,undoblks from v$BEGIN_TI END_TIME&& UNDOBLKS-------- -------- ----------18:42:39 18:49:53&&&&&&& 13918:32:39 18:42:39&&&&&&&&& 9& SQL&select r.name,s.serial#,s.sid,s.username,t.status,t.cr_get,t.phy_io,t.used_ublk,t.noundo,substr(s.program,1,40) from sys.V_$session s,sys.v_$transaction t,sys.v_$rollname r where t.addr = s.taddr and t.xidusn = r.查当前所有事务在回退段上所占的block数&SQL& select name,value from v$sysstat where name in ('user commits','transaction rollbacks');NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& VALUE---------------------------------------------------------------- ----------user commits&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 114transaction rollbacks&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1查DB中回退事务与提交事务所占比例,回退事务应该尽量少&O&&& 临时表空间&临时表空间(temp tablespace)主要用于存储oracle数据库运行期间所产生的历史数据,及用于进行排序。数据库关闭后,临时表空间中所有数据将全部被清除,故临时表空间外地其他所有表空间都属于永久性表空间数据库创建时默认建立一临时表空间temp。包含一数据文件temp01.dbf,对于大型操作(大型查询,大型分类查询,大型统计分析等)频繁的环境,应建立多个临时表空间,并分别归属不同临时表空间,以避免多用户及多任务竞争该临时表空间SQL& select tablespace_name from dba_SQL& select * from dba_temp_查看系统默认临时表空间及对应数据文件SQL& create temporary tablespace temp02 Tempfile&'/u01/app/oracle/oradata/ora10/temp02.dbf' size 50M;新建临时表空间SQL& select tablespace_name,allocation_type from dba_临时表空间只能使用uniform管理方式&SQL& create temporary tablespace temp1 tempfile '/u01/temp1.dbf' size 50M tablespace group group1;SQL& create temporary tablespace temp2 tempfile '/u01/temp2.dbf' size 5M tablespace group group1;SQL& select * from dba_tablespace_创建并查看临时表空间SQL& select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';SQL& select username,temporary_tablespace from dba_查看系统默认使用的临时表空间,及所有用户使用的默认临时表空间&SQL& conn sqlplus kitty/123456SQL& select username,temporary_tablespace from user_USERNAME&&&&&&&&&&&&&&&&&&&&&& TEMPORARY_TABLESPACE------------------------------ ------------------------------KITTY&&&&&&&&&&&&&&&&&&&&&&&&& TEMPSQL& conn sqlplus / as sysdbaSQL& alter user kitty temporary tablespace group1;SQL& conn sqlplus kitty/123456SQL& select username,temporary_tablespace from user_USERNAME&&&&&&&&&&&&&&&&&&&&&& TEMPORARY_TABLESPACE------------------------------ ------------------------------KITTY&&&&&&&&&&&&&&&&&&&&&&&&& GROUP1SQL& conn sqlplus / as sysdbaSQL& select username,session_num,tablespace from v$sort_no rows selected&&&&&&&&&&&&&&&&&&&&& 查看临时表空间使用情况$ sqlplus kitty/123456SQL& select a.table_name,b.table_name from dict A,dict B order by a.table_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 发起排序使其使用表空间SQL& select username,session_num,tablespace from v$sort_USERNAME&&&&&&&&&&&&&&&&&&&&&& SESSION_NUM TABLESPACE------------------------------ ----------- -------------------------------KITTY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 111 TEMP1$ sqlplus kitty/123456SQL& select a.table_name,b.table_name from dict A,dict B order by b.table_发起另一个排序SQL& select username,session_num,tablespace from v$sort_USERNAME&&&&&&&&&&&&&&&&&&&&&& SESSION_NUM TABLESPACE------------------------------ ----------- -------------------------------KITTY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 116 TEMP1KITTY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 135 TEMP2同一用户的不同session可以使用临时表空间组中的不同临时表空间SQL& alter tablespace temp2 tablespace group group2;SQL& select * from dba_tablespace_GROUP_NAME&&&&&&&&&&&&&&&&&&&& TABLESPACE_NAME------------------------------ ------------------------------GROUP1&&&&&&&&&&&&&&&&&&&&&&&& TEMP1GROUP2&&&&&&&&&&&&&&&&&&&&&&&& TEMP2移动临时表空间到新的临时表空间组(新的组不存在则自动创建)&SQL& alter tablespace temp2 tablespace group ''; 将临时表空间从组中移出(组中的历史表空间全部移出则自动删除)。SQL& alter database default temporary tablespace group1;&&&&&&&&&&&&&&&&&&& 更改系统默认使用的临时表空间SQL& select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';SQL& select username,temporary_tablespace from dba_再查系统默认使用的临时表空间,及所有用户的默认临时表空间&二.段(segment)&O&& 概述&为特定的数据库的对象(如表,索引等)分配的一系列数据存储区域&默认段名与数据库对象名相同&一个对象一般只对应一个段&一个段segment只能属于一个表空间,但可以跨多个数文件&段分为数据段,索引段,回滚段,临时段等类型&SQL& select segment_name,segment_type,tablespace_name,bytes from dba_查询系统中所有段SQL& select segment_type from dba_segments group by segment_查询系统中所有段种类&&O&&& 段管理方式MSSM(manual segment space management)在每个段中以freelist链表方式管理段中空闲数据块(块中空闲区高于pctfree值),是oracle 9.2以前的数据块管理方式。ASSM(automatic segment space management,默认)以位图BMB(bitmap managed segments)方式管理段中的空闲数据块(块中空闲区高于pctfree值)以避免freelist链表竞争,是oracle 9.2开始新出现的数据块管理方式。区别:1.注意ASSM与内存管理中的ASMM不同2.DMT/LMT和MSSM/ASSM的联系与区别:两者都在建立表空间是指定DMT/LMT用于管理(segment中)空闲的extentMSSM/ASSM用于管理(extent中的)空闲的blockSQL& select tablespace_name,extent_management,allocation_type,segment_space_management from dba_查询表空间的空闲extent管理方式(DMT/LMT)和空闲block管理方式(MSSM/ASSM)SQL& create tablespace tb1 datafile '/u01/tb1.dbf' size 10M segment spa 指定表空间的段空间管理方式为MSSM&(1)&&& 数据段数据段也称为表段,它包含数据并且与表和簇相关。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。数据段是用于存储数据的段,其存储在数据表空间中,每一个表都有一个数据段,表的数据存储在数据段中,默认情况下段名与表名相同。SQL& create table lj tablespace data01 as select * from dba_在指定表空间中建表SQL& select segment_name,segment_type,tablespace_name,bytes from dba_segments where segment_name='LJ';& 查询随建表而建立的数据段&(2)&& 索引段索引段用于存储索引,包含了用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引段名字命名的索引段。SQL& create index liuj on lj (object_id);&&&&&&&& 对表建立索引SQL& select index_name,table_name,tablespace_name from dba_indexes where index_name='LIUJ';(3)&&& 回退段回退段用于存储用户数据修改之前的值,因而可以在特定条件下回退数据。回退段与事务是一对多的关系,一个事务只能使用一个回退段,而一个回退段可存放一个或多个事务的回退数据。当一个事务开始处理时,系统为之分配回滚段存储回滚信息,当所有回滚段都已被事务所占用是,系统将创建出新的回滚段来存储新事物的回滚信息,当表空间中无空间可用于分配新的回滚段时,多个事务将共同一个回滚段。Oracle 9i之后,oracle增加了undo表空间,由系统自动管理。故可不再需要考虑对回滚段的管理,在系统自动管理模式下,oracle会自动完成回滚段的创建、删除以及online/offline,DBA不能干预这些操作。SQL& select segment_id,segment_name from dba_rollback_查询undo表空间中的回退段SQL& select a.name,b.xacts,b.writes,b.extents,b.wraps from v$rollname a,v$rollstat b where a.usn=b.&& 查每个回退段名称,每个段当前所包含活动事务数,启动后每个段上所有活动事务在该段上所占字节数,每个段的大小(extent的个数)及启动后的wraps(翻转)次数。SQL& select segment_name,extent_id,bytes,status from dba_undo_查回退段是extent分配详情及状态:active:有活动事务在此extent上unexpired:已结束事务,undo信息未达到undo_retention时间限制expired:已结束事务,undo信息超过undo_retention时间限制$sqlplus / as sysdbaSQL& create table kitty.t1 as select * from dba_$sqlplus kitty/123456SQL& insert into t1 select * from t1;SQL&conn sys/redhat as sysdbaSQL& select a.username,b.name,c.used_ublk from v$session a,v$rollname b,v$transaction c where a.saddr=c.ses_addr and b.usn=c.USERNAME&&&&&&&&&&&&&&&&&&&&&& NAME&&&&&&&&&&&&&&&&&&&&&&&&&&& USED_UBLK------------------------------ ------------------------------ ----------KITTY&&&&&&&&&&&&&&&&&&&&&&&&& _SYSSMU6$&&&&&&&&&&&&&&&&&&&&&&&&&&&& 202KITTY&&&&&&&&&&&&&&&&&&&&&&&&& _SYSSMU10$&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 2查DB中所有活动(未提交或回退)事务所占用的回退段情况&事务将以顺序循环的方式使用回滚段的区,在当前区用满后就使用下一个区,几个事务可以使用回滚段的同一个区,但每个回滚段的块只能包含一个事务的信息。&例如(两个事务使用同一个回滚段,该回滚段有四个区):1.&&& 事务在进行中,它们正在使用回滚段的第三个区;2.&&& 当两个事务产生更多的回滚信息,它们将继续使用第三个区;3.&&& 当第三个区满后,事务将写到第四个区,当事务开始写到一个新的区时,称为wrap4.&&& 当第四个区用满时,若第一个区是空闲或非活动的,即该区中所有事务均已完成,没有未提交或提交或回退事务,则事务将循环再使用第一个区。&回滚段的扩张(extend)在当前的所有块用完而事务还需要更多的回滚空间是,将使用回滚段的下一个区,当最后一个区用完,将循环重新使用第一个区。回滚段使用下一个区的前提是下一个区没有活动事务,若下一个区正在使用即存在活动事务时,事务将未回滚段分配一个新的区,插入到当前区和下一个区之间,这种分配称为回滚段的扩展。回滚段将一直扩展到区的个数到达回滚段的参数maxextents的值时为止。&SQL& select segment_name,owner,status from dba_rollback_查询数据库自动管理回退信息时在undo表空间中使用的回退段$sqlplus / as sysdbaSQL& create table a as select * from dba_SQL& create table b as select * from dba_SQL&SQL& select distinct sid from v$&& SID----------&& 145建两个测试表,发起一个delete操作消耗回滚段空间,并查找任务号$sqlplus / as sysdbaSQL& update b set object_id=0;SQL& select distinct sid from v$&&&&&& SID----------&&&&&& 148另开一会话并发起另一update操作消耗回滚段空间,并查找任务号SQL&select r.name,s.serial#,s.sid,s.username,t.status,t.cr_get,t.phy_io,t.used_ublk,t.noundo,substr(s.program,1,40) from sys.v_$session s,sys.v_$transaction t,sys.v_$rollname r where t.addr=s.taddr and t.xidusn=r.usn and s.sid=145;NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SERIAL#&&&&&&& SID USERNAME&&&&&&&&&&&&&&&&&&&&&& STATUS&&&&&&&&&&&&&& CR_GET&&&& PHY_IO& USED_UBLK NOU------------------------------ ---------- ---------- ------------------------------ ---------------- ---------- ---------- ---------- ---SUBSTR(S.PROGRAM,1,40)--------------------------------------------------------------------------------_SYSSMU7$&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 20&&&&&&& 145 SYS&&&&&&&&&&&&&&&&&&&&&&&&&&& ACTIVE&&&&&&&&&&&&&&&&& 836&&&&&&& 330&&&&&&& 1455 NO (TNS V1-V3SQL&select r.name,s.serial#,s.sid,s.username,t.status,t.cr_get,t.phy_io,t.used_ublk,t.noundo,substr(s.program,1,40) from sys.v_$session s,sys.v_$transaction t,sys.v_$rollname r where t.addr=s.taddr and t.xidusn=r.usn and s.sid=148;NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SERIAL#&&&&&&& SID USERNAME&&&&&&&&&&&&&&&&&&&&&& STATUS&&&&&&&&&&&&&& CR_GET&&&& PHY_IO& USED_UBLK NOU------------------------------ ---------- ---------- ------------------------------ ---------------- ---------- ---------- ---------- ---SUBSTR(S.PROGRAM,1,40)--------------------------------------------------------------------------------_SYSSMU3$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 2&&&&&&& 148 SYS&&&&&&&&&&&&&&&&&&&&&&&&&&& ACTIVE&&&&&&&&&&&&&&&& 2181&&&&&&& 308&&&&&&& 1022 NO (TNS V1-V3查看delete和update操作分别消耗量哪个回滚段多少空间&回滚段的回缩(shrink)undo表空间被系统自动重复使用,当有大事务发生时,系统将自动扩充undo表空间,但不会自动回缩,故需手工回缩undo表空间SQL& create undo tablespace undotbs02 datafile '/u01/app/oracle/oradata/ora10/undotbs02.dbf' size 100M;&&&&&&&&&&&&&&&&&&&&&&& 新建回滚表空间SQL& alter system set undo_tablespace=undotbs02;&&&& 设置新的回滚表空间SQL& show parameter undo_&&&&&&& 查询当前使用的undo表空间名NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TYPE&&&&&&& VALUE------------------------------------ ----------- ------------------------------undo_tablespace&&&&&&&&&&&&&&&&&&&&& string&&&&& UNDOTBS02SQL& select segment_name,owner,status from dba_rollback_查询数据库自动管理回退信息时在undo表空间中使用的回退段。可见原测试所占回滚段仍online,提交或回滚测试语句不久后将offline&(4)&&& 临时段是oracle在运行过程中自行创建的段,当一个sql语句需要临时工作区时,由oracle建立临时段,一旦语句执行完毕,临时段的区间便退回给系统临时段用于order by语句的排序以及一些汇总$sqlplus kitty/123456SQL& select a.table_name,b.table_name from dict a,dict b order by a.table_$sqlplus / as sysdbaSQL& select segment_file,total_extents,total_blocks,used_extents used_blocks,free_extents,free_blocks from v$sort_SEGMENT_FILE TOTAL_EXTENTS TOTAL_BLOCKS USED_BLOCKS FREE_EXTENTS FREE_BLOCKS------------ ------------- ------------ ----------- ------------ -----------&&&&&&&&&& 0&&&&&&&&&&& 22&&&&&&&& 2816&&&&&&&&& 20&&&&&&&&&&& 2&&&&&&&& 256查临时表空间中每个临时段(文件)的总区/块数,已用区/块数及空间区/块数。SSQL& select username,segfile#,extents,blocks from v$sort_USERNAME&&&&&&&&&&&&&&&&&&&&&&&& SEGFILE#&&& EXTENTS&&&& BLOCKS------------------------------ ---------- ---------- ----------KITTY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 201&&&&&&&& 20&&&&&& 2560查当前使用临时表空间中临时段(文件)的用户,及所占区/块数。SQL& create temporary tablespace temp2 tempfile '/u01/temp2.dat' size 10M;创建临时表空间及其大小SQL& alter database default temporary tablespace temp2;设置默认使用的临时表空间三 区(extent)&O&&& 概述&又称范围,是一组表空间内连续分配的相临数据块&是数据库分配disk空间的最小逻辑单位,也是表中数据增长的基本单位&一个oracle对象包含至少一个数据区&O&&& 区的storage分配参数initial:&&& 段建立时被分配的第一个区(第一块空间)的大小next:&&&&&&& 段被分配的第二个区的大小minextents:& 段被分配的区个数下限maxextents:& 段被分配的区个数上限pct-increase:从第3个分区开始,段被分配的新区比前一个分配的分区扩大到百分比&uniform管理方式下,表空间的extent分配原则是:initial,next值固定为uniform指定值,min,max,pct参数自动设置默认值(分别为1,2^31,0);表空间中新建表时,extent分配情况按表空间所定参数进行,并以固定不变的uniform值进行extent扩充,而建表时指定上述各项storage参数无效(注意initial_extent)。SQL& create tablespace tb1 datafile 'tb1.dbf' size 100M uniform size 1500k;建表空间指定uniform分区大小SQL& select substr(tablespace_name,1,8),initial_extent,next_extent,min_extents,max_extents,pct_increase from dba_SUBSTR(TABLESPAC INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE---------------- -------------- ----------- ----------- ----------- ------------TB1&&&&&&&&&&&&&&&&&&& 1540096&&&& 1540096&&&&&&&&&& 1& &&&&&&&&&&& 0查表空间分配情况SQL& select substr(table_name,1,8),initial_extent,next_extent,min_extents,max_extents,pct_increase from dba_tables where table_name='T1';SUBSTR(TABLE_NAM INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE---------------- -------------- ----------- ----------- ----------- ------------T1&&&&&&&&&&&&&&&&&&&&& 253952&&&& 1540096&&&&&&&&&& 1& &&&&&&&&&&& 0查表分区参数,可见所有指定参数均失效(注意initial_extent)SQL& select extent_id,substr(segment_name,1,8),tablespace_name,bytes from dba_extents where segment_name='T1';&EXTENT_ID SUBSTR(SEGMENT_N TABLESPACE_NAME&&&&&&&&&&&&&&&&&&&& BYTES---------- ---------------- ------------------------------ ----------&&&&&&&& 0 T1&&&&&&&&&&&&&& TB1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1540096&SQL& select extent_id,substr(segment_name,1,8),tablespace_name,bytes&from dba_extents where segment_name='T1';查询指定表的实际分区情况,可见首个分区分配为uniform指定值SQL& insert into t1 select * from dba_SQL& select extent_id,substr(segment_name,1,8),tablespace_name,bytes&from dba_extents where segment_name='T1';&EXTENT_ID SUBSTR(SEGMENT_N TABLESPACE_NAME&&&&&&&&&&&&&&&&&&&& BYTES---------- ---------------- ------------------------------ ----------&&&&&&&& 0 T1&&&&&&&&&&&&&& TB1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1540096&&&&&&&& 1 T1&&&&&&&&&&&&&& TB1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1540096&&&&&&&& 2 T1&&&&&&&&&&&&&& TB1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1540096&&&&&&&& 3 T1&&&&&&&&&&&&&& TB1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1540096扩充表后再用上一条命令表达实际分区情况,可见扩充分区分配也均为uniform&autoallocate管理方式下,表空间的extent分配原则是:initial,min,max自动取默认值(64k,1,2^31),next,pct参数无效;表空间中新建表时,extent分配情况按表空间所定参数进行,并以下规则进行extent扩充,而建表是指定上述各项storge参数无效。&next,pct参数无效,所有空间分配按64k 的整数倍大小进行分配;&第1-15个分区,每个分区大小64k,合计1M;&第16-79个分区,每个分区大小1M,合计63M,以上两项大小合计64M;&第80-199个分区,每个分区大小8M,合计960M,以上三项合计1G;&第200个分区以上,每个分区大小是64M;oracle10.2.0.2分区分配规则:&第0-127个分区,每个分区大小8M,合计1G;&第128个分区以上,每个64M。SQL& create tablespace tb2 datafile 'tb2.dbf' size 100M;建表空间默认使用autoallocate管理方式SQL& select substr(tablespace_name,1,8),initial_extent,next_extent,min_extents,max_extents,pct_increase from dba_SUBSTR(TABLESPAC INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE---------------- -------------- ----------- ----------- ----------- ------------TB2&&&&&&&&&&&&&&&&&&&&&& 65536&&&&&&&&&&&&&&&&&&&&&& 1& 查表空间分区分配情况SQL& create table t2 tablespace tb2 storage (initial 50k next 80k minextents 3 maxextents 9 pctincrease 40) as select * from dba_objects where 1=2;SQL& select substr(table_name,1,8),initial_extent,next_extent,min_extents,max_extents,pct_increase from dba_tables where table_name='T2';SUBSTR(TABLE_NAM INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE---------------- -------------- ----------- ----------- ----------- ------------T2&&&&&&&&&&&&&&&&&&&&&& 253952&&&&&&&&&&&&&&&&&&&&&& 1& 查表分区参数,可见所有指定参数均失效(注意initial_extent)SQL& select extent_id,substr(segment_name,1,8),tablespace_name,bytes from dba_extents where segment_name='T2';查询指定表的实际分区情况,可见首个分区分配为64kSQL& insert into t2 select * from dba_扩充表后再用上一条命令表达实际分区情况,可见扩充分区分配满足上页规则。Free list&free group在segment中,若同一时刻发生多个insert,将引起free list争用,故一个segment中一般存在多个free list。free list的多少决定了同一时刻可以在同一segment中进行insert操作的数量。多个free list又可归属于不同的free list group。SQL& create table t5(a int,b char(16));SQL& select substr(segment_name,1,8),freelists,freelist_groups from dba_segments where segment_name='T5';SUBSTR(SEGMENT_N& FREELISTS FREELIST_GROUPS---------------- ---------- ---------------T5&&&&&&&&&&&&&&&&&&&&&&& 1&&&&&&&&&&&&&& 1SQL& alter table t5 storage (freelists 5);SQL& select substr(segment_name,1,8),freelists,freelist_groups from dba_segments where segment_name='T5';SUBSTR(SEGMENT_N& FREELISTS FREELIST_GROUPS---------------- ---------- ---------------T5&&&&&&&&&&&&&&&&&&&&&&& 5&&&&&&&&&&&&&& 1SQL& create table t6 (a int,b char(16)) storage (freelists 4 freelist groups 2);SQL& select substr(segment_name,1,8),freelists,freelist_groups from dba_segments where segment_name='T6';SUBSTR(SEGMENT_N& FREELISTS FREELIST_GROUPS---------------- ---------- ---------------T6&&&&&&&&&&&&&&&&&&&&&&& 4&&&&&&&&&&&&&& 2当freelist group=1时,freelist都存储在segment header(第一个块)内,真正数据段存储就从第2块开始,当freelist group&1时,freelist从segment header内分离出来,存储在单独的块里面,每个freelistgroup占一个block,即真正数据段存储就从1(for segment header)+n(free list group数量)块之后的块开始。四 块(block)&O&&& 概述&是一个或一组连续的os块,大小是os块的整数倍(8k、512B)&是数据库中粒度最小的数据组织单位与管理单位&是数据文件disk存储空间单位,也是数据库I/O的最小单位&数据块大小由db_block_size参数决定,默认8k&9i以前只能设定一种块大小,9i/10g中不同表空间可指定不同的块大小&O&&& 块结构块头:&& 块概要信息,包括块地址,段类型等表目录: 在该块中存储了数据行动表的表信息行目录: 存储在该块中的数据行的行信息空闲区: 用于插入新行和需要额外空间的行更新行数据: 存储在该块中山数据行的具体内容块参数pctfree,pctusedpctfree(默认值10)当向一个空数据块插入的数据量达到该数据块大小1-pctfree时,即停止对该块进行插入(剩余空间留给update跟新使用),而再分配另一新数据块进行插入,并将该块从空闲块列表freelist中移除。经常进行update的表应将pctfree调高,则跟新时尽量保证跟新数据仍位于原数据块中,避免发生行迁移或行链接。因为update操作会消耗掉空闲空间,当一个块中的空闲因为太小而不够update操作消耗的话,系统就会增加新块,从而形成记录链接或行迁移影响表达I/O功能。pctused(默认值40)当数据块内数据被删除到pctused所指定点值时,即将该块移入空闲列表freelist中,使其可以接受新数据段插入。经常进行delete的表应将pctused调高,以便能有效利用空间,因为一个pctused值较高的数据块,其中能存放的数据将更多。该参数和pctfree配合使用,pctused越大越有利于insert,pctfree越大越有利于update。两参数加起来不能超过100.行迁移:一行记录初始插入时可以存储在一个块中,但因后来更新导致行长增加,而块的自由空间已经完全满脸,此时产生行迁移,将整行的数据迁移到一个新的数据块上。而将该行原先的空间只放一个指针,指向该行的新的位置。行链接:当第一个插入数据时一个块就不能存下一行记录的情况下,系统将使用链接在多个块中存储该记录。测试:SQL& create table t3(x int,y varchar2(200)) pctfree 0;SQL& create table t4(x int,y varchar2(200)) pctfree 20;SQL& begin& 2& for I in 1..4000& 3& loop& 4& insert into t3 values (I,'aaaaaaaaaa');& 5& insert into t4 values (I,'aaaaaaaaaa');& 6&& 7&& 8&& 9& /&SQL& select extent_id,blocks,block_id from dba_extents where segment_name='T3';&EXTENT_ID&&&& BLOCKS&& BLOCK_ID---------- ---------- ----------&&&&&&&& 0&&&&&&&&& 8&&&&& 61153&&&&&&&& 1&&&&&&&&& 8&&&&& 61177SQL& select extent_id,blocks,block_id from dba_extents where segment_name='T4';&EXTENT_ID&&&& BLOCKS&& BLOCK_ID---------- ---------- ----------&&&&&&&& 0&&&&&&&&& 8&&&&& 61161&&&&&&&& 1&&&&&&&&& 8&&&&& 61169&SQL& analyze table t3SQL& analyze table t4SQL& select chain_cnt from dba_tables where table_name='T3';&CHAIN_CNT----------&&&&&&&& 0SQL& select chain_cnt from dba_tables where table_name='T4';&CHAIN_CNT----------&&&&&&&& 0SQL& update t3 set y='aaaaaaaaaaa';SQL& update t4 set y='aaaaaaaaaaa';SQL&SQL& analyze table t3SQL& analyze table t4SQL& select chain_cnt from dba_tables where table_name='T3'; 行链接或行迁移&CHAIN_CNT----------&&&&&& 402SQL& select chain_cnt from dba_tables where table_name='T4';&CHAIN_CNT----------&&&&&&&& 0&SQL& select tablespace_name,segment_space_management from dba_查询表空间的段空间管理方式,ASSM方式下建立的表将忽略pct_used参数。SQL& create table test1 (id char(2));使用系统默认pctfree/pctused参数SQL& create table test2 (id char(2)) pctfree 20 pctused 50MSSM段空间管理方式中指定表的pctfree/pctused值SQL& create table test3 (id char(2)) pctfree 20 pctused 50ASSM段空间管理方式中指定表的pctfree/pctused值SQL& select table_name,pct_free,pct_used from user_tables where table_name in ('TEST1','TEST2','TEST3');TABLE_NAME&&&&&&&&&&&&&&&&&&&&&& PCT_FREE&& PCT_USED------------------------------ ---------- ----------TEST1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 10&&&&&&&& 40TEST2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 20&&&&&&&& 50TEST3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 20查询表的pct_free和pctused值&& Free list&free group在segment中,若同一时刻发生多个insert,将引起free list争用,故一个segment中一般存在多个free list。free list的多少决定了同一时刻可以在同一segment中进行insert操作的数量。多个free list又可归属于不同的free list group。SQL& create table t5(a int,b char(16));SQL& select substr(segment_name,1,8),freelists,freelist_groups from dba_segments where segment_name='T5';SUBSTR(SEGMENT_N& FREELISTS FREELIST_GROUPS---------------- ---------- ---------------T5&&&&&&&&&&&&&&&&&&&&&&& 1&&&&&&&&&&&&&& 1SQL& alter table t5 storage (freelists 5);SQL& select substr(segment_name,1,8),freelists,freelist_groups from dba_segments where segment_name='T5';SUBSTR(SEGMENT_N& FREELISTS FREELIST_GROUPS---------------- ---------- ---------------T5&&&&&&&&&&&&&&&&&&&&&&& 5&&&&&&&&&&&&&& 1SQL& create table t6 (a int,b char(16)) storage (freelists 4 freelist groups 2);SQL& select substr(segment_name,1,8),freelists,freelist_groups from dba_segments where segment_name='T6';SUBSTR(SEGMENT_N& FREELISTS FREELIST_GROUPS---------------- ---------- ---------------T6&&&&&&&&&&&&&&&&&&&&&&& 4&&&&&&&&&&&&&& 2当freelist group=1时,freelist都存储在segment header(第一个块)内,真正数据段存储就从第2块开始,当freelist group&1时,freelist从segment header内分离出来,存储在单独的块里面,每个freelistgroup占一个block,即真正数据段存储就从1(for segment header)+n(free list group数量)块之后的块开始。Free list&HWM(high water mark)一个表若预分配100万个block(如果用较大的initial extent参数),则oracle不会将全部100万个block都放到free list链表上,否则维护量太大,而是使用HWM(高水位)进行解决。HWR是一个标记,用来标记segment中有多少block是&已被用过&的,有多少block是&从未被用过&的。只要一block被用过,其就位于HWM以下了,即使块中数据全删除,该块也仍位于HWM以下,即HWM只升不降。HWM的好处是减小了freelist长度,因只有HWM以下的块才会放到freelist上,即oracle总使用以用过的空闲块进行insert,避免了空间浪费同时提高了free list的性能和可管理性;同时在需要扫描整个segment中数据块是,因HWM存在,也只需扫描HWM以下的块,从而提高了性能。测试:SQL& create table t7 (a int,b char(10));SQL& analyze table t7SQL& select blocks,empty_blocks from dba_tables where table_name='T7';&&& BLOCKS EMPTY_BLOCKS---------- ------------0&&& 7SQL& select substr(segment_name,1,8),header_file,header_block,blocks from dba_segments where segment_name='T7';SUBSTR(SEGMENT_N HEADER_FILE HEADER_BLOCK&&&& BLOCKS---------------- ----------- ------------ ----------T7&&&&&&&&&&&&&&&&&&&&&&&& 1&&&&&&& 61161&&&&&&&&& 8SQL& alter system dump datafile 1 block 61161;$vi /u01/app/oracle/admin/ora10/udump/ora10_ora_4366.trc..........& #blocks in seg. hdr's freelists: 0& #blocks below: 0&&&&&&&&&&&& ...............SQL& begin& 2& for I in 1..2000& 3& loop& 4& insert into t7 values (I,'aaaaaaaaaa');& 5&& 6&& 7&& 8& /SQL& analyze table t7SQL& select blocks,empty_blocks from dba_tables where table_name='T7';&&& BLOCKS EMPTY_BLOCKS---------- ------------&&&&&&&& 7&&&&&&&&&&& 0SQL& select extent_id,block_id,blocks from dba_extents where segment_name='T7';&EXTENT_ID&& BLOCK_ID&&&& BLOCKS---------- ---------- ----------&&&&&&&& 0&&&&& 61161&&&&&&&&& 8SQL& select substr(segment_name,1,8),header_file,header_block,blocks from dba_segments where segment_name='T7';SUBSTR(SEGMENT_N HEADER_FILE HEADER_BLOCK&&&& BLOCKS---------------- ----------- ------------ ----------T7&&&&&&&&&&&&&&&&&&&&&&&& 1&&&&&&& 61161&&&&&&&&& 8SQL& alter system dump datafile 1 block 61161;$vi /u01/app/oracle/admin/ora10/udump/ora10_ora_4366.trc& #blocks in seg. hdr's freelists: 2& #blocks below: 7SQL& begin& 2& for I in & 3& loop& 4& insert into t7 values (I,'aaaaaaaaaa');& 5&& 6&& 7&& 8& /SQL& analyze table t7SQL& select blocks,empty_blocks from dba_tables where table_name='T7';&&& BLOCKS EMPTY_BLOCKS---------- ------------&&&&&&& 12&&&&&&&&&&& 3&SQL& select extent_id,block_id,blocks from dba_extents where segment_name='T7';&EXTENT_ID&& BLOCK_ID&&&& BLOCKS---------- ---------- ----------&&&&&&&& 0&&&&& 61161&&&&&&&&& 8&&&&&&&& 1&&&&& 61169&&&&&&&&& 8SQL& select substr(segment_name,1,8),header_file,header_block,blocks from dba_segments where segment_name='T7';SUBSTR(SEGMENT_N HEADER_FILE HEADER_BLOCK&&&& BLOCKS---------------- ----------- ------------ ----------T7&&&&&&&&&&&&&&&&&&&&&&&& 1&&&&&&& 61161&&&&&&&& 16$vi /u01/app/oracle/admin/ora10/udump/ora10_ora_4366.trc& #blocks in seg. hdr's freelists: 1& #blocks below: 12&SQL& delete from t7 where a&500;SQL&SQL& analyze table t7SQL& select blocks,empty_blocks from dba_tables where table_name='T7';&&& BLOCKS EMPTY_BLOCKS---------- ------------&&&&&&& 12&&&&&&&&&&& 3SQL& select extent_id,block_id,blocks from dba_extents where segment_name='T7';&EXTENT_ID&& BLOCK_ID&&&& BLOCKS---------- ---------- ----------&&&&&&&& 0&&&&& 61161&&&&&&&&& 8&&&&&&&& 1&&&&& 61169&&&&&&&&& 8SQL& select substr(segment_name,1,8),header_file,header_block,blocks from dba_segments where segment_name='T7';SUBSTR(SEGMENT_N HEADER_FILE HEADER_BLOCK&&&& BLOCKS---------------- ----------- ------------ ----------T7&&&&&&&&&&&&&&&&&&&&&&&& 1&&&&&&& 61161&&&&&&&& 16SQL& alter system dump datafile 1 block 61161;$vi /u01/app/oracle/admin/ora10/udump/ora10_ora_4366.trc&#blocks in seg. hdr's freelists: 11& #blocks below: 12HWM太高,HWM下空闲块过多的解决办法:1.&&&2.&&&3.&&& alte(for oracle10g)&数据块头(包含块头,表目录区,行目录区)组成:1.&&& 定长部分数据:记录block bype(即segment type),block地址等。2.&&& 变长部分数据:行地址,ITL(interested transaction list)等ITL实际为block header中的一段用于保存数据的数据结构,称为ITL slot,其中保存的数据包括block中关于事务信息的记录,包括list编号、回滚段地址、事务状态、事务在该block影响的记录条数等。每个需要存取该数据块的事务都需先获得一个该数据块的ITL slot,因此一个数据块上ITL slot入口的多少决定该数据块支持并发事务数量的多少,可在create table时以inittrans(默认1)和maxtrans(默认255)参数指定初始和最大ITL slot数,当initrans&=2时,每个分配的数据块中都会有2个ITL slot,当ITL slot不够用时,oracle会动态增加ITL slot的数量。&Free list和ITL都影响并发性,区别如下:1.&&& ITL影响block层的并发性,free list影响segment层的并发性;2.&&& ITL影响并发的事务,free list影响并发的insert操作;3.&&& 事务进行全程均占用ITL,事务结束后释放;insert仅在事务进行前搜索占用free list,事务进行时free list已释放;Block cleanouts(块清除) :当事务commit时;block中的block中的ITL被清除,&O&&&& Fash block cleanoutscommit时若需cleanouts的块位于buffer cache,则立即清除ITL,若事务太大,需要清除的块数量大于buffer cache的10%,则暂只立即清除10%以内的部分。&O&&& Delayed block cleanoutscommit时若需cleanouts的块已写到disk,则延时清除ITL,若事务太大,需要清除的块数量大于buffer cache的10%,则10%以外的部分进行延时清除。延时清除将在块被再次访问进行以提高commit的性能。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:88243次
积分:1435
积分:1435
排名:第12104名
原创:22篇
转载:208篇
评论:88条
(5)(5)(5)(11)(6)(7)(8)(17)(22)(2)(2)(1)(5)(2)(3)(12)(7)(12)(6)(16)(37)(10)(3)(20)(12)(3)(9)(1)(1)}

我要回帖

更多关于 oracle dba口令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信