Oracle数据库体系结构教学课程_第1页
Oracle数据库体系结构教学课程_第2页
Oracle数据库体系结构教学课程_第3页
Oracle数据库体系结构教学课程_第4页
Oracle数据库体系结构教学课程_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章Oracle数据库体系结构教师:陈玉明E-Mail:ymchen@1内容简介本课主要讲授Oracle10g体系结构适用于数据库管理员(DBA)Oracle9i同样适用2概要DBA的职责Oracle体系结构由内存结构、进程结构、存储结构组成内存结构由SGA、PGA组成存储结构由逻辑存储、物理存储组成进程结构由用户进程和Oracle进程组成.3什么是DBA?数据库管理员是一个或一组全面负责管理和控制数据库系统的人员。

简称:DBA(DataBaseAdministrator)4DBA的主要职责了解ORACLE数据库的体系结构负责数据库管理系统的安装和升级启动和关闭数据库管理和监控数据库用户管理数据库特权管理存储空间建立数据库后备和恢复数据库5DBA与理论知识作为一名合格的DBA,必须深入地掌握Oracle10g数据库的体系结构.在理论知识的指导下,才会使许多难以理解和掌握的操作变得容易.6Oracle工作原理客户服务器服务器进程(PGA区)用户进程(SQL语句)Oracleserver数据库系统处理过程示意7处理过程可以简单的描述为:用户在其机器上运行基于Oracle的应用程序(如:SQL*PLUS、PL/SQLDeveloper等),即启动用户进程.客户机、服务器之间建立连接(Connect).服务器为用户建立会话(Session),并为该会话建立一个PGA(ProgramGlobalArea,程序全局区)以存储与该会话相关的信息.在同一个连接中,不同的用户有不同的会话.启动服务进程,由该服务进程负责执行该会话的各项任务.用户进程发送SQL语句(select、update、commit….)服务器进程解析、编译、执行SQL语句,然后将结果写入数据库并返回结果给用户进程。用户进程接收返回的SQL执行结果。在应用程序中显示SQL执行结果.Oracle工作原理客户服务器服务器进程(PGA区)用户进程(SQL语句)Oracleserver8处理查询用户进程服务器进程解析StatementOKHandle执行OKHandle提取ResultsSELECT*FROMempORDERBYename;9总体结构总体结构的三大部分10总体结构11总体结构其中:内存结构::包括SGA和PGA.使用内内存最多的的是SGA,同时也也是影响数数据库性能能的最大参参数.进程结构::包括前台进进程、后台台进程.前前台进程是是指服务进进程和用户户进程.前前台进程是是根据实际际需要而运运行的,并并在需要结结束后立刻刻结束。后后台进程是是指在Oracle数据库启启动后,自自动启动的的几个操作作系统进程程.存储结构::包括控制文文件、数据据结构、日日志文件等等操作系统统文件.12存储结构Oracle数据库库的存储结结构分为逻逻辑存储结结构和物理理存储结构构,这两种种存储结构构既相互独独立又相互互联系.数据库结构数据文件日志文件控制文件参数文件物理结构表空间段范围数据库块逻辑结构13物理存储结构构物理存储结构构主要描述Oracle数据库的外外部存储结构构,即在操作作系统种如何何组织、管理理数据.因此,物理存存储结构是和和操作系统平平台有关的.14逻辑存储结构构逻辑存储结构构主要描述Oracle数据库的内内部存储结构构,即从技术术概念上描述述在Oracle数据库库种如何组织织、管理数据据.因此,逻辑存存储结构是和和操作系统平平台无关的,是由Oracle数据据库创建和管管理的.15DBA注意DBA必须对对这两种存储储结构有清晰晰的理解,并并且要清楚在在一个具体数数据库应用系系统中,这两两种存储结构构的具体对应应关系,否则则就不能进行行正常的管理理操作、数据据库备份与恢恢复、性能优优化等。16存储结构物理存储结构构与逻辑存储储结构之间的的关系从物理上看,数据库由控制文件、数数据文件、重重做日志文件件等操作系统文文件组成;从逻辑上来看看,数据库是是由系统表空间、、用户表空间间等组成。表空间是最大大的逻辑单位位,块是最小小的逻辑单位位。逻辑存储结构构中的块最后后对应到操作作系统中的块块.17Oracle10g体体系结构--2.1物理结构构18Oracle数据库物理理结构数据文件日志文件控制文件参数文件19数据文件(DataFile)是物理存储Oracle数据库数据据的文件。其其特点如下::每一个数据文文件只与一个个数据库相联联系。数据文件一旦旦被建立则不不能修改其大大小。一个表空间可可包含一个或或多个数据文文件。一个数据文件件只能属于一一个表空间.数据文件(DataFile)20重做日志文件件(RedoFile)重做日志文件件(RedoLogFile)记录所有对数数据库数据的的修改,以备备恢复数据时时使用。其特特点如下:每一个数据库库至少包含两两个日志文件件组。日志文件组以以循环方式进进行写操作。。每一个日志文文件成员对应应一个物理文文件。21日志切换(LogSwitch)日志切换(LogSwitch)是为实现日志志文件组的循循环使用而设设置的。出现现日志开关的的情况如下::当一个日志文文件组被填满满时关闭数据库时时DBA手动切切换日志22日志文件写操操作LogFile1LogFile2Group1Group2Member2.1Member1.123镜像日志文件件镜像日志文件件是为防止日志志文件的丢失失,在不同磁磁盘上同时维维护两个或多多个联机日志志文件的副本本。其特点如下::每个日志文件件组至少包含含两个日志文文件成员。每组的成员数数目相同。同组的所有成成员同时被修修改。同组的成员大大小相同,不不同组的成员员大小可不同同.24镜像日志文件件操作Group1Group2LogFile1LogFile2Member2.1Member1.1LogFile3LogFile4Member2.2Member1.2Disk1Disk225控制文件控制文件(ControlFile)是一个较小的的二进制文件件,用于描述述数据库结构构。描述信息如下下:数据库建立的的日期。数据库名。数据库中所有有数据文件和和日志文件的的文件名及路路径。恢复数据库时时所需的同步步信息。要点注意:在打开和存取取数据库时都都要访问该文文件。镜像控制文件件。记录控制文件件名及路径的的参数为:CONTROL_FILES26参数文件参数文件(ParameterFile)是一个文本文文件,可直接接使用操作系系统下的文本本编辑器对其其内容进行修修改。该文件件只在建立数数据库或启动动实例时才被被访问,在修修改该文件之之前必须关闭闭实例。初始参数文件件:init.ora生成参数文件件:initSID.oraconfig.ora位于OracleHome下,如::C:\oracle\admin\TestDB\pfile27参数文件的作作用参数文件的作作用:确定存储结构构的大小。设置数据库的的全部缺省值值。设置数据库的的范围。设置数据库的的各种物理属属性。优化数据库性性能。28参数文件的数数据类型参数文件中参参数的数据类类型:整型例:DB_BLOCK_SIZE=2048字符型例:DB_NAME=‘‘ora9’’逻辑型例:CHECKPOINT_PROCESS=true29Oracle10g体体系结构--2.2逻逻辑结构30Oralce的逻辑结构构组成Oracle的逻辑结构构是由一个或多多个表空间组组成。一个表空间(tablespace)由一组段段组成一个段(segment)由一组区区组成一个区(extent)由一批数据据库块组成一个数据库块块(block)对应一一个或多个物物理块31逻辑结构示意意图TablespaceDatabaseBlocksExtent84KSegment112KDatabaseDataFile表空间段区块32数据库块(Block)数据库块(DatabaseBlock)是数据库使用用的I/O最最小单元,又又称逻辑块或或ORACLE块。一个数数据库库块对对应一一个或或多个个物理理块,,块的的大小小由参参数DB_BLOCK_SIZE确定。。33数据库库块(Block)块的大大小是是操作作系统统块大大小的的整数数倍.以Win2K为为例,操作作系统统块(OSblock)的的大小小为4kb,所所以OracleBlock的的大小小可以以是4kb,8kb,16kb等等等。。如果块块的大大小为为4kb,,某表表每行行的数数据是是100bytes.,如如果某某查询询语句句只返返回1行数数据,那么么,在在将数数据读读入到到数据据高速速缓存存时,读取取的数数据量量时4kb而不不是100bytes.34区(extent)区(Extent)是数据据库存存储空空间分分配的的逻辑辑单位位,一一个区区由一一组数数据库库块组组成,,区是是由段段分配配的,,分配配的第第一个个区称称初始区区,以后后分配配的区区称增量区区。35段(segment)段(Segment)是表空空间中中一个个指定定类型型的逻逻辑存存储结结构,,它由由一个个或多多个区组成,段将将占用用并增增长存存储空空间。。36段的分分类引导段(BootstrapSegment)存储数据字典表的定义段的分分类回滚段(RollbackSegment)存储修改之前的位置和值索引段(IndexSegment)存储表上最佳查询的所有索引数据临时段(TemporarySegment)存储表排序操作期间建立的临时表的数据数据(表)段(DataSegment)存储表中的所有数据37表空间间(tablespace)表空间间是最最大的的逻辑辑单位位,对应一一个或或多个个数据据文件件,表表空间间的大大小是是它所所对应应的数数据文文件大大小的的总和和。38表空间间与数数据库库之间间的关关系数据库库、表表空间间、数数据文文件、、方案案对象象(schemaobject)之之间的的关系系39Oracle10g创创建的的表空空间Oracle10g自自动创创建的的表空空间有有:Example(实实例表表空间间)Sysaux(辅助助系统统表空空间)System(系统统表空空间)Temp(临时时表空空间)Undotbs(重重做表表空间间)Users(用用户的的表空空间)40SYSTEM(系统统)表表空间间System:系系统统表空空间,存放放关于于表空空间的的名称称、控控制文文件、、数据据文件件等管管理信信息,,是最最重要要的表表空间间.它属于于Sys、、System两个个schema(方方案),仅仅被这这两个个或其其他具具有足足够权权限的的用户户使用用。但是均均不可可删除除或者者重命命名System表表空间间.41其他表表空间间Temp:临临时表表空间间存放放临时时表和和临时时数据据,用用于排排序。。Users:用用户户表空空间,,永久久存放放用户户对象象和私私有信信息,,也被被成为为数据据表空空间。。Sysaux:辅助助系统统表空空间,,用于于减少少系统统负荷荷,提提高系系统的的作业业效率率.一般地地:系系统用用户使使用system表表空间间,非非系统统用户户使用用Users表表空间间42Oracle10g体体系结结构--2.3软软件结结构43例程(instance)Oracle数数据库库结构构又称称为例例程结结构.数据库库启动动时::Oracle首首先要要在内内存中中获取取、划划分、、保留留各种种用途途的区区域,运行行各种种用途途的后后台,即::创建建一个个例程程(instance);然后由由该例例程装装载(mount)、打打开(open)数数据库库;最后由由这个个例程程来访访问和和控制制数据据库的的各种种物理理结构构44例程(instance)如果把把Oracle数据据库比比作一一部汽汽车,,instance相当当于汽汽车的的发动动机一一样,启动动oracle数据据库前前提应应先启启动instance.45例程(instance)当用户户连接接到数数据库库并使使用数数据库库时,,实际际上是是连接接到该该数据据库的的例程程,通通过例例程来来连接接、使使用数数据库库。所以例例程是是用户户和数数据库库之间间的中中间层层。例程与与数据据库的的区别别:数据库库指的的是存存储数数据的的物理理结构构,总总是实实际存存在的的;例程则则是由由内存存结构构和一一系列列进程程组成成,可可以启启动和和关闭闭。46OracleInstance的组组成实例(INSTANCE))是存取取和控控制数数据库库的软软件机机制,,它由由系统统全局局区((SystemGlobalArea,,简称称SGA))和后后台进进程组组成。。后台进程实例SGA数据高速缓缓存共享池池日志高速缓缓存47软件结结构内存结结构进程结结构内存结结构和进程结结构共同组组成了了软件件结构构48内存结结构内存结结构是是Oracle数据据库体体系中中最为为重要要的一一部分分,内内存也也是影影响数数据库库性能能的第第一因因素.按照内内存的的使用用方法法的不不同,Oracle数据据库的的内存存又可可以分分为SGA(SysteGlobalArea)和和PGA(ProgramGlobalArea).49系统全全局区区(SGA)SGA是ORACLE系统统为实实例分分配的的一组组共享享缓冲冲存储储区,,用于于存放放数据据库数数据和和控制制信息息,以以实现现对数数据库库数据据的管管理和和操作作。每个例例程都都只有有一个个SGA.它是不不同用用户进进程与与服务务进程程进行行通信信的中中心,数据据库的的各种种操作作主要要在SGA中进进行,所以以称其其为系系统全全局区区.创建例例程时时,Oracle为为SGA分分配内内存;终止例例程时时,释释放SGA所占占用的的内存存.50系统全全局区区(SGA)系统全全局区区由以以下几几个部部分组组成::51数据高高速缓缓存(DatabaseBufferCache)保存最最近从从数据据文件件中读读取的的数据据块,其中中的数数据被被所有有用户户共享享.两个参参数影影响DBC:DB_BLOCK_SIZE缓缓冲冲区数数据块块大小小DB_BLOCK_BUFFERS缓缓冲区区数据据块个个数52初次访访问数数据时时,Oracle将将读取取磁盘盘上的的数据据文件件,将将数据据放入入数据据高速速缓存存,再再处理理数据据;如果数数据已已经位位于数数据高高速缓缓存中中时,Oracle直接接操作作数据据。数据缓冲区数据文件数据据高高速速缓缓存存(DatabaseBufferCache)53数据据高高速速缓缓存存(DBC)DBC的的缓缓存存块块分分为为三三类类:脏缓缓存存块块存放放已已经经被被修修改改过过的的缓缓存存块块.当SQL修修改改某某个个缓缓存存块块中中的的数数据据,,则则这这个个缓缓存存块块被被标标记记为为脏脏缓缓存存块块空闲闲缓缓存存块块等待待写写入入数数据据的的空空闲闲缓缓存存块块.命中中缓缓存存块块最近近正正在在被被访访问问的的缓缓存存块块.54管理理缓缓存存块块的的列列表表Oracle通通过过2个个列列表表来来管管理理上上述述缓缓存存块块:脏列列表表(DIRTY)包括括被被修修改改过过但但尚尚未未写写到到数数据据文文件件的的缓缓冲冲块块。。LRU(LeastRecentlyUsed)列列表表包括括空空闲闲缓缓冲冲块块、、命命中中缓缓存存块块,以以及及还还没没有有移移到到脏脏列列表表的的缓缓冲冲块块。。55数据据高高速速缓缓存存工工作作原原理理读数数据据入入DBC之之前前,先先在在LRU中中搜搜索索空空闲闲缓缓存存块块;在在搜搜索索过过程程中中如如果果发发现现脏脏缓缓存存块块,则则将将其其移移入入DIRTY;找到到足足够够的的空空闲闲块块,将将所所有有数数据据读读入入;;3,,4.如如果果空空闲闲块块不不足足,,则则暂暂停停搜搜索索,,Oralce立立刻刻启启动动DBWR进进程程,将将DIRTY中中的的脏脏缓缓存存块块数数据据写写入入数数据据文文件件释释放放足足够够的的空空闲闲缓缓存存块块。。数据据库库写写进进程程56重做做日日志志高高速速缓缓存存当执执行行DML(DataManipulationLanguage,数数据据操操纵纵语语言言)如如:update、、delete、、insert或或者者create、、alter、、drop等等语语句句时时,Oracle都都会会为为这这些些操操作作生生成成重重做做记记录录.重做做日日志志高高速速缓缓存存就就是是用用于于存存储储重重做做记记录录的的缓缓存存.57重做做日日志志高高速速缓缓存存工工作作原原理理为提提高高效效率率,重重做做记记录录并并不不直直接接写写入入磁磁盘盘的的重重做做日日志志文文件件,而而是是先先写写入入重重做做日日志志缓缓存存;当重重做做日日志志缓缓存存中中的的重重做做记记录录达达到到一一定定数数量量时时,由由LGWR进进程程写写入入重重做做日日志志.(先先内内存存后后磁磁盘盘)当2个个(至至少少2个个)重重做做日日志志切切换换时时,由由ARCH将将重重做做日日志志中中的的数数据据写写入入归归档档日日志志文文件件,,以以做做备备份份.日志志写写进进程程归档档进进程程58共享享池池(SharedPool)共享享池池保保存存了了最最近近执执行行的的SQL语语句句、、PL/SQL程程序序和和数数据据字字典典信信息息,是是对对SQL语语句句和和PL/SQL程程序序进进行行语语法法分分析析、、编编译译、、执执行行的的内内存存区区.59共享池池(SharedPool)共享池池由库缓存存和数据字字典缓缓存组成。。参数SHARED_POOL_SIZE确定共共享池池的大大小。。库缓存存(LibraryCache)区区包括括解析用用户进进程提提交的的SQL语语句或或PL/SQL程序序保存最最近解解析过过的SQL语句句或PL/SQL程程序数据字字典区区(Dictionarycache)用于于存放放数据据字典典信息息行。。60OracleDBMS执行行各种种SQL、、PL/SQL之前前,要要对其其进行行语法法上的的解析析、对对象上上的确确认、、权限限上的的判断断、操操作上上的优优化等等一系系列操操作,,并生生成执执行计计划。。库缓存存保存存了已已经解解析的的SQL和和PL/SQL。库缓存存61数据字字典缓缓存在Oracle运行行过程程中,Oracle会频频繁的的对数数据字字典中中的表表、视视图进进行访访问,,以便便确定定操作作的数数据对对象是是否存存在、、是否否具有有合适适的权权限等等信息息。数据字字典缓缓保存存了最最常用用的数数据字字典信信息。。数据字字典缓缓存中中存放放的记记录是是一条条一条条的,而其他他缓存存区中中保存存的是是数据据块.62大池大池用用于需需要大大内存存操作作提供供相对对独立立的内内存空空间,,以便便提高高性能能。大池是是可选选的内内存结结构。。DBA可以以决定定是否否需要要在SGA中创创建大大池。。需要大大池的的操作作:数据库库备份份和恢恢复大量排排序的的SQL语语句并行化化的数数据库库操作作63Java池池8i以以后提提供的的对Java的的支持持,用用于存存放Java代代码、、Java程序序等.一般不不小于于20M,以便便虚拟拟机运运行.64PGA(ProgramGlobalArea)PGA是用用户进进程连连接到到数据据库,并创创建一一个对对应的的会话话时,,由Oracle为为服务务进程程分配配的,,专门门用于于当前前用户户会话话的内内存区区。PGA是非非共享享的,,而SGA是共共享的的。PGA大小小由操操作系系统决决定,,并且且分配配后保保持不不变;;会话终终止时时,自自动释释放PGA所占占的内内存。。65PGA的组组成排序区区会话区区游标区区堆栈区区PGA服务器进程66排序区区执行orderby、、groupby等包包含排排序操操作的的SQL语语句时时所产产生的的临时时数据据.Oracle将将准备备排序序的数数据先先临时时存储储到排排序区区中,,并在在排序序区中中排序序,然然后将将排序序好的的数据据返回回给用用户.67会话区区保存会会话所所具有有的权权限、、角色色、性性能统统计信信息.68游标区区当运行行带有有游标标(course)的PL/SQL语语句时时,Oracle会会在共共享池池中为为该语语句分分配上上下文文(Context),,游标标实际际上是是指向向该上上下文文的指指针。。69堆栈区区保存会会话中中的绑绑定变变量、、会话话变量量以及及SQL语语句运运行时时的内内存结结构信信息。。例如:select*fromempwhereemp=:a;:a就是绑绑定变量,提示用户户输入.在等待用户户输入时,,先将该变变量存入堆堆栈,以便便可以同时时运行其他他语句.70进程结构进程时操作作系统中的的一个概念念,是一个个可以独立立调用的活活动,用于于完成指定定的任务。。进程与程序序的区别是是:进程是动态态创建的,,完成后销销毁;程序序是静态的的实体,可可以复制、、编辑。进程强调执执行过程,,程序仅仅仅是指令的的有序集合合。进程在内存存中,程序序在外存中中。71进程种类Oracle包括用用户进程和和Oracle进程程两类:用户进进程服务器进程程后台进进程Oracle进程72用户进程当用户运行行一个应用用程序时,,就建立一一个用户进进程。73服务器进程程服务器进程程:处理用户进进程的请求求。处理过程:分析SQL命令并生生成执行方方案。从数据缓冲冲存储区中中读取数据据。将执行结果果返回给用用户。74后台进程后台进程为所有数据据库用户异异步完成各各种任务。。主要的后台进程有

DBWR数据库写进程LGWR日志写进程CKPT检查点写进程SMON系统监控进程PMON进程监控进程ARCH归档进程RECO恢复进程LCKn封锁进程75DBWR(数据写)DBWR(DataBaseWriter)将数据缓冲冲区中所有有修改过的的缓冲块数数据写到数数据文件中中,并使用用LRU算算法来保持持缓冲区中中的数据块块为最近经经常使用的的,以减少少I/O次次数。该进程在启启动实例时时自动启动动。76LGWR(日志写)LGWR((LogWriter)将日志缓冲冲区中的所所有记录项项写到日志志文件中。。该进程在启启动实例时时自动启动动。77启动LGWR进行写写操作的条条件用户进程提提交一个事事务(Commit)日志缓冲区区达到1/3范围DBWR对对一个检查查点需要清清除缓冲块块出现超时((3秒钟内内未活动,,则进行一一次写操作作。)78ARCH(归档进程程)ARCH(Archiver)在日志文件件组出现切切换时,将将旧日志文文件的内容容拷贝到脱脱机存储介介质上,出出现介质失失败时用于于恢复数据据。ARCH存储介质79其他后台进进程SMON((SystemMonitor,系统监控进进程)负责完成自自动实例恢恢复。该进进程在启动动实例时自自动启动。。PMON((ProcessMonitor,进程监控进进程)撤消异常中中断的用户户进程,并并释放该进进程已获得得的系统资资源或锁。。80RECO((Recover,恢复进程)在分布式操操作的情况况下,恢复复一个事务务的失败。。LCKn((Lock,锁进程)在并行服务务器系统间间加锁,最最多可加10个锁,,分别为LCK0,LCK1,,LCK9。其他后台进进程81体系结构的的示例处理SQL语句的三三个阶段语法分析执行返回指令Server共享池数据缓冲区日志缓冲区SGAUserUserUserSQL>SELECTenameFROMemp;Server共享池数据缓冲区日志缓冲区SGAUserUserUserSMITHALLENWARDServer共享池数据缓冲区日志缓冲区SGA82体系结构的的示例SELECT操作SQL>SELECTsalFROMempWHEREjob=‘‘CLERK’’;Server共享池数据缓冲区SGAUserUserUserB1B2EMPTableBlock1Block283体系结构的的示例UPDATE操作为了支持读读一致性,,恢复和回回滚,所有有修改操作作需要回滚滚段。修改改操作执行行:将数据块送送到数据缓缓冲区将回滚块送送到数据缓缓冲区在修改行上上设置行锁锁保存回滚数数据到回滚滚段块将修改写到到数据块84体系结构的的示例SQL>SELECTsalFROMempWHEREjob=‘‘CLERK’’;Server1UserUserUser1Server2UserUserUser2共享池数据缓冲区SGAB1B2R2R1EMPTableBlock1Block2RB01R1R2DataFile1DataFile2SQL>UPDATEempSETsal=sal*1.1WHEREjob=‘‘CLERK’’;UPDATE操作85Oracle10g体系结结构--2.4数据字字典86数据字典数据字典是是Oracle数据据库的核心心组件,它它由一系列列只读的数数据字典表表和数据字字典视图组组成.数据字典中中记录了数数据库的系系统信息、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论