下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章闪回操作和Undo表空间,9.1闪回操作 闪回在Oracle9i就已经提出,在Oracle 10g中,数据闪回功能更加完善,可以在 不对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复。,9.1.1基本概念,闪回操作使数据库中的实体显示或回到过去某一时间点,这样可以实现对历史数 据的恢复。闪回数据库功能可以将Oracle数据库恢复到以前的时间点。传统方法 是进行时间点恢复。然而,时间点恢复需要数小时甚至几天的时间。闪回数据库 是进行时间点恢复的新方法。它能够快速将Oracle数据库恢复到以前的时间,以 正确更正由于逻辑数据损坏或用户错误而引起的任何问题。当需要恢复时,可以 将数据库
2、恢复到错误前的时间点,并且只恢复改变的数据块。 在Oracle 10g中,闪回操作包括: (1)查询闪回(Flashback Query):查询过去某个指定时间、指定实体的数 据,恢复错误的数据库更新、删除等。 (2)表闪回(Flashback Table):使表返回到过去某一时间的状态,可以恢复 表、取消对表进行的修改。 删除闪回(Flashback Drop):可以将删除的表重新恢复。 (4)数据库闪回(Flashback Database):可以将整个数据库回退到过去某个时 间点。,第9章闪回操作和Undo表空间,9.1.2查询闪回,Oracle查询闪回使管理员或用户能够查询过去某些时间
3、点的任何数据,查看和重 建因意外被删除或更改而丢失的数据。闪回查询管理简单,数据库可自动保存必 要的信息,以在可配置时间内重新将数据恢复过去的状态。 执行查询闪回操作时,需要使用两个时间函数:TIMESTAMP和TO_TIMESTAMP。其中,函数TO_TIMESTAMP的语法格式为: TO_TIMESTAMP(timepoint,format) 其中: timepoint:表示某时间点。 format:需要把timepoint格式化成何种格式。,9.1.2查询闪回,【例9.1】使用查询闪回恢复删除的数据。 (1)查询表XS_JSJ中的数据: SQLSET TIME ON 16:11:37 S
4、QLSELECT * FROM XS_JSJ; XH XM ZYM XB CSSJ ZXF BZ 061101王林 计算机 男1986-02-10 50NULL 061102程明 计算机 男1987-02-01 50NULL 061103王燕 计算机 女1985-10-06 50NULL 061104韦严平 计算机 男1986-08-26 50NULL 061106李方方 计算机 男1986-11-20 50NULL 061107李明 计算机 男1986-05-01 54提前修完数据结 构,并获学分 061108林一帆 计算机 男1985-08-05 52已提前修完一门课 061109张强民
5、计算机 男1984-08-11 50NULL 061110张蔚 计算机 女1987-07-22 50三好生 061111赵琳 计算机 女1986-03-18 50NULL 061113严红 计算机 女1985-08-11 48有一门功课不及 格,待补考,9.1.2查询闪回,(2)删除表XS_JSJ中所有记录并提交。 16:12:24 SQLDELETE FROM XS_JSJ; 16:13:15 SQLCOMMIT; (3)进行查询回闪。 16:14:12 SQLSELECT * FROM XS_JSJ AS OF TIMESTAMP TO_TIMESTAMP(2006-5-31 16:12:
6、25, YYYY-MM-DD HH24:MI:SS); 执行以上语句后,可以看到表中原来的数据。 (4)将闪回中的数据重新插入XS_JSJ表中。 16:16:21 SQLINSERT INTO XS_JSJ SELECT * FROM XS_JSJ AS OF TIMESTAMP TO_TIMESTAMP(2006-5-31 16:12:25, YYYY-MM-DD HH24:MI:SS);,9.1.3表闪回,利用表闪回可以恢复表,取消对表所进行的修改。表闪回要求用户具有以下权限: (1) FLASHBACK ANY TABLE权限或者是该表的Flashback对象权限。 (2)有该表的SEL
7、ECT、INSERT、DELETE、ALTER权限。 (3)必须保证该表ROW MOVEMENT。 Oracle 10g的闪回表与Oracle9i的查询闪回功能类似,也是利用恢复信息(Undo Informations)对以前的一个时间点上的数据进行恢复。Oracle 10g的表闪回有如 下特性: (1)在线操作。 (2)恢复到指定时间点或者SCN的任何数据。 (3)自动恢复相关属性,如索引、触发器等。 (4)满足分布式的一致性。 (5)满足数据一致性,所有相关对象的一致性。,9.1.3表闪回,要实现表闪回,必须确保与撤销表空间有关的参数设置合理。撤销表空间相关参 数为:UNDO_MANAGE
8、MENT、UNDO_TABLESPACE和 UNDO_RETENTION。在sql*plus中执行下面的语句显示撤销表空间的参数。 SQLSHOW PARAMETER UNDO NAMETYPEVALUE Undo_managementstringAUTO Undo_retentioninteger900 Undo_tablespacestringUNDOTBS1,9.1.3表闪回,在创建撤销表空间时,要考虑数据保存的时间长短、每秒产生的块数据量及块大小等。假 如表空间大小用undo表示,那么: undoURUPSDB_BLOCK_SIZE+冗余量 (1)UR:在undo中保持的最长时间数(秒
9、),由数据库参数UNDO_RETENTION值决定。 (2)UPS:在undo中每秒产生的数据块数量。 表闪回的语法格式如下: FLASHBACK TABLE schema.table_name TO BEFORE DROP RENAME TO table | SCN | TIMESTAMP expr ENABLE | DISABLE TRIGGERS (1) schema:方案名称。 (2) BEFORE DROP:表示恢复到删除之前。 (3) RENAME TO table:表示恢复时更换表名。 (4) SCN:SCN是系统改变号,可以从flashback_transaction_quer
10、y数据字典中查到。 (5) TIMESTAMP:表示系统邮戳,包含年月日以及时分秒。 (6) ENABLE TRIGGERS:表示触发器恢复之后的状态为ENABLE。默认为DISABLE状态。,9.1.3表闪回,【例9.2】首先创建一个表,然后删除某些数据,再利用Flashback Table命令恢复。 (1)使用ADMIN登录sql*plus并创建表XS_KC1。 SQLSET TIME ON 20:26:59 SQLCREATE TABLE XS_KC1 AS SELECT * FROM XS_KC; 20:27:34 SQLSELECT * FROM XS_KC1; 查询的部分数据如图9
11、.1所示。,图9.1表XS_KC1中的部分数据,9.1.3表闪回,(2)删除学号为061113的学生选修课程的记录并提交。 20:27:56 SQLDELETE FROM XS_KC1 WHERE XH=061113; 20:28:11 SQLCOMMIT; 使用SELECT语句查询表XS_KC1,学号为061113的学生选修课程的记录已不存 在。 (3)使用表闪回进行恢复。 20:28:13 SQLALTER TABLE XS_KC1 ENABLE ROW MOVEMENT; 20:28:59 SQLFLASHBACK TABLE XS_KC1 TO TIMESTAMP TO_TIMESTA
12、MP(2006-5-31 20:28:08, YYYY-MM-DD HH24:MI:SS); 上述例子中,我们采用TO_TIMESTAMP来指定恢复时间。我们还可以使用 SCN,但是在操作中,时间比较容易掌握,而误操作时的SCN并不容易得知。 Oracle使用TIMESTAMP_TO_SCN函数来实现将时间戳转换为SCN。 注意:在每个系统中,返回的SCN是不一样的。,9.1.4删除闪回,1.删除闪回操作 当用户对表进行DDL操作时,它是自动提交的。如果误删除了某个表, 在Oracle 10g版本之前只能使用日常的备份恢复数据了。现在,Oracle 10g提供的删除闪回为数据库实体提供一个安全
13、机制。 与Windows文件删除功能相似,当用户删除一个表时,Oracle系统会将 该表放到回收站中,直到用户决定永久删除它们,使用PURGE命令对回 收站空间进行清除;或是出现表空间的空间不足时它们才会被删除。 回收站是一个虚拟容器,用于存储所有被删除的对象。为了避免被删除 的表与同类对象名称重复,被删除表(或者其他对象)放到回收站时, Oracle系统对被删除表(或对象名)进行了转换。转换后的名称格式如下: BIN$globalUID$Sversion globalUID是一个全局唯一的标识对象,长度为24个字符。它是Oracle内 部使用的标识。 $Sversion是数据库分配的版本号。
14、,9.1.4删除闪回,数据字典USER_TABLES中的DROPPED列表示表是否被删除。使用SELECT语 句查询。如图9.2所示,DRROPPED字段值为“YES”的TABLE_NAME均为转换 后的名称。,图9.2 USER_TABLES获得的信息,9.1.4删除闪回,【例9.3】删除闪回的实现。 (1)使用DELETE命令删除表XS_KC1 SQLDELETE TABLE XS_KC1; (2)查询数据字典信息。 SQLSELECT OBJECT_NAME,ORIGINAL_NAME,TYPE,DROPTIME FROM RECYCLEBIN; OBJECT_NAME ORIGINAL
15、_NAME TYPE DROPTIME BIN$IjiFX9AtQ5SpWpmM0UM5XQ=$0 PK_XH INDEX 2006-05-12:13:02:58 BIN$zSYB+LfCTxSgq52R4siO9Q=$0 XS Table Partition 2006-05-12:13:02:58 BIN$3TBJPuzeQQ+1hW7wZncMuQ=$0 A TABLE 2006-05-12:14:08:38 BIN$rfkYjlyoRF6uK716UUwwBg=$0 XS2 TABLE 2006-05-12:20:59:27 BIN$BFGXZQMxRMmnIpJVT/mJ1w=$0 X
16、S_KC1 TABLE 2006-05-31:22:21:39 (3)使用删除回闪从回收站恢复表XS_KC1。 SQLFLASHBACK TABLE XS_KC1 TO BEFORE DROP; 如果不知道原表名,可以直接使用回收站中的名称进行闪回。,9.1.4删除闪回,2.回收站管理 回收站可以提供误操作后进行恢复的必要信息,但是如果不经常对回收站的信息 进行管理的话,磁盘空间会被长时间占用,因此要经常清除回收站中无用的东 西。要清除回收站,可以使用PURGE命令。PURGE命令可以删除回收站中的 表、表空间和索引,并释放表、表空间和索引所占用的空间。PURGE命令语法 格式如下: PURG
17、E TABLESPACE tablespace USER user | TABLE table | INDEX index | RECYCLEBIN | DBA_RECYCLEBIN (1) TABLE指示清除回收站中的表。 (2) INDEX指示清除回收站中的索引。 (3) TABLESPACE指示清除回收站中的表空间。 (4) RECYCLEBIN指的是当前用户需要清除的回收站。 (5) RECYCLEBIN仅SYSDBA系统权限才能使用,此参数可使用户从Oracle系统回收站清除所有对象。,9.1.4删除闪回,【例9.4】查询当前用户回收站中的内容,再用PURGE清除。 (1)查询回收站
18、内容。 SQLSELECT OBJECT_NAME,ORIGINAL_NAME FROM USER_RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME BIN$IjiFX9AtQ5SpWpmM0UM5XQ=$0 PK_XH BIN$zSYB+LfCTxSgq52R4siO9Q=$0 XS BIN$zSYB+LfCTxSgq52R4siO9Q=$0 XS BIN$zSYB+LfCTxSgq52R4siO9Q=$0 XS BIN$zSYB+LfCTxSgq52R4siO9Q=$0 XS BIN$3TBJPuzeQQ+1hW7wZncMuQ=$0A BIN$rfkYjlyoR
19、F6uK716UUwwBg=$0 XS2 (2)清除表XS2。 SQLPURGE TABLE XS2;,9.1.5数据库闪回,Oracle 10g数据库在执行DML操作时,将每个操作过程记录在日志文件中,若 Oracle系统出现错误操作时,可进行数据库级的闪回。 数据库闪回可以使数据库回到过去某一时间点上或SCN的状态,用户可以不利用 备份就能快速地实现时间点地恢复。为了能在发生误操作时闪回数据库到误操作 之前地时间点上,需要设置下面三个参数: (1) DB_RECOVERY_FILE_DEST:确定Flashback Logs地存放路径。 (2) DB_RECOVERY_FILE_DEST_
20、SIZE:指定恢复区地大小,默认值为空 (3) DB_FLASHBACK_RETENTION_TARGET:设定闪回数据库的保存时间, 单位是分钟,默认是一天。 当用户发布Flashback Database语句后,Oracle系统首先检查所需的归档文件和 联机重做日志,如果正常,则恢复数据库中所有数据文件到指定的SCN或时间点 上。,9.1.5数据库闪回,数据库闪回的语法如下: FLASHBACK STANDBY | DATABASE database TO SCN | TIMESTAMP expr | TO BEFORE SCN | TIMESTAMP expr (1)database:要
21、执行闪回的数据库名称。 (2)TO SCN:指定SCN。 (3)SCN expr:指定一个系统改变号SCN (4)BEFORE:恢复到之前的SCN。 (5)TIMESTAMP expr:指定一个有效的时间点。 (6)TO TIMESTAMP:需要恢复的时间点。 (7)BEFORE:恢复数据库到之前的时间点。 使用Flashback Database,必须以MOUNT启动数据库实例,然后执行alter database flashback on或者alter database tsname flashback on命令打开数据库 闪回功能。Alter database flashback off
22、命令是关闭数据库闪回功能。,9.1.5数据库闪回,【例9.5】设置闪回数据库环境。 (1)登录到SYSTEM。 连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options SQL SHOW PARAMETER DB_RECOVERY_FILE_DEST NAME TYPE VALUE db_recovery_file_dest string D:flash_recovery_area db_recov
23、ery_file_dest_size big integer 2G SQL SHOW PARAMETER FLASHBACK NAME TYPE VALUE db_flashback_retention_target integer 1440 (2)以SYSDBA登录,确认实例是在在归档模式。 SQL CONN / AS SYSDBA SQL SELECT DBID,NAME,LOG_MODE FROM V$DATABASE DBID NAME LOG_MODE 642184395 XSCJ ARCHIVELOG SQLSHUTDOWN IMMEDIATE 数据库已经关闭。 已经卸载数据库。
24、ORACLE 例程已经关闭。,9.1.5数据库闪回,(3)设置Flashback Database为启用。 SQLSTARTUP MOUNT ORACLE 例程已经启动。 Total System Global Area 171966464 bytes Fixed Size 787988 bytes Variable Size 145750508 bytes Database Buffers 25165824 bytes Redo Buffers 262144 bytes 数据库装载完毕。 SQLALTER DATABASE FLASHBACK ON; SQLALTER DATABASE OP
25、EN; 通过上述过程,对闪回数据库功能的设置,Oracle 10g的闪回数据库功 能就会自动搜集数据,用户只要确保数据库是归档模式即可。 设置好闪回数据库所需要的环境和参数,就可以在系统出现错误时用 Flashback Database命令恢复数据库到某个时间点或SCN上。,9.1.5数据库闪回,【例9.6】数据库闪回。 (1)查看当前数据库是否是归档模式和启用了闪回数据库功能。 SQL SELECT DBID,NAME,LOG_MODE FROM V$DATABASE SQL ARCHIVE LOG LIST 数据库日志模式 存档模式 自动存档 禁用 存档终点 USE_DB_RECOVERY
26、_FILE_DEST 最早的联机日志序列 210 当前日志序列 212 SQL SHOW PARAMETER DB_RECOVERY_FILE_DEST NAME TYPE VALUE db_recovery_file_dest string D:flash_recovery_area db_recovery_file_dest_size big integer 2G,9.1.5数据库闪回,(2)查询当前时间和旧的闪回号。 SQL SHOW USER; USER 为 SYS SQL SELECT SYSDATE FROM DUAL; SYSDATE 01-6月 -06 SQL ALTER SE
27、SSION SET NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS; 会话已更改。 SQL SELECT SYSDATE FROM DUAL; SYSDATE 2006-06-01 14:35:26 SQL SELECT OLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG; OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TIME 4068282 2006-06-01 13:45:26 SQLSET TIME ON,9.1.5数据库闪回,(3)在
28、当前用户下创建例表KC1 14:54:56 SQLCREATE TABLE KC1 AS SELECT * FROM ADMIN.KC; (4)确定时间点,模拟误操作,删除表KC1 14:56:23 SQLSET TIME ON 14:56:26 SQLSELECT SYSDATE FROM DUAL; SYSDATE 2006-06-01 15:06:16 15:06:45 SQLDROP TABLE KC1 15:07:03 SQLDESC KC1; ERROR: ORA-04043: 对象 KC1 不存在 (5)以MOUNT打开数据库并进行数据库闪回。 15:07:33 SQLSHUTD
29、OWN IMMEDIATE; 15:27:05 SQLSTARTUP MOUNT EXCLUSIVE; 15:27:53 SQLFLASHBACK DATABASE TO TIMESTAMP(TO_DATE(2006-06-01 15:06:16, YYYY-MM-DD HH24:MI:SS); 15:43:23 SQLALTER DATABASE OPEN RESETLOGS; 利用数据库闪回后,通过SELECT语句可以发现KC1恢复到错误操作之前,表结构和数据 都已经恢复。,9.2 Undo表空间,回滚段一直是Oracle数据库困扰数据库管理员的难题,因为它是动态参数,当用 户的事务量较小
30、时回滚段不会出现错误;而当事务量大时就会出现错误。在 Oracle 10g数据库中,Undo表空间取代了回滚段。当然在Oracle 10g数据库中回 滚段仍然可以使用,但是Oracle建议使用Undo表空间(Undo_Tablespace)机 制工作。,9.2.1自动Undo管理,在Oracle 10g中,允许创建多个Undo表空间,但是一时间只能激活一个Undo表 空间。使用参数文件中的Undo_TABLESPACE参数指定要激活的Undo表空间 名,Undo表空间的组织和管理由Oracle 10g系统内部机制自动完成。在自动 Undo管理设置完成后,在数据字典DBA_ROLLBACK_SE
31、GS中可以显示回滚段 信息,但是回滚段的管理由数据库实例自动进行。 在旧版本中,采用在RBS表空间创建大的回滚段的方法处理大的事务。但是由于 一个事务只可以使用一个回滚段,当一个回滚段动态扩展超过数据库文件允许的 扩展范围时,将产生回滚段不足的错误,系统就终止事务。使用自动Undo管理 后,一个事务可以使用多个回滚段。当一个回滚段不足时,Oracle系统会自动使 用其他回滚段,不终止事务的运行。在Oracle 10g中,DBA只是需要了解Undo 表空间是否有足够的空间,而不必为每一个事务设置回滚段。,9.2.2 Undo表空间的优点,Oracle数据库系统在处理事务时,将改变前的值一直保存在
32、回滚段中以便Oracle 系统可以跟踪之前的映象(Image)数据。只要事务没有提交,与事务有关的数 据一直保存在回滚段中;一旦事务提交,系统立即清除回滚段中的数据。在旧版 本中,对于大的事务处理所带来的回滚段分配失败一直没有完善的解决方法, Oracle 10g版本采用了Undo表空间,它有如下几个方面的优点: (1) 存储非提交或提交的事务改变块拷贝。 (2) 存储数据库改变的数据行拷贝(可能是块级)。 (3) 存储自从上次提交以来的事务的快照。 (4) 在内存中存放逻辑信息或文件中的非物理信息。 (5) 存储一个事务的前映象(Befor Image)。 (6) 系统撤销数据允许非提交事务
33、。,9.2.3 Undo表空间管理参数,Oracle 10g数据库系统中,默认启用自动Undo管理,同时支持传统的回滚段的 使用。使用自动Undo管理,需要设置下列参数: (1)Undo_MANAGEMENT:确定Undo表空间的管理方式,如果该参数设置为 “AUTO”,表示系统使用自动Undo管理;如果设置为“MANUAL”,表示使用手动 Undo管理,以回滚段方式启动数据库。 (2)Undo_TABLESPACE:表示使用自动Undo管理时,系统默认的Undo表空间 名,默认名为undotbs。 (3)Undo_RETENTION:决定Undo数据的维持时间,即用户事务结束后,Undo 的
34、时间保留时间,默认值为900秒。 以SYSDBA用户登录sql*plus,使用SHOW命令可以查询Undo参数的设置情况: SQLSHOW PARAMETER UNDO NAMETYPEVALUE Undo_managementstringAUTO Undo_retentioninteger900 Undo_tablespacestringundotbs1,9.2.4创建和管理Undo表空间,在Oracle 10g数据库安装结束后,系统已经创建了一个Undo表空间,回滚段的管理方式自 动设置为自动Undo管理。根据需要,可以创建第二个Undo表空间。可以使用Oracle企业 管理或者命令方式创
35、建Undo表空间。 (1)界面方式创建和管理Undo表空间 界面创建Undo表空间和创建一般的表空间方法一样,只是在如图9.3所示的“创建表空间”的 “一般信息”界面中,表空间类型选择“撤销”即可,其他设置请参考2.2.2中的例2.4。,图9.3创建Undo表空间,9.2.4创建和管理Undo表空间,(2)命令方式创建和管理Undo表空间 命令方式创建Undo表空间相对于界面方式要更灵活、方便。 创建Undo表空间 语法格式: CREATE UNDO TABLESPACE tablespace_name DATAFILE path/filename SIZE integer KM REUSE AUTOEXTEND OFF ON NEXT integer KM MAXSIZE UMLIMITEDinteger KM ONLINEOFFLINE LOGGINGNOLOGGING EXTENT MANAGEMENT LOCAL AUT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026内蒙古地质矿产集团有限公司竞争性比选财务管理部部长1人备考题库附参考答案详解(模拟题)
- 2026广东广州花都城投住宅建设有限公司第二次招聘项目用工人员4人备考题库含答案详解(夺分金卷)
- 2026中国能建中电工程中南院春季校园招聘8人备考题库含答案详解【达标题】
- 汉江实验室2026届校园招聘备考题库含答案详解(新)
- 2026浙江宁波东钱湖旅游度假区某国有企业招聘派遣制工作人员备考题库含完整答案详解【必刷】
- 2026辽宁丹东国有资本投资运营集团有限公司面向社会招聘备考题库(精练)附答案详解
- 2026广东茂名信宜市朱砂镇旺沙卫生院招聘编外人员1人备考题库及答案详解(真题汇编)
- 2026广东省第三荣军优抚医院招聘1人备考题库(重点)附答案详解
- 2026上半年北京事业单位统考市纪委市监委招聘5人备考题库带答案详解(典型题)
- 厂区岗亭施工方案
- 2026届江苏南通市通州区高三下学期模拟预测化学试题(含答案)
- 吉水县2026年面向社会公开招聘农村(社区)“多员合一岗”工作人员【146人】考试备考试题及答案解析
- 民盟支部内部管理制度
- 2026年公安局辅警招聘《综合理论知识》考试题库及答案
- 2025-2026学年冀美版(新教材)初中美术八年级下册(全册)教学设计(附目录P125)
- 吸痰护理操作中的并发症预防
- 1.6 有多少名观众 课件-2025-2026学年三年级下册数学北师大版
- 动物营养学各单元
- 2026年海底管道智能巡检报告及未来五至十年海洋工程报告
- RCEP培训商务部课件
- 儿童过敏免疫诊疗中心过敏免疫门诊规范化建设专家共识课件
评论
0/150
提交评论