版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库程序员面试分类真题11简答题1.
数据库和实例的区别是什么?正确答案:数据库(Database)是一个数据集合,Oracle数据库将其数据存放在数据文件中。在物理结构上,Oracle数据库必(江南博哥)需的3类文件分别是数据文件、控制文件和联机Redo日志文件。在逻辑结构上,Oracle数据库由表空间、段、区和块组成。数据库名称由DB_NAME来标识。
实例(Instance)是操作Oracle数据库的一种手段。它是由OS分配的一块内存(包括SGA和PGA)和一些后台进程(PMON、SMON、LGWR、CKPT、DBWn等)组成的。一个数据库可以被一个实例(SingleInstance,单实例)或多个实例访问或挂载(RAC,集群)。实例启动时读取初始化参数文件(SPFILE或PFILE)。实例名称由INSTANCENAME来标识。[考点]逻辑结构
2.
在Oracle中,数据块、Redo日志块及控制文件数据块的大小分别是多少?如何查询?正确答案:这3种数据块分别介绍如下:
1)数据块(DataBlock),是读写数据文件的最小单位,默认是8KB,可以通过SQL语句“SELECTFILE#,NAME,BLOCK_SIZEFROMV$DATAFILE;”查询,单位为BYTE。
2)Redo日志数据块(RedoLogBlock),其大小一般等于操作系统的系统块的大小,一般为512B或4096B,可以通过SQL语句“SELECTBLOCKSIZEFROMV$LOG;”或“SELECTLEBSZFROMX$KCCLE;”查询,单位为BYTE。
3)控制文件数据块(ControlFileBlock),默认为16KB,可以通过SQL语句“SELECTBLOCK_SIZEFROMV$CONTROLFILE;”查询,单位为BYTE。[考点]逻辑结构
3.
行链接和行迁移有什么区别?正确答案:当一行的数据过长而不能存储在单个数据块中时,可能发生两种事情:行链接(RowChaining)或行迁移(RowMigration)。
1)行链接:当第一次插入行时,由于行太长而不能容纳在一个数据块中时,就会发生行链接。在这种情况下,Oracle会使用与该块链接的一个或多个数据块来容纳该行的数据。行链接经常在插入比较大的行时才会发生,例如包含LONG、LONGROW、LOB等类型的数据。在这些情况下,行链接是不可避免的。行链接通常由INSERT操作引起。
2)行迁移:当一个行上的更新操作导致当前的数据增加以至于不能再容纳在当前块,这个时候就需要进行行迁移,在这种情况下,Oracle将会迁移整行数据到一个新的数据块中。一个行迁移意味着整行数据都将会移动,原始的数据块上仅仅保留的是指向新块的一个地址信息。发生行迁移的时候行的ROWID不会改变。行迁移的情况主要是由于表上的PCTFREE参数设置过小所致,所以必须设置一个合适的PCTFREE参数。可以使用exp/imp工具导入导出来处理行迁移。行迁移通常由UPDATE操作引起。[考点]逻辑结构
4.
Oracle数据库块由哪几部分组成?正确答案:操作系统块是操作系统读写的最小操作单元,也是操作系统文件的属性之一。当创建一个Oracle数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小。Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块。
数据库块也称逻辑块或Oracle块,它对应磁盘上一个或多个物理块,它的大小由初始化参数DB_BLOCK_SIZE决定,可以定义数据块为2KB、4KB、8KB、16KB、32KB甚至更大,默认Oracle块大小是8KB。若一旦设置了Oracle数据块的大小,则在整个数据库生命期间不能被更改。使用一个合适的Oracle块大小对于数据库的调优是非常重要的。
OS在每次执行I/O的时候是以OS的块为单位;Oracle在每次执行I/O的时候是以Oracle块为单位。Oracle块具有以下特点:
1)最小的I/O单元。
2)包含一个或多个OS块。
3)大小由参数DB_BLOCK_SIZE决定。
4)数据库创建时设置,数据库创建后不能更改。
在Oracle中,不论数据块中存储的是表(TABLE)、索引(INDEX)或簇表(CLUSTERTABLE),其内部结构都是类似的。Oracle块的结构如下图所示。
由上图可以看出,一个Oracle块大约由数据块头(BlockHeader,包括标准内容和可变内容,CommonAndVariableHeader)、表目录(TableDirectory)、行目录(RowDirectory)、可用空间(FreeSpace)和行数据(RowData)这几部分组成。图中两个箭头表示一个数据块中的可用空间区的容量是可变的。
1)数据块头:主要包含有数据块地址的一些基本信息(块地址,BlockAddress)和段的类型(表段、索引段等)。块头自上而下进行增长。
2)表目录:如果一个堆组织表在此数据块中存储了数据行,那么该表的信息将被记录在数据块的表目录中。多个表可以将行存储在相同的块中。
3)行目录:此区域包含数据块中存储的数据行的信息,即每个数据行片断(RowPiece)在行数据中的地址。一个数据块中可能保存一个完整的数据行,也可能只保存数据行的一部分。当一个数据块(DataBlock)的行目录空间被使用后,即使数据行被删除(DELETE),行目录空间也不会被回收。举例来说,当一个曾经包含50条记录的数据块被清空后,其块头(Header)的行目录仍然占用100B的空间。仅在块中插入新行时,数据库才会重用此空间。
4)可用空间:是指可以为以后的更新和插入操作分配的空间,大小受PCTFREE和PCTUSED两个参数影响。可用空间位于块的中部,允许头和行数据空间在必要时进行增长。当插入新行或用更大的值更新现有行的列时,行数据会占用可用空间。导致块头增长的事件包括行目录需要更多的行条目和需要的事务处理插槽数多于最初配置的数目。块中的可用空间最初是相邻的。但是,删除和更新操作可能会使块中的可用空间变成碎片。
5)行数据:数据块中行数据包含了表或索引的实际数据。一个数据行可以跨多个数据块。行数据空间自下而上进行增长。[考点]逻辑结构
5.
什么是ASSM和MSSM?PCTFREE和PCTUSED的作用是什么?正确答案:段空间有两种管理方式,分别是手动段空间管理(ManualSegmentSpaceManagement,MSSM)和自动段空间管理(AutoSegmentSpaceManagement,ASSM)。
自动段空间管理(ASSM),它首次出现在Oracle9.2中。自由列表FREELIST被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(FreeBlock),因此能够改善分段存储本质。ASSM会忽略PCTUSED参数而只使用PCTFREE参数。对于MSSM而言,可以设置FREELIST、PCTUSED和PCTFREE等参数来控制如何分配和使用段中的空间。
1.FREELIST(自由列表)
Oracle通过维护FREELIST列表来记录或更新所有可用的数据块。当执行INSERT语句时,Oracle首先在FREELIST列表上搜索可用的空闲数据块,搜索成功之后将数据插入那个空闲块。块在。FREELIST列表中的可用性由PCTFREE参数值来决定。起初一个空块在FREELIST列表上列出,并且会一直保留,直到空闲空间达到PCTFREE设定的值。当一个块被使用且达到PCTFREE设定的值之后,该块将从FREELIST列表移除,而当数据块的可用空间低于PCTUSED值的时候,该块又会回收,即重新回到FREELIST列表。Oracle使用FREELIST方式以提高数据库性能。因此,每一个INSERT操作,Oracle仅仅需要搜索FREELIST结构,而不是搜索所有数据块。从Oracle9i开始,引入了ASSM,它让Oracle自动管理FREELIST。在ASSM里,Oracle使用位图方式来标记数据块是否可用,这种数据块的空间管理方式比用一个列表来管理效率更高。
2.PCTFREE(空闲率)和PCTUSED(使用率)
PCTFREE和PCTUSED这两个参数是面试中常问到的概念。它们用来优化数据块空间的使用,控制数据块是否出现在FREELIST中。当创建或者更改任何表和索引的时候,Oracle在空间控制方面使用这两个存储参数。
1)PCTFREE:块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入此块中。当数据块中的FREE空间小于PCTFREE设置的空间时,该数据块从FREELIST中去掉,当块由于DML操作FREE空间大于PCTUSED设置的空间时,该数据库块将被添加在FREELIST链表中。对于表和索引来说,该值默认为10%,通过查询DBA_TABLES或DBA_INDEXES视图的PCT_FREE列可以获取到该属性的值。该值适用于MSSM和ASSM。
2)PCTUSED:指定块中数据使用空间的最低百分比;用于为插入一新行数据的最小空间的百分比。这个值决定了块的可用状态。可用状态的块可以执行插入操作,不可用状态的块只能执行删除和修改,可用状态的块被放在FREELIST中。该值只针对表有效,默认值为40%,通过查询DBA_TABLES视图的PCT_USED列可以获取到该属性的值。该值仅适用于MSSM。
若要修改表的PCTFREE和PCTUSED的值,可以使用ALTER语句修改。需要注意的是,修改之后只对新块起作用,若要对表中原有的块起作用,则可以使用MOVE重新组织表,SQL语句如下:
ALTERTABLET_TEST_LHRPCTFREE20;
ALTERTABLET_TEST_LHRMOVE;
若要修改索引的PCTFREE的值,可以使用如下的SQL语句:
ALTERINDEXPK_TEST_LHR
REBUILDPCTFREE20;[考点]逻辑结构
6.
Oracle数据库在物理上是由哪些文件组成的?正确答案:Oracle数据库物理结构如下图所示。
Oracle数据库的物理结构由控制文件(ControlFiles)、数据文件(DataFiles)、联机Redo日志文件(OnlineRedoLogFiles)、参数文件(ParameterFile)、归档日志文件(ArchiveLogFiles)和密码文件(PasswordFile)组成。
1)控制文件:包含维护和验证数据库完整性的必要信息,其中记录了数据库的物理结构。例如,控制文件用于识别数据文件和Redo日志文件。每个Oracle数据库都有相应的控制文件,一个数据库至少需要一个控制文件,控制文件属于二进制文件。控制文件的命名格式通常为ctr*.ctl。
2)数据文件:存储数据的文件。
3)联机Redo日志文件:包含对数据库所做的更改记录,一个数据库至少需要两组联机Redo日志文件。联机Redo日志文件也叫在线重做日志文件或联机重做日志文件。
4)参数文件:定义Oracle实例的特性,分为SPFILE和PFILE两种类型的参数文件。
5)归档文件:归档文件是联机Redo日志文件的脱机副本,这些归档文件对于介质恢复很重要。
6)密码文件:认证哪些用户有权限启动和关闭Oracle实例。
Oracle中逻辑结构包括表空间(TABLESPACE)、段(SEGMENT)、区(EXTENT)和块(BLOCK)。数据库由表空间构成,而表空间又由段构成,段又由区构成,区又由Oracle块构成,即块→区→段→表空间→数据库。[考点]物理结构
7.
什么是专用服务器和共享服务器?正确答案:在连接到Oracle数据库的时候,可以有两种连接模式,一种叫作专用服务器连接(DedicatedServer),另外一种叫作共享服务器连接(SharedServer)。下面分别讲解这两种连接方式的不同点。
专用服务器:每次在对Oracle进行访问的时候,Oracle服务器的Listener会得到这个访问请求,然后会为这个访问创建一个新的进程来进行服务。所以说,对于每一个客户端的访问,都会生成一个新的进程进行服务,是一种类似一对一的映射关系。这种连接模式的一个很重要的特点就是UGA(UserGlobalArea,用户全局区)是存储在PGA(ProgramGlobalArea,程序全局区)中的,这个特性也很好说明了当前用户的内存空间是按照进程来进行分配的。专用服务器连接模式是Oracle默认的连接模式。
共享服务器:也叫多线程服务器(Multi-ThreadedServer,MTS)。若采用共享服务器模式,则在数据库初始化的时候就会创建一批服务器连接的进程,然后把这些连接进程放入一个连接池来进行管理。初始化的池中的进程数量在数据库初始化建立的时候是可以手动设置的。在连接建立的时候,Listener首先接收到客户端的建立连接的请求,然后Listener生成一个叫作调度器(Dispatcher)的进程与客户端进行连接。调度器把客户端的请求放在SGA(SystemGlobalArea,系统全局区)的一个请求队列中,然后在共享服务器连接池中查找有无空闲的连接,然后让这个空闲的服务器进行处理。处理完毕以后再把处理结果放在SGA的相应队列中。调度器通过查询相应队列,得到返回结果,再返回给客户端。这种连接模式的优点在于服务器进程的数量可以得到控制,不大可能出现因为连接数过多而造成服务器内存崩溃。但是由于增加了复杂度以及请求相应队列,可能在性能上有所下降。
如果在前端使用了Weblogic的连接池,那么在数据库级别就没有必要再使用共享服务器了,因为这时的用户连接已经在Weblogic层面上得到了控制。其实专用服务器和共享服务器是可以并存的,即使使用了共享服务器,某些管理操作也是必须在专用服务器模式下来做的,比如STARTUP或SHUTDOWN。[考点]物理结构
8.
在Oracle中,什么是延迟段创建(DeferredSegmentCreation)?正确答案:在Oracle11.2中,当创建一个空表或者空分区时,为了加快创建速度,Oracle并不会立即分配初始段和空间,实际的表段(TableSegment)被延迟到第一行数据插入时创建。延迟段创建特性通过DEFERRED_SEGMENT_CREATION参数控制,默认为TRUE,表示开启该功能。延迟段创建可以节省空间,加快初始化过程,是面向性能和资源的一个优化。可以通过修改参数DEFERRED_SEGMENT_CREATION来关闭这个特性:
ALTERSYSTEMSETDEFERRED_SEGMENT_CREATION=FLASE;
该参数为动态参数,不需要重启数据库。可以通过如下的SQL语句找到所有的空表(未分配任何区的表):
SELECTSEGMENT_CREATED,TABLE_NAMEFROMUSER_TABLESWHERESEGMENT_CREATED='NO';
延迟段创建的限制条件有:
1)延迟段创建不支持的表类型包括索引组织表(Index-OrganizedTables)、簇表(ClusteredTables)、全局临时表(GlobalTemporaryTables)、会话级临时表(Session-SpecificTemporaryTables)、内部表(InternalTables)、Typed表(TypedTables)、AQ表(AQTables)和外部表(ExternalTables)。
2)用户SYS、SYSTEM、PUBLIC、OUTLN和XDB下的表不支持延迟段创建。
3)延迟段创建不支持位图连接索引(BitmapJoinIndexes)和域索引(DomainIndexes)。
4)延迟段创建不支持字典管理表空间(Dictionary-ManagedTablespace,DMT)。
5)延迟段创建不支持SYSTEM表空间。
6)延迟段创建从Oracle11.2.0.2版本开始才开始支持分区和子分区。[考点]物理结构
9.
下列SQL语句共创建了多少个段?
CREATETABLETEST_SEG_LHR(IDNUMBERPRIMARYKEY,NAMEVARCHAR2(5),MESGCLOB);正确答案:创建了0个或4个段。
如果数据库环境是Oracle11g,且参数DEFERRED_SEGMENT_CREATION的值为TRUE(默认为TRUE,表示开启了延迟段创建),那么这个时候上面的SQL语句不会创建任何段。
如果数据库环境是Oracle10g或者数据库环境是Oracle11g且数据库参数DEFERRED_SEGMENT_CREATION设置为FALSE,那么题目中的SQL语句将会创建4个段,分别为1个TABLE类型的段、1个索引段(有主键)、一个LOB段(字段里包含CLOB类型)、一个LOB索引段(CLOB类型的字段会自动创建其对应的索引段)。[考点]物理结构
10.
Oracle内存结构主要由什么组成?试简单画出其内存结构图。正确答案:Oracle内存结构主要分为共享内存区与非共享内存区,共享内存区主要包含SGA(SystemGlobalArea,系统全局区),非共享内存区主要由PGA(ProgramGlobalArea,程序全局区)组成,如下图所示。
1.SGA介绍
SGA(SystemGlobalArea,系统全局区)是Oracle实例的基本组成部分,是Oracle为一个实例分配的一组共享内存缓冲区,保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析和Redo日志管理等。SGA是实例的主要部分,它在实例启动时分配。
SGA是动态的,由参数SGA_MAX_SIZE决定。查看当前系统的SGA可以使用的最大内存大小的命令是SHOWPARAMETERSGA_MAX_SIZE。修改SGA最大内存大小的命令是ALTERSYSTEMSETSGA_MAX_SIZE=1200MSCOPE=SPFILE。因为实例内存的分配是在数据库启动时进行的,所以,要让修改生效,必须重启数据库。当Oracle运行在32位Linux上时,其默认SGA无法超过1.7GB。
在Oracle10g中引入了ASMM(AutomaticSharedMemoryManagement,自动共享内存管理),DBA只需设置SGA_TARGET,Oracle就会自动地对共享池、数据缓冲区、Redo日志缓冲区、大池、Java池和流池进行自动调配,取消自动调配的方法为设置SGA_TARGET为0。
需要注意的是,Oracle分配内存的单位是granule,即粒度。最小的粒度为4MB,设置大小不到一个粒度按一个粒度计算。在32位操作系统的平台上,粒度的最大值为16MB。
下面对SGA的各个组成部分进行介绍。
1)共享池(SharedPool):共享池缓存了各用户间可共享的各种结构,例如,缓存最近被执行的SQL语句和最近被使用的数据定义。共享池主要包括库缓存(LibraryCache)、数据字典缓存(DataDictionatyCache)、保留池(ReservedPool)和结果缓存(ResultCache)。
共享池的大小由参数SHARED_POOLSIZE决定。只要将初始化参数STATISTICS_LEVEL设置为TYPICAL(默认值)或ALL,就能启动对共享池的建议功能,若设置为BASIC,则关闭建议功能。
2)数据缓冲区(DatabaseBufferCache):数据缓冲区也叫数据库缓冲区高速缓存,用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能,是数据库实例的重要组成部分。参数DB_CACHE_SIZE可指定数据缓冲区的大小,需要在参数文件中静态修改。Oracle在处理某个查询时,服务器进程会在BufferCache中查找它所需的所有数据块。如果未在BufferCache中找到所需要的数据块,那么服务器进程会从数据文件中读取所需的数据块,并在BuffetCache中添加一个副本。
3)Redo日志缓冲区(RedoLogBuffer):对数据库进行修改的任何事务(Transaction)在记录到Redo日志文件之前都必须首先放到Redo日志缓冲区中。Redo日志缓冲区中的内容将被后台进程LGWR写入联机Redo日志文件(OnlineRedoLogFiles)中。Redo日志缓冲区是一个循环缓存区,在使用时从顶端向底端写入数据,然后再返回到缓冲区的起始点循环写入。Oracle中所有的DML和DDL操作都会记录日志,即便没有提交的DML操作也会记录日志,在指定了NOLOGGING时,也会记录一些日志。Redo日志缓冲区大小由参数LOG_BUFFER决定,需要在参数文件中静态修改。
4)大池(LargePool):SGA中一个可选的内存区域,大池用来分配大块的内存,处理比共享池更大的内存,用来缓解SharedPool的负担。大池主要用在3种情况下:①若是共享服务器模式时,则在LargePool中分配UGA,若LargePool没有分配则在SharedPool中分配。若是专用服务器(多线程服务器MTS,Multi-ThreadedServer)连接,则UGA在PGA中创建;②语句的并行查询(ParallelExecutionofStatements),允许进程间消息缓冲区的分配,用来协调并行查询服务器;③恢复管理器RMAN,用于RMAN磁盘I/O缓冲区。大池的大小由参数LARGE_POOL_SIZE决定,可以动态修改。大池也使用共享池的闩锁机制,但和共享池不同的是,大池并不使用LRU机制,而是使用LargeMemoiyLatch的保护,因此,大池中缓冲区内的数据不会被置换出来。大池内的数据会利用用户的会话来控制分配和释放大池的空间。如果大池的空间不足,那么也会出现ORA-04031错误。
5)Java池(JavaPool):Java池为Java命令的语法分析提供服务。Java池也是SGA中的一块可选内存块,其大小由参数JAVA_POOL_SIZE决定。在Oracle10g以后,提供了一个新的Java池的建议功能,以辅助调整Java池的大小,而建议的统计数据可以通过视图V$JAVA_POOL_ADVICE来查询。
6)流池(StreamsPool):流池被Oracle流所使用,主要提供专门的Streams复制功能,流池是可选用内存块,它也属于SGA中的可变区域。参数STREAMS_POOL_SIZE可以指定流池的大小。如果设置为0,那么当第一次使用Streams复制功能时,Oracle会自动建立此块区域,而自动建立的大小为共享池大小的10%。Oracle也提供了一个流池的建议功能,来协助调整流池的大小,而建议的统计数据可以通过视图V$STREAMS_POOL_ADVICE来查询。
2.PGA介绍
PGA(ProgramGlobalArea,程序全局区)是单个Oracle进程使用的内存区域,为每个连接到Oracle数据库的用户进程保留的内存,不属于实例的内存结构。它含有单个进程工作时需要的数据和控制信息。PGA是非共享的,只有服务进程本身才能够访问它自己的PGA区。PGA在进程创建时分配,进程结束时释放。PGA的内容随服务器的模式(专用模式/共享服务器模式)不同而不同。PGA的大小由参数PGA_AGGREGATE_TARGET决定,可动态修改。
PGA有如下几个组件:
1)PrivateSQLArea(私有SQL区):参考SharedPool部分的介绍。
2)CursorandSQLAreas(游标和SQL区):OraclePro*C程序(Pro*C是Oracle提供的应用程序专用开发工具,它以C语言为宿主语言,能在C程序中嵌入SQL语句,进行数据库操作)的应用程序开发人员或Oracle调用接口(OracleCallInterface,OCI)程序可以显式打开游标或处理私有SQL区。
3)SessionMemory(会话内存):保存会话的变量(例如,登录信息)及其他与会话相关的信息。在共享服务器模式下,SessionMemory是共享的。
4)WorkArea(工作区):PGA的一大部分被分配给WorkArea,用来执行如下操作:
①基于排序的操作,GROUPBY、ORDERBY、ROLLUP和窗口函数。由于排序需要内存空间,Oracle利用该内存排序数据,这部分空间称为排序区。排序区存在于请求排序的用户进程的内存中,该空间的大小为适应排序数据量的大小,可增长,但受参数SORT_AREA_SIZE所限制。
②HASH连接,大小受参数。HASH_AREA_SIZE所限制。
③位图合并,大小受参数BITMAP_MERGE_AREA_SIZE所限制。
④位图创建,大小受参数CRENTE_BITMAP_AREA_SIZE所限制。
⑤批量装载操作使用的写缓存。
PGA和SGA最明显的差别在于,PGA不是共享内存,是私有不共享的。用户对数据库发起的无论查询还是更新的任何操作,都是在PGA先预处理,然后接下来才进入实例区域,由SGA和系列后台进程共同完成用户发起的请求。PGA起到的具体作用主要有3点:第一,保存用户的连接信息,如会话属性、绑定变量等;第二,保存用户权限等重要信息,当用户进程与数据库建立会话时,系统会将这个用户的相关权限查询出来,然后保存在这个会话区内;第三,当发起的指令需要排序的时候,PGA正是这个排序区,如果在内存中可以放下排序的尺寸,就在内存PGA区内完成,如果放不下,超出的部分就在临时表空间中完成排序,也就是在磁盘中完成排序。
3.UGA介绍
UGA(UserGlobalArea)保存了会话信息,会话总能访问这部分内存。UGA的位置取决于会话连接到Oracle的方式。如果是专用服务器连接,那么UGA在PGA中创建;如果是共享服务器连接,那么UGA在SGA的LargePool中创建,若LargePool没有分配则在SharedPool中分配。
PGA和UGA两者间的区别与一个进程和一个会话之间的区别是类似的。尽管说进程和会话之间一般都是一对一的关系,但实际上比这个更复杂。一个很明显的情况是MTS配置,会话往往会比进程多得多。在这种配置下,每一个进程会有一个PGA,每一个会话会有一个UGA。PGA所包含的信息与会话是无任何关联的,而UGA包含的信息是以特定的会话为基础的。[考点]内存结构
11.
什么是自动PGA内存管理(AutomaticPGAMemoryManagement)?正确答案:若设置参数PGA_AGGREGATE_TARGET为非0,则启用自动PGA内存管理,并忽略所有*_AREA_SIZE的设置,例如,SORI_AREA_SIZE、HASH_AREA_SIZE等。默认为启用PGA的自动管理,Oracle根据SGA的20%来动态调整PGA中专用于WorkArea部分的内存大小,最小为10MB。如果设置参数WORKAREA_SIZE_POLICY为MANUAL(默认值是AUTO),就代表此数据库的PGA管理模式属于手动管理模式,且在此模式下必须设置SORT_AREA_SIZE、HASH_AREA_SIZE等相关参数。[考点]内存结构
12.
SHOWSGA和V$SGA的结果有哪些区别?正确答案:SHOWSGA的结果比V$SGA的结果多一行“TotalSystemGlobalArea”数据。其实,SHOWSGA的结果来源于V$SGA视图。运行命令“vi$ORACLE_HOME/bin/sqlplus”打开sqlplus文件,匹配SGA可以发现这么一行代码:
SELECTDECODE(NULL,",'TotalSystemGlobalArea',")NAME_COL_PLUS_SHOW_SGA,SUM(VALUE),DECODE(NULL,",'bytes',")UNITS_COL_PLUS_SHOW_SGA
FROMV$SGA
UNIONALL
SELECTNAMENAME_COL_PLUS_SHOW_SGA,VALUE,DECODE(NULL,",'bytes',")UNITS_COL_PLUS_SHOW_SGA
FROMV$SGA;
该行代码的结果和执行showsga可以得到一样的结果,如下:
SYS@omflhr>SHOWSGA
TotalSystemGlobalArea1068937216bytes
FixedSize
2253216byteS
VariableSize
771755616bytes
DatabaseBuffers
289406976bytes
RedoBuffers
5521408bytes
在以上结果中,各部分的含义如下:
1)TotalSystemGlobalArea:其显示目前此SGA的大小,包括FixedSize、VariableSize、DatabaseBufiers和RedoBuffers的大小总和。
2)FixedSize:这里存储了SGA各部分组件的相关信息,主要是作为引导SGA创建的区域,Oracle通过这个区找到SGA其他区,类似一个SGA各个组件的索引。这部分是Oracle内部使用的一个区,包括了数据库与实例的控制信息、状态信息、字典信息等。当实例被打开时,此块区域就被固定住而不能做任何变动,此区域也可称为FixedSGA。不同平台和不同版本下这部分的大小可能不一样。
3)VariableSize:它包括SharedPool、JavaPool、LargePool、StreamsPool、游标区和其他结构。由于这些内存块都是可动态分配的,所以统称为VariableSize。
4)DatabaseBuffers:其显示数据库高速缓冲区的大小,是SGA中最大的地方,决定数据库性能。为DB_CACHE_SIZE、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE、DB_NK_CACHE_SIZE的总大小,当然这是SGA_TARGET为0的情况,也就是手动SGA管理模式下,如果是自动SGA管理(SGA_TARGET>0),那么这个值根据SGA的分配情况自动进行调整。
5)RedoBuffers:其显示Redo日志缓冲区的大小,这部分是实际分配的RedoLogBuffer的大小,由初始化参数LOG_BUFFER根据SGA的最小分配单位granule向上取整得到。[考点]内存结构
13.
什么是ASMM和AMM?正确答案:ASMM(AutomaticSharedMemoryManagement,自动共享内存管理)是Oracle10g引入的概念。通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为SGA设置一个总的大小,Oracle的MMAN进程(MemoryManagerProcess,内存管理进程)会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。ASMM的SGA中包含的组件及对应参数见下表。SGA组件初始化参数是否会被ASMM自动调节共享池(SharedPool)SHARED_POOL_SIZEY大池(LargePool)LARGE_POOL_SIZEJava池(JavaPool)JAVA_POOL_SIZE数据库缓冲区(DatabaseBufferCache)DB_CACHE_SIZE流池(StreamsPool,10gR2新增)STREAMS_POOL_SIZEFixedSGA和其他Oracle数据库实例所需要的内存N/AN其他的数据库BufferCacheDB_nK_CACHE_SIZE,DB_KEEP_CACHE_SIZE,DB_RECYCLE_CACHE_SIZERedo日志缓冲区(RedoLogBuffer)LOG_BUFFER结果缓存(ResultCache)RESULT_CACHE_SIZE
在Oracle10g中,必须将STATISTICS_LEVEL参数设置为TYPICAL(默认值)或者ALL才能启用ASMM功能,如果将其值设置为BASIC,那么会禁用很多新特性,比如AWR、ASMM等。如果使用SQL*Plus来设置ASMM,那么必须先把SGA中包含的组件的值设置为0。通过设置SGA_TARGET参数为非零值来启用ASMM功能。在启用ASMM后,Oracle会自动调整SGA内部组件大小。若再手动指定某一组件值,则该值为该组件的最小值。例如,手动设置SGA_TARGET=8G,SHARED_POOL_SIZE=1G,则ASMM在自动调整SGA内部组件大小时,保证SharedPool不会低于1GB。当设置了SGA_TARGET参数后,Oracle将会收集SGA相关的统计数据,并通过V$SGA_TARGET_ADVICE呈现出来,因此,可以根据这些指导SGA_TARGET做相关的调整,以达到最佳情况。
Oracle10g的ASMM实现了自动共享内存管理,但是具有一定的局限性。所以,在Oracle11g中,Oracle引入了AMM(AutomaticMemoryManagement,自动内存管理)的概念,实现了全部内存的自动管理。DBA可以仅仅通过设置一个目标内存大小的初始化参数(MEMORY_TARGET)和可选最大内存大小初始化参数(MEMORY_MAX_TARGET)就可以在大多数平台上实现AMM。AMM可以使实例总内存保持相对稳定的状态,Oracle基于MEMORY_TARGET的值来自动调整SGA和PGA的大小。如果内存发生变化,实例会自动在SGA和PGA之间做调整。若启用了AMM功能,而SGA_TARGET和PGA_AGGREGATE_TARGET没有显式地被设置,则默认SGA_TARGET为MEMORY_TARGET的60%,PGA_AGGREGATE_TARGET为MEMORY_TARGET的40%。
MEMORY_TARGET是动态初始化参数,可以随时修改该参数的值而不用重启数据库。MEMORY_MAX_TARGET作为一个内存上限值,是一个静态参数,它是MEMORY_TARGET可以被配置的最大值。
当LOCK_SGA初始化参数的值设置为TRUE时,不能启用AMM,该参数的值默认为FALSE。由于AMM不支持HugePage,而ASMM支持HugePage,所以,在生产库上强烈推荐使用ASMM。[考点]内存结构
14.
如何解决“ORA-00845:MEMORY_TARGETnotsupportedonthissystem”错误?正确答案:使用AMM经常出现的一个错误是“ORA-00845:MEMORY_TARGETnotsupportedonthissystem”。
[ZFZHLHRDB1:oracle]:/oracle>oerrora845
00845,00000,"MEMORY_TARGETnotsupportedonthissystem"
//*Cause:TheMEMORY_TARGETparameterwasnotsupportedonthisoperatingsystemor/dev/shmwasnotsizedcorrectlyonLinux.
//*Action:Refortodocumentationforalistofsupportedoperatingsystems.Or,size/dev/shmtobeatleasttheSGA_MAX_SIZEoneachOracleinstancerunningonthesystem.
这个错误原因是操作系统不支持MEMORY_TARGET参数或/dev/shm的大小设置不正确。解决方法就是将/dev/shm的值增大,至少需要大于数据库参数MEMORY_MAX_TARGET的值。修改步骤如下:
[root@LHRDB~]#cat/etc/fstab|greptmpfs
#查看/dev/shm大小
tmpfs
/dev/shm
tmpfs
defaults,size=1G00
[root@LHRDB~]#mount-oremotmt,size=4G/dev/shm
#临时修改/dev/shm大小
[root@LHRDB~]#vi/etc/fstab
#永久修改/dev/shm大小,
tmpfs/dev/shmtmpfsdefaults,size=4G00
[root@LHRDB~]#df-h|grepshm
tmpfs
4.0G
0
4.0G
0%/dev/shm
[root@LHRDB~]#cat/etc/fstab|greptmpfs
tmpfs
/dev/shm
tmpfs
defaults,size=4G
00
再次启动数据库就可以正常启动了。[考点]内存结构
15.
ASMM和AMM的区别有哪些?正确答案:有关ASMM和AMM的区别见下表。
[考点]内存结构
16.
后台进程、服务器进程和用户进程之间的区别是什么?正确答案:后台进程、服务器进程和用户进程间的关系如下图所示。
(1)USERPROCESS(用户进程)
用户进程指的是Oracle客户端进程。例如,常用的Oracle的SQL*Plus就是最常用的客户端进程。
(2)SERVERPROCESS(服务器进程)
服务器进程指的是与客户端连接的服务器端的后台进程。对于每个前台的用户进程,后台都有一个服务器进程与之对应。服务器主要是通过它和用户进程进行联系、沟通及进行数据的交换。
(3)BACKGROUNDPROCESSES(后台进程)
后台进程是Oracle的程序,在Oracle实例启动的时候启动,用来管理数据库的读写、恢复和监视等工作,例如PMON、SMON等进程。后台进程是Oracle实例的核心。
在UNIX操作系统上,Oracle的后台进程对应于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows操作系统上,Oracle的后台进程对应于操作系统线程,打开任务管理器,只能看到一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在ORACLE.EXE进程中的线程。[考点]后台进程
17.
Oracle有哪些重要后台进程?正确答案:Oracle的后台进程较多,单实例数据库的基本后台进程如下图所示。
下面的表格中列出了一些常见的数据库后台进程及其作用。进程表现形式描述SMON(SystemMonitorProcess,系统监控进程)ora_smon_ora11gSMON进程关注的是系统级的操作而非单个进程,主要用于清除失效的用户进程,释放用户进程所用的资源。具体有如下的功能:1)清理临时表空间2)合并空闲空间3)从不可用的文件中恢复事务的活动4)实例恢复(包括单实例和RAC)5)清除SYS.OBJ$表6)缩减回滚段7)使回滚段脱机PMON(ProcessMonitoiProcess,进程监视进程)ora_pmon_ora11gPMON进程主要有以下3个作用:1)在其他进程失败后执行清除工作:回滚事务、释放锁、释放其他资源。若RECO进程异常,则PMON重启RECO进程。若LGWR进程失败,则PMON会中止实例,防止数据错乱2)注册数据库3)检测会话的空闲连接时间CKPT(CheckpointProcess,检查点进程)ora_ckpt_ora11g检查点(Checkpoint)是一种将内存中的已修改数据块与磁盘上的数据文件进行同步的数据库事件。Oracle通过检查点确保被事务修改过的数据可以被同步至磁盘。由于Oracle事务在提交的时候不会将已修改数据块同步写入磁盘上,所以,CKPT进程负责更新控制文件和数据文件的文件头的检查点信息和触发DBWn写脏数据到磁盘。CKPT执行越频繁,DBWn写出就越频繁。检查点包括完全检查点、部分检查点和增量检查点等。检查点有两个用途:①确保数据一致性;②实现更快的数据库恢复CKPT工作的主要条件如下:1)在日志切换(ALTERSYSTEMSWITCHLOGFILE)的时候2)数据库用IMMEDIATE、TRANSACTION、NORMAL,或选项SHUTDOWN数据库的时候3)根据参数FAST_START_MTTR_TARGET的设置来确定。如果当内存中产生的DirtyBuffer所需的恢复时间(estimated_mttr)到达FAST_START_MTTR_TARGET的指定时间,那么检查点进程被触发。检查点进程一旦被触发,将通知DBWn、生程按检查点队列顺序将脏数据写入数据文件,从而缩短了最后检查点位置与联机Redo日志间的距离,减少了实例恢复所需的时间4)直接使用ALTERSYSTEMCHECKPOINT命令实现5)达到LOG_CHECKPOINT_TIMEOUT的延迟时6)当前Redo日志文件中已存在了大小为(LOG_CHECKPOINT_INTERVAL*OS块的大小(Bytes))的数据7)开始结束备份表空间等在检查点期间会发生以下操作:1)DBWn将缓冲区缓存中所有已修改的数据库块写回到数据文件中2)检查点进程会更新所有数据文件的文件头,以反映上一个检查点发生的时间(SCN)ARCn(ArchiverProcess,归档进程)ora_arc0_ora11gora_arc1_ora11gARCn的工作是当LGWR把联机Redo日志文件填满后,ARCn负责把Redo日志文件的内容复制到其他地方。联机Redo日志文件是被用来做实例恢复的时候恢复数据文件,而归档日志足被用来在介质恢复的时候,恢复数据文件。续表进程表现形式描述DBWn(DatabaseWriterProcess,数据库写进程)ora_dbw0_ora11gDBWn负责把缓冲区的脏数据写到磁盘上,该动作由CKPT进程决定,所以,COMMIT后数据不一定会被立即写进磁盘。但是,若LGWR出现故障,则DBWn依然会不听CKPT命令而进行罢工的。因为Oracle在将数据缓存区数据写到磁盘前,会先进行日志缓冲区写进日志文件的操作,并耐心地等待其先完成,才会去完成这个内存刷到磁盘的动作,这就是所谓的日志先行。在Oracle发生SwitchLogFiles的时候,会发生Checkpoint。在Checkpoint发生后,在Redo日志中的数据就可以被覆盖了。如果Redo日志被填满,且要重新利用Redo日志来存放新的数据时,而此时Checkpoint还未完成,那么Oracle就会返回“Checkpointnotcomplete”。DBWn进程工作的触发点有:1)当BufferCache中缺少用于写入数据的CleanBlock的时候,DBWn会开始将一些脏块(DirtyBlock)写入文件中,清理出一些可以使用的CleanBlock2)周期性的Checkpoint写入,当CKPT进程进行检查点的时候,DBWn会启动进行写入3)每3s检查一次是否有脏块需要写入LGWR(LogWriterProcess,日志写进程)ora_lgwr_ora11gLGWR是把SGA中RedoLogBuffer的信息写到Redo日志文件的进程。LGWR必须记录下所有从数据缓存区写进数据文件的动作,工作任务相当繁重。由于要顺序记录情况下保留的日志才有意义,多进程难以保证顺序,因此LGWR只能采用单进程。LGWR会在下面情况下被触发:1)用户发出提交命令(COMMIT)2)每隔3s(距离上次LGWR写入操作超过3s)。3)Redo日志缓冲区空间剩余不到2/3,即RedoLogBuffer数据超过1/34)Redo日志缓冲区内的数据超过1MB5)在发生联机Redo日志切换(LogSwitch)时6)在DBWn进程将修改过的缓冲区数据写入磁盘文件时(如果相应的Redo日志数据尚未写入磁盘)CJQn(JobQueueCoordinatorProcess,作业调度器)ora_cjq0_ora11gora_j000_ora11gCJQn和Jnnn负责调度与执行系统中已定义好的Job,完成一些预定义的工作,例如完成物化视图的刷新工作1)CJQn起到对作业队列的监控作用2)执行作业的队列进程Jnnn(JobQueueSlaveProcesses),由CJQn完成调度产生,并且执行相关的JobRECO(RecovererProcess,分布式事务恢复)ora_reco_ora11g主要用于分布式数据库的恢复(DistributedDatabaseRecovery),适用于两阶段提交的应用场景。该进程可以保证分布式事务的一致性,在分布式事务中,所有数据库要么同时COMMIT,要么同时ROLLBACK。在分布式数据库中,RECO进程可以自动地解决分布式事务发生错误的情况。一个节点上的RECO进程自动地连接到没有被正确处理事务相关的数据库上面。当RECO建立了数据库之间的连接,它会自动地解决没有办法处理的事务,删除与该事务相关的待定的事务表中的行(清理事务表)SMCO(SpaceManagementCoordinatorProcess,空间管理协调器)ora_smco_ora11gSMCO是空间管理主进程,负责空间管理协调工作,负责动态执行空间的分配和回收。它将生成从进程Wnnn以执行这些任务QMNC(AQCoordinatorProcess,高级队列协调进程)ora_qmnc_ora11gQMNC进程对于AQ表来说就相当于CJQO进程之于作业表。QMNC进程会监视高级队列,并警告从队列中删除等待消息的“出队进程”(dequeuer):已经有一个消息变为可用。QMNC和Qnnn还要负责队列传播(Propagation),也就是说,能够将在一个数据库中入队(增加)的消息移到另一个数据库的队列中,从而实现出队(Dequeueing)Qnnn进程对于QMNC进程就相当于Jnnn进程与CJQO进程的关系。QMNC进程要通知Qnnn进程需要完成什么工作,Qnnn进程则会处理这些工作QMNC和Qnnn进程是可选的后台进程。参数AQ_TM_PROCESSES可以指定最多创建10个这样的进程(分别名为Q000,…,Q009),以及一个QMNC进程。如果AQ_TM_PROCESSES设置为0,就没有QMNC或Qnnn进程。不同于作业队列所用的Jnnn进程,Qrmn进程是持久的。如果将AQ_TM_PROCESSES设置为10,数据库启动时可以看到10个Qnnn进程和一个QMNC进程,而且在实例的整个生存期中这些进程都存在MARK(MarkAUforResynchronizationCoordinatorProcess,为重新同步协调器标记分配单元)ora_mark_ora11g当磁盘出现故障时将会脱机,从而导致写入内容丢失。在这种情况下,此进程会将ASM分配单元(AU)标记为陈旧(stale)续表进程表现形式描述PSP0(ProcessSpawnerProcess,进程生成器)ora_psp0_ora11g当数据库实例或ASM实例启动后,用于产生其他后台进程VKTM(VirtualKeeperofTimeProcess,虚拟计时器进程)ora_vktm_ora11g这个进程用于提供一个数据库的时钟,每秒更新:或者作为参考时间计数器,这种方式每20ms更新一次,仅在高优先级时可用。在系统时间出现异常或变化时,VKTM进程还会检测这些变化,提醒用户,尤其是在RAC环境中,时间的偏移和变化极有可能导致系统故障。通过VKTM进程,数据库可以降低和操作系统的交互GENO(GeneralTaskExecutionProcess,通用任务执行进程)ora_gen0_ora11g主要是分担另外某个进程的阻塞处理DIAG(DiagnosticCaptureProcess,诊断捕获进程)ora_diag_ora11g执行诊断、转储跟踪文件以及执行全局oradebug命令,它会负责监视实例的整体状况,捕获处理实例失败时所需的信息并记录DBRM(DatabaseResourceManagerProcess,数据库资源管理器进程)ora_dbrm_ora11g为数据库实例配置资源计划,执行资源计划和其他与资源管理器相关的任务DIA0(DiagnosticProcess,诊断进程0)ora_dia0_ora11g检测挂起情况和死锁。将来可能会引入多个进程,因此将名称设置为DIA0。[考点]后台进程
18.
进程MMAN、MMNL和MMON这3个进程的作用分别是什么?正确答案:从如下的输出结果可以看到,每个ASM实例或数据库实例都有这3个进程:
其中:
1)MMAN(MemoryManagerProcess,内存管理进程)进程会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。
2)MMON(ManageabilityMonitorProcess,可管理性监视器进程)和它的slave进程(Mnnn)主要用来维护AWR信息和各种与可管理性相关的后台任务,具体包括:①启动slave进程Mnnn去做AWR快照。若MMON进程HANG住,则AWR不可用。②当某个测量值(Metrics)超过了其度量阀值(ThresholdValue)时发出alert告警。③为最近改变过的SQL对象捕获指标信息。
3)MMNL(ManageabilityMonitorLiteProcess)将SGA中的ASH(ActiveSessionHistory)Buffer中的统计资料写到磁盘。当ASHBuffer满的时候MMNL会把它写到磁盘上。[考点]后台进程
19.
什么是检查点?正确答案:在Oracle数据库系统中,写日志和写数据文件是数据库中消耗I/O较大的两种操作。在这两种操作中,写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性能和数据的安全,通常数据库都是在提交(COMMIT)完成之前要先保证Redo日志条目都被写入日志文件中,才会给用户反馈提交完成的通知(CommitComplete),而保存在BufferCache中的脏块会不定期地、分批地写入数据文件中。也就是说,日志写入和提交操作是同步的,而数据写入和提交操作是不同步的,修改的数据并不是在用户提交后就立马写入数据文件中。这样就存在一个问题,当数据库崩溃的时候并不能保证BufferCache里面的脏数据全部写入数据文件中,那么在实例启动的时候就要使用日志文件进行恢复操作,将数据库恢复到崩溃之前的状态,从而保证数据的一致性。那怎么确定该从何时、从哪里开始恢复呢?Oracle使用了检查点(Checkpoint)来进行确定。
一般所说的检查点是一种将内存中的已修改数据块与磁盘上的数据文件进行同步的数据库事件(Event),是Oracle在数据库一致性关闭、实例恢复和Oracle基本操作不可缺少的机制。Oracle通过检查点确保被事务修改过的数据可以被同步至磁盘。检查点信息(CheckpointInformation)包含检查点位置(CheckpointPosition)、SCN、联机Redo日志中开始恢复的位置等。当检查点发生时,CKPT通知DBWn进程将脏块(DirtyBuffer)写出到数据文件上,并更新数据文件头及控制文件上的检查点信息。注意,CKPT进程不负责BufferCache中的脏数据写入磁盘中,该工作由DBWn负责;CKPT进程也不负责将RedoLogBuffer中的数据写入联机Redo日志文件中,该工作由LGWR负责。由于Oracle事务在提交的时候不会将己修改数据块同步写入磁盘上,所以,CKPT进程负责更新控制文件和数据文件头的检查点信息和触发DBWn写脏数据到磁盘。CKPT执行越频繁,DBWn写出就越频繁。
检查点位置(CheckpointPosition)是一种数据结构,在Redo日志流中记录的SCN号是在进行数据库实例恢复时的起始位置。检查点位置由在数据缓冲池中存在的最老的脏数据位置决定,并且检查点的信息存储在控制文件和数据文件头中。控制文件中记录的检查点位置是实例恢复的起点。在检查点位置前的Redo记录,其对应的BufferCache中的DirtyBuffer已经被写进了数据文件,在此位置后的Redo记录,所对应数据脏块有可能还在内存中。如果发生了实例崩溃,只需要在日志文件中找到检查点位置(LowCacheRBA),从此处开始应用所有的Redo日志文件,就完成了前滚操作。[考点]后台进程
20.
检查点的作用有哪些?正确答案:检查点的主要目的是以对数据库的日常操作影响最小的方式刷新脏块,检查点主要有两个作用:
1)确保数据库的一致性,包含两个方面,第一,确保BufferCache中的DirtyBuffer能有规律地定期写入磁盘,这样在系统或数据库出现故障时就不会丢失数据;第二,确保数据库在一致性关闭期间可以将所有已提交了的数据写入磁盘。
2)实现更快的数据库恢复,主要是缩短实例恢复的时间。实例恢复要把实例异常关闭前没有写出到硬盘的脏数据通过日志进行恢复,只需要重新应用控制文件中记录的检查点位置之后的联机Redo日志条目即可进行恢复。如果脏块过多,那么实例恢复的时间也会很长,所以,检查点的发生可以减少脏块的数量,从而提高实例恢复的时间。[考点]后台进程
21.
检查点有哪些种类?正确答案:CKPT进程负责将检查点信息写入数据文件头和控制文件中,包括以下几种类型的检查点。分类简介发生时机完全检查点(FULLCheckpoint)线程检查点(ThreadCheckpoint)、数据库检查点(DatabaseCheckpoint)数据库将所有在数据缓冲区内由Redo修改过的数据写入磁盘中,这个线程检查点在所有的实例中的集合称为数据库检查点(DatabaseCheckpoint)1)数据库一致性关闭的时候(IMMEDIATE、TRANSACTION、NORMAL或选项SHUTDOWN)2)执行ALTERSYSTEMCHECKPOINT语句的时候3)在线日志切换的时候(ALTERSYSTEMSWITCHLOGFILE)4)执行ALTERDATABASEBEGINBACKUP语句的时候表空间和数据文件检查点(TablespaceAndDataFileCheckpoint)表空间的检查点是数据文件检查点的集合,每个数据文件都在这个表空间之内。将执行属于该表空间的所有数据文件的一个检查点操作1)将一个表空间设置为只读的方式2)将一个表空间设置为OFFLINE3)数据文件大小变化的时候4)执行ALTERTABLESPACExxxBEGINBACKUP的时候增量检查点(IncrementalCh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/SPFA 003-2023豆豉
- T/SASQ 0002-2024组织质量能力评价准则 制造业
- T/CSTEA 00071-2024陈年茉莉花茶
- T/CI 003-2023橡胶表面碳薄膜制备及评价方法
- T/CSPSTC 151-2025滨海湿地水文连通性生态监测与评估技术规范
- T/SSCIPA 003-2024气田中后期投资价值评估规范
- 2025~2026学年河北省邢台市任泽区校联考冀教版三年级上册12月月考数学试卷【附答案】
- PHP基础综合试题(含详细答案解析)
- Photoshop 7.0 招聘笔试试题汇编及详细答案
- 2025-2026学年新疆维吾尔自治区阜康市初中政治七年级期末上册自测模拟盲点排查题附答案
- 七年级上册人教版英语第一次月考试卷(含答案)
- 消防工程确保工期的技术组织措施
- 2026中考冲刺-九年级数学知识点梳理
- 卡丁车赛车场项目可行性研究报告
- 浙江省杭州市2026届高三上学期教学质量检测数学试卷(杭州一模)(含答案)
- 康复护理:日常生活活动能力训练
- 贝壳卖房委托书
- 病案首页填写培训课件
- 2025年劳动监察辅助岗位招聘选拔试题集及解答
- 心律失常教学课件
- 压裂安全工作培训课件
评论
0/150
提交评论