已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大型数据库概论IntroductionofLargeDatabase第8章Oracle9i数据库的恢复,学习目标1、理解数据库备份的概念。2、掌握Oracle9i数据库的备份技术。3、理解数据库恢复的概念。4、掌握Oracle9i数据库的恢复技术。,第8章Oracle9i数据库的恢复实际使用数据库时可能会因某些异常情况使数据库发生故障,从而影响数据库中数据的正确性,甚至会破坏数据库使数据全部或部分丢失。因此发生数据库故障后,DBMS应具有数据库恢复的能力,这是衡量一个DBMS性能好坏的重要指标之一。8.1数据库备份概述8.1.1数据库备份的概念所谓备份,就是将数据库复制到某一存储介质中保存起来的过程,存放于存储介质中的数据库拷贝称为原数据库的备份或副本,这个副本包括了数据库所有重要的组成部分,如初始化参数文件、数据文件、控制文件和重做日志文件。数据库备份是Oracle9i防护不可预料的数据丢失和应用程序错误的有效措施。引起数据库故障并需要恢复的情况分为两大类:n实例崩溃:最常出现的问题,可能由于意外断电、OS崩溃、软件内部错误等原因引起。通常实例崩溃不会永久地导致物理数据库结构的损失,Oracle9i自身的实例崩溃恢复保护机制足以在重新启动数据库时自动完全恢复数据库,无需用户参与。,n介质故障:由于用户的错误操作、文件错误或硬盘故障均可造成数据库文件的破坏或丢失。应付这类故障,构成了DBA备份工作的主体。Oracle9i数据库备份和恢复机制包括保护和恢复已损失各类文件的数据库所需的一切功能。8.1.2数据库备份的模式数据库可运行在两种备份模式下:非归档(NOARCHIVELOG)模式和归档(ARCHIVELOG)模式。在非归档模式下,数据库不能进行联机日志的归档,仅能保护数据库实例崩溃故障,而不能免于介质故障。只有最近存储于联机重做日志组中的数据库修改才可以用于实例崩溃恢复。在归档模式下,数据库可实施联机日志的归档,该模式也称为介质可恢复模式。查看一个数据库处于何种备份模式,可以通过企业管理器,选择“例程”“配置”,即可查看当前数据库的备份模式,如图8.1所示。也可以通过脚本ARCHIVELOGLIST;查看当前数据库的备份模式,如图8.2所示。,图8.1使用企业管理器查看数据库备份模式,图8.2使用PL/SQL命令查看数据库备份模式,8.1.3数据库备份的策略结合自身数据库的特点,备份前应考虑如下要点制订备份策略。n用于备份的磁盘一定要和数据库数据文件、控制文件和联机日志文件所在的磁盘相分离。n选择数据库的备份模式:强烈建议采用归档模式。n在数据库进行结构性改动(如创建或删除一个表空间)的前后进行数据库备份。n避免对联机日志文件进行备份。8.2Oracle9i数据库的备份根据备份时数据库所处的状态,可将Oracle9i数据库备份分为联机备份和脱机备份两种。8.2.1脱机备份脱机备份是在数据库已正常关闭时进行的备份,它必须备份全部数据库文件,包括初始化参数文件、数据文件、控制文件和重做日志文件,它适用于规模比较小、业务量不大的数据库。,脱机备份时首先要正常关闭要备份的数据库,然后使用操作系统的复制命令进行备份。脱机备份具有如下优点:n只需拷贝文件,所以简单而快速。n容易恢复到某个时间点上(只需将文件再拷贝回去)。n能与归档方法相结合,做数据库以“最新状态”的恢复。n低度维护,高度安全。但是,脱机备份也具有如下缺点:n单独使用时,只能提供到“某一时间点上”的恢复。n在实施备份的全过程中,数据库必须处于关闭状态。n不能按表或用户恢复。,8.2.2联机备份联机备份是在数据库正常运行的情况下进行的物理备份,它可以是数据库的部分备份,即只备份数据库的某个表空间、某个数据文件或控制文件等。联机备份时必须首先使数据库处于归档模式,这是因为从一个联机备份中还原总要涉及到从日志文件中恢复事务,所以必须归档所有的联机日志文件。设置数据库运行在归档模式时,既可以通过企业管理器在如图8.1所示的窗口中设置,也可以先编辑初始化参数文件,修改参数log_archive_start=true(使归档进程自动执行归档操作),然后执行以下脚本,运行结果如图8.3所示。/关闭数据库shutdown;/启动例程,登录数据库,但不打开数据库startupmount;/将数据库切换到归档模式alterdatabasearchivelog;/*打开数据库*/alterdatabaseopen;,图8.3使用PL/SQL命令使数据库运行在归档模式,联机备份具有如下优点:n可在表空间或数据文件级备份,备份时间短。n备份时数据库仍可使用。n可达到秒级恢复(恢复到某一时间点上)。n可对几乎所有数据库实体作恢复。n恢复是快速的。但是,联机备份也具有如下缺点:n不能出错,否则后果严重。n若联机备份不成功,所得结果不可用于时间点的恢复。n较难维护,必须仔细小心,不能失败。,8.2.3使用企业管理器进行联机备份1.准备工作连接Oracle管理服务器(OracleManagementServer)要进行联机备份,必须连接到管理服务器。连接管理服务器的步骤是:n配置资料档案库,方法是选择“开始”“程序”“OracleoraHome92”“ConfigurationandMigrationTool”“EnterpriseManagerConfigurationAssistant”,弹出配置向导进行配置。n启动企业管理器,选择“登录到OracleManagementServer”复选框,填入管理员账号及口令,在“ManagementServer”列表框中输入或选择管理服务器所在的服务器名称或IP地址,如图8.4所示。,图8.4连接“管理服务器”的登录界面注意默认管理员是sysman/oem_temp,系统管理员应该更改该口令。,n单击“确定”按钮,弹出如图8.5所示的“管理服务器”窗口。,图8.5“管理服务器”窗口,设置备份数据库的首选身份证明n选择菜单“配置”“首选项”,弹出如图8.6所示的“编辑管理员首选项”对话框。该对话框由“一般信息”、“通知”、“调度”、“访问权”和“首选身份证明”五个选项卡构成。,图8.6“编辑管理员首选项”对话框(“一般信息”选项卡),n选择“首选身份证明”选项卡,如图8.7所示。选中要设置的数据库,然后在“用户名”、“口令”和“确认口令”文本框中输入FIRSTMAN及其密码,在“角色”列表框中选取SYSDBA(该用户必须拥有SYSDBA系统权限才能备份和恢复数据库),单击“确定”按钮,即完成了数据库首选身份证明的操作。,图8.7“编辑管理员首选项”对话框(“首选身份证明”选项卡),2.使用备份管理进行备份数据库默认备份设置:展开“数据库”节点,右击test,在快捷菜单中选择“备份管理”“创建备份配置”,系统将弹出如图8.8所示的“创建备份配置”对话框,该对话框包括“一般信息”、“通道”、“恢复目录”、“备份参数”和“首选身份证明”五个选项卡,各选项卡的含义解释如下:,图8.8选择“创建备份设置”命令,“一般信息”选项卡用于输入一次备份设置的代号和描述说明,如图8.9所示。,图8.9“创建备份配置”的对话框(“一般信息”选项卡),“通道”选项卡用于指定一个或多个通道(指明备份和恢复操作的输出设备),如图8.10所示。,图8.10“创建备份配置”的对话框(“通道”选项卡),n通道定义:可以在磁盘和磁带中选择。n“通道名”:用户指定的通道名称。n“格式”:b_%u_%s_%p,其中存储备份集的驱动器和路径,必须为通道指定一个适当的目录。后跟的文件名是唯一的备份集名,可以使用如下参数:ub是备份的前缀,前缀不是必需的,可以任意修改它;u%p是备份集内的备份片编号,在每个备份集中该值都从1开始,而后每创建一个备份片就递增1;u%u是唯一名称;u%s是备份集编号,计数器值从1开始,并且对控制文件来说始终唯一;u%t是备份集时间戳。n“通道限制”按钮:可以访问“通道限制”页,从中可对任何备份加以限制。n“插入”按钮:用于创建其它通道定义。n“移去”按钮:用于删除已选通道。,“恢复目录”选项卡可以选择存储备份信息的位置,如图8.11所示。,图8.11“创建备份配置”的对话框(“恢复目录”选项卡),“备份参数”选项卡可以设置当前备份集的存储参数,如图8.12所示。,图8.12“创建备份配置”的对话框(“备份参数”选项卡),“首选身份证明”选项卡可以指定用于运行备份作业的首选身份证明,如图8.13所示。,图8.13“创建备份配置”的对话框(“首选身份证明”选项卡)各选项卡设置后单击“创建”按钮即可提交此次备份设置作业。,利用备份向导备份数据库右击要备份的数据库,在快捷菜单中选择“备份管理”“备份”,如图8.14所示。,图8.14启动备份向导,备份向导的初始界面如图8.15所示。,图8.15备份向导启动界面,单击“下一步”按钮,弹出“策略选择”对话框,如下图8.16所示。,图8.16设置备份向导(“策略选择”对话框)有两种策略可以进行选择:n“预定义备份策略”:是Oracle9i系统预定义的备份策略。n“自定义备份策略”:选择要备份的信息以及备份执行的调度。如果要使用映像副本,必须选择“自定义备份策略”。本例选定“自定义备份策略”。,单击“下一步”按钮,弹出“备份选择”对话框,如图8.17所示。如果数据库处于非存档模式,则只能执行数据库完全备份。本例由于数据库处于归档模式,可以进行多种类型的备份:,图8.17设置备份向导(“备份选择”对话框),单击“下一步”按钮,弹出设置“归档日志”对话框,如图8.18所示。,图8.18设置备份向导(“归档日志”对话框),单击“下一步”按钮,弹出“备份选项”对话框,如图8.19所示。,图8.19设置备份向导(“备份选项”对话框),单击“下一步”按钮,弹出“配置”对话框,如图8.20所示。,图8.20设置备份向导(“配置”对话框),单击“下一步”按钮,弹出“调度”对话框,可以调度执行备份,如图8.21所示。,图8.21设置备份向导(“调度”对话框),单击“下一步”按钮,弹出“作业信息”对话框,用于指定备份作业的名称和说明,以及希望对该作业执行的处理,如图8.22所示。,图8.22设置备份向导(“作业信息”对话框),单击“完成”按钮,弹出如图8.23所示的“概要”对话框。,图8.23设置备份向导(“概要”对话框),“概要”对话框汇总了备份向导创建的备份管理作业的有关信息,单击“确定”按钮,将作业提交到数据库管理器的作业系统。如果成功提交,则系统会弹出如图8.24所示的信息框。,图8.24备份作业成功提交的信息框,8.3数据库恢复概述8.3.1数据库恢复的概念数据库恢复就是当数据库发生故障后,从归档和联机日志文件中读取日志记录并将这些变化应用到做好的数据库数据文件备份中,将其更新到最近的状态。数据库的恢复包括前滚(RollingForward)和后滚(RollingBack)两个阶段。在前滚阶段,如果数据库只是从实例崩溃中恢复,则只需应用必要的联机日志文件和数据文件去重新执行所有已提交的但不在数据库当前文件中的事务,但如果数据库从介质故障中恢复,则还需要使用已备份的数据文件、归档日志文件来完成前滚。在后滚阶段,Oracle利用数据库后滚段中的信息去“撤销”在系统崩溃时由任何打开(未提交)事务所作的数据库修改。8.3.2实例恢复与介质恢复根据出现故障的原因,数据库恢复分为实例恢复与介质恢复两种类型。,1.实例恢复(InstanceRecovery):实例恢复用于将数据库从突然断电、应用程序错误等导致数据库实例、操作系统崩溃等情况下的恢复,其目的是恢复“死掉”的例程在高速缓冲区数据块中的变化,并关闭日志线程。实例恢复只需要联机日志文件和当前的联机数据文件,无需归档日志文件。实例恢复的最大特点是Oracle9i在重启数据库时自动应用日志文件进行恢复,无需用户的参与,是完全透明的,在启动Oracle9i时是否进行实例恢复对于用户而言没什么区别,好像没有发生一样。2.介质恢复(MediaRecovery):介质恢复主要用于介质损失时的恢复,即对受损失的数据文件或控制文件的恢复。介质恢复的特点是:n对受损的数据文件的复原备份施加变化。n只能在存档模式下进行。n既使用联机日志文件又使用归档日志文件。n需要由用户发出明确的命令来执行。nOracle系统不会自动进行介质恢复。n恢复时间完全由用户决定,而不由Oracle内部机制决定。,8.3.3完全恢复和不完全恢复(按照介质恢复的程度分类)1.完全恢复完全恢复就是恢复所有已提交事务的操作,即将数据库、表空间或数据文件的备份更新到最近的时间点上。在数据文件或控制文件遭到介质损失之后,一般都要进行完全恢复。如果对整个数据库进行完全恢复,可执行以下操作:n登录数据库。n确保要恢复的所有文件都联机。n将整个数据库或要恢复的文件进行复原。n施加联机日志文件和归档日志文件。如果对一个表空间或数据文件进行完全恢复,可执行以下操作:n如果数据库已打开,可将要恢复的表空间或数据文件处于脱机状态。n将要恢复的数据文件进行复原。n施加联机日志文件和归档日志文件。,2.不完全恢复:使用数据库的备份来产生一个数据库的非当前版本,即将数据库恢复到某一特定的时刻。通常在以下情况下需要进行不完全恢复:n介质损失破坏了联机日志文件的部分或全部记录。n用户操作错误造成了数据损失。n由于丢失了归档日志文件,不能进行完全恢复;n丢失了当前控制文件,必须使用控制文件备份来打开数据库。Oracle9i支持四种类型的不完全恢复:n基于时间的恢复(Time-basedRecovery):将已提交事务恢复到某个时间点为止。n基于更改的恢复(Change-basedRecovery):将已提交事务恢复到一个特定的系统修改序列号(SCN)为止。Oracle为每一个提交事务都分配了唯一的SCN。n基于取消的恢复(Cancel-basedRecovery):将已提交事务恢复到某个特定日志组的应用为止。n日志序列恢复(LogsequenceRecovery):将数据库恢复到指定的日志序列号。,8.4Oracle9i数据库的恢复Oracle9i的数据库恢复可以使用企业管理器或手工方式进行。8.4.1使用企业管理器进行数据库恢复启动企业管理器后,展开“数据库”节点,右击要恢复的数据库,在快捷菜单中选择“备份管理”“恢复”,弹出如图8.25所示的“恢复向导”简介窗口。,图8.25“恢复向导”简介,单击“下一步”按钮,弹出如图8.26所示的“恢复选择”窗口。,图8.26“恢复向导”对话框(“恢复选择”)“恢复选择”对话框用于选择恢复操作类型:恢复整个数据库、恢复一个或多个表空间、恢复一个或多个数据文件。如果数据库已装载但未打开,则上述三种类型都可用;如果数据库已打开并处于存档模式,则只可恢复表空间和数据文件。若选中“执行恢复,不复原数据文件”复选框,则将只执行恢复而不执行复原,并且将不会出现“重命名”页;默认情况下,该复选框不选中。,单击“下一步”按钮,弹出如图8.27所示的“表空间”窗口。,图8.27“恢复向导”对话框(“表空间”),单击“下一步”按钮,弹出如图8.28所示的“重命名”窗口。,图8.28“恢复向导”对话框(“重命名”),单击“下一步”按钮,弹出如图8.29所示的“配置”窗口。,图8.29“恢复向导”对话框(“配置”),单击“完成”按钮,将恢复作业提交,系统弹出如图8.30所示的“概要”窗口。,图8.30设置“恢复向导”(“概要”对话框)单击“确定”按钮,完成此次恢复工作,提交恢复操作作业,系统弹出相应消息框。,8.4.2使用PL/SQL命令进行数据库恢复Oracle9i强烈推荐使用RECOVER语句而非ALTERDATABASERECOVER语句来执行介质恢复。因为在大多数情况下,前者更容易实现且效率较高。RECOVER命令的语法如下:RECOVERAUTOMATICDATABASE|TABLESPACE表空间名1,表空间名2,|DATAFILE数据文件名1,数据文件名2,UNTILCANCEL|TIME时间|CHANGE数字USINGBACKUPCONTROLFILE;上面语法中各参数描述如下:nDATABASE、TABLESPACE、DATAFILE:分别表示恢复数据库、表空间和数据文件。nUNTILCANCEL|TIME|CHANGE:分别表示指定一个基于取消、基于时间、基于修改的不完全恢复。nUSINGBACKUPCONTROLFILE:表示使用备份的控制文件。,卸出(Export)/装入(Import),用操作系统文件及卸出与装入工具归档和恢复Oracle数据Export/Import的使用按时间保存表定义或数据保存表定义,以便可以重新装入Oracle数据库把某台机器的数据库移到另一台机器上两个版本的Oracle软件间传输数据防止应用失败。通过执行Export,在不用全部回退数据库的情况下,允许表或表的集合被恢复重新组织表减少链接和碎片,卸出模式:表(Table):卸出指定的表用户(User):卸出属于一个用户的所有实体(如表、权限索引)全部数据库(FullDatabase):卸出数据库的所有实体备注:只有拥有EXP_FULL_DATABASE权限的用户才能卸出全部的数据库所有用户都可以在表和用户模式下卸出数据,卸出数据(Export),表模式:表定义表数据表拥有者的授权表拥有者的索引表完整性约束表触发器,卸出数据(Export),用户模式:表定义表数据表拥有者的授权表拥有者的索引表完整性约束表触发器聚簇,卸出数据(Export),数据库链路序列生成器快照快照logs存储过程私有同义词视图,全部数据库模式:表定义表数据表拥有者的授权表拥有者的索引表完整性约束表触发器聚簇Profiles角色回退段定义,卸出数据(Export),数据库链路序列生成器快照快照logs存储过程私有同义词视图系统审计选项系统权限表空间定义表空间限额用户定义,$pwd$/home2/app/oracle/product/9.0.1$expExport:Release9.0.1.1.1-ProductiononSunOct2112:22:292001(c)Copyright2001OracleCorporation.Allrightsreserved.Username:systemPassword:Connectedto:Oracle9iEnterpriseEditionRelease9.0.1.1.1-ProductionWiththePartitioningoptionJServerRelease9.0.1.1.1-ProductionEnterarrayfetchbuffersize:4096Exportfile:EXPDAT.DMP(1)E(ntiredatabase),(2)U(sers),or(3)T(ables):(2)U,卸出数据(Export),$impImport:Release9.0.1.1.1-ProductiononSunOct2112:38:352001(c)Copyright2001OracleCorporation.Allrightsreserved.Username:scottPassword:Connectedto:Oracle9iEnterpriseEditionRelease9.0.1.1.1-ProductionWiththePartitioningoptionJServerRelease9.0.1.1.1-ProductionImportfile:EXPDAT.DMP/u02/app/oracle/oradata/ora9i/scott.dmp,数据装入(Import),表模式卸出(EXP),用户模式卸出(EXP),数据库模式卸出(EXP),使用IMP装入数据,输入卸出用户名,使用Export/Import:,卸出大表,应用实例:,应用实例:基表:sales01记录:4190000,$expuserid=sales01/sales01direct=Ytables=(sales01)file=/home1/oracle/backup/sales01log=/home1/oracle/backup/sales01Export:Release9.0.1.1.1-Productionon星期三5月3014:54:322001(c)Copyright2001OracleCorporation.Allrightsreserved.连接到:Oracle9iEnterpriseEditionRelease9.0.1.1.1-ProductionWiththePartitioningoptionJserverRelease9.0.1.1.1-Production已导出ZHS16GBK字符集和ZHS16GBKNCHAR字符集即将导出指定的表通过直接路径.正在导出表SALES014194304行被导出在没有警告的情况下成功终止导出。,$impImport:Release9.0.1.1.1-Productionon星期三5月3015:12:032001(c)Copyright2001OracleCorporation.Allrightsreserved.用户名:sales02口令:已连接到:Oracle9iEnterpriseEditionRelease9.0.1.1.1-ProductionWiththePartitioningoptionJserverRelease9.0.1.1.1-Production导入文件:EXPDAT.DMP/home1/oracle/backup/sales输入插入缓冲区大小(最小为8192)30720经由直接路径导出由EXPORT:V09.01.01创建的导出文件警告:此对象由SALES01导出,而不是当前用户已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入只列出导入文件的内容(yes/no):no由于对象已存在,忽略创建错误(yes/no):no导入权限(yes/no):yes导入表数据(yes/no):yes导入整个导出文件(yes/no):no用户名:sales01.正在装入SALES014194304行被装入在没有警告的情况下成功终止装入。,应用实例:基表:sales01记录:4190000,$expuserid=sales01/sales01direct=Yfile=/home1/oracle/backup/sales_userlog=/home1/oracle/backup/sales_userExport:Release9.0.1.1.1-Productionon星期三5月3014:54:322001(c)Copyright2001OracleCorporation.Allrightsreserved.连接到:Oracle9iEnterpriseEditionRelease9.0.1.1.1-ProductionWiththePartitioningoptionJserverRelease9.0.1.1.1-Production已导出ZHS16GBK字符集和ZHS16GBKNCHAR字符集.正在导出pre-schema过程对象和操作.正在导出用户SALES01的外部函数程序库名称.正在导出用户SALES01的对象类型定义即将导出SALES01的对象.正在导出数据库链接.正在导出序号.正在导出群集定义.即将导出SALES01的表通过直接路径.正在导出表SALES014194304行被导出.正在导出同义词.正在导出视图,应用实例:基表:sales01记录:4190000,$expuserid=system/managerdirect=Yfull=yfile=/home1/oracle/backup/systemalllog=/home1/oracle/backup/systemlogExport:Release9.0.1.1.1-Productionon星期三5月3014:54:322001(c)Copyright2001OracleCorporation.Allrightsreserved.连接到:Oracle9iEnterpriseEditionRelease9.0.1.1.1-ProductionWiththePartitioningoptionJserverRelease9.0.1.1.1-Production已导出ZHS16GBK字符集和ZHS16GBKNCHAR字符集即将导出整个数据库.正在导出表空间定义.正在导出配置文件.正在导出用户定义.正在导出角色.正在导出资源成本.,应用实例:基表:sales01记录:4190000,$impsystem/managerfull=yfile=/home1/oracle/backup/systemalllog=/home1/oracle/backup/systemlogImport:Release9.0.1.1.1-Productionon星期三5月3015:12:032001(c)Copyright2001OracleCorporation.Allrightsreserved.已连接到:Oracle9iEnterpriseEditi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省烟台招远市(五四制)2024-2025学年六年级上学期期中考试地理试题
- 河北省唐山市部分学校2024~2025学年高一上学期11月期中联考生物试卷
- 《驾驶室固定矩形窗》
- 福建省泉州市安溪县2024-2025学年高三上学期11月期中测评试题 物理(含解析)
- 2025届四川省泸州市泸县第五中学高三上学期一模政治试题
- 饲用原料作物相关项目投资计划书范本
- 工业涂料水性色浆相关项目投资计划书
- 儿科急症的超声诊断课件
- 教学难点及解决方案
- 青霉素过敏应急预案演练
- (完整版)四宫格数独题目204道(可直接打印)及空表(一年级数独题练习)
- 移动机器人SLAM技术 课件 【ch04】移动机器人定位
- JIT、QR与供应链管理课件
- 车辆采购服务投标方案(完整技术标)
- 纯化水系统风险评估报告-1
- 数字化城市垃圾管理云平台垃圾云建设方案
- 《大学生军事理论教程》第四章
- 光伏发电项目达标投产实施细则之欧阳科创编
- 公租房运营管理服务投标方案
- 中医常见病、优势病种诊疗方案分析、总结及评价(精)
- 动态规划经典教程完整版
评论
0/150
提交评论