oracle查询备份存储路径,Oracle 数据库备份与恢复(RMAN介绍一)

oracle查询备份存储路径,Oracle 数据库备份与恢复(RMAN介绍一)RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。RMAN可以由命令行接口或者OEM的BackupManagerGUI来控制4.1基本知识4.1.1RMAN的组件、概念1.RMAN主要包括以下组件:TargetDatabase:(目标数据库)就是需要RMAN对其进行备份与恢复的数据库,RMAN可以…

RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、 归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。

RMAN可以由命令行接口或者OEM的Backup Manager GUI来控制

4.1基本知识

4.1.1RMAN的组件、概念

1.RMAN主要包括以下组件:

Target Database: (目标数据库)

就是需要RMAN对其进行备份与恢复的数据库,RMAN可以备份数据文件,控制文

件,归档日志,spfile。(注意:RMAN不能用于备份联机日志、初始化参数文件和口令文件)

Server Session:    (服务器会话)

RMAN启动数据库上的Oracle服务器进程,将建立一个与目标数据库的会话。由目标数据库上的服务器进程进行备份、还原、恢复的实际操作。

服务器进程

RMAN的服务进程是一个后台进程,用于与RMAN工具与数据库之间的通信,也用于RMAN工具与磁盘/磁带等I/O设置之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程:

当连接到目标数据库

分配一个新的通道

Channel:    (通道)

一个通道是RMAN和目标数据库之间的一个连接,”allocate channel”命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的I/O类型。

通道控制命令可以用来:

?控制RMAN使用的O/S资源,影响并行度

?指定I/O带宽的限制值(设置limit read rate参数)

?定义备份片大小的限制(设置limit kbytes)

?指定当前打开文件的限制值(设置limit maxopenfiles)

recovery catalog: (恢复目录)

用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。RMAN利用恢 复目录记载的信息去判断如何执行需要的备份恢复操作。如果不采用恢复目录,备份信息可以存在于目标数据库的control file中。如果存放在目标数据库的control  file中,控件文件会不断增长,不能保存RMAN的Script。

CONTROL_FILE_RECORD_KEEP_TIME  (default=7):控件文件中RMAN信息保存的最短时间。

使用恢复目录的优势:可以存储脚本,记载较长时间的备份恢复操作。

RMAN Repository:    (RMAN恢复目录数据库)

存放recovery catalog(恢复目录)的数据库。建议为恢复目录数据库创建一个单独的数据库。

MML: (媒体管理库)

Media Management Layer (MML)是第三方工具或软件,用于管理对磁带的读写与文件的 跟踪管理。如果你想直接通过RMAN备份到磁带上,就必须配置媒体管理层,媒体管理层的工具如备份软件可以调用RMAN来进行备份与恢复。

2.概念述语

Backup Sets (备份集合)

备份集合的特性:包括一个或多个数据文件或归档日志,以oracle专有的格式保存,有 一个完全的所有的备份片集合构成,构成一个完全备份或增量备份。

Backup Pieces (备份片)

一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大 小是有限制的;如果没有大小的限制,备份集就只由一个备份片构成。备份片的大小不能 大于使用的文件系统所支持的文件长度的最大值。

Image Copies镜像备份

镜像备份是独立文件(数据文件、归档日志、控制文件)的备份。它很类似操作系统级 的文件备份。它不是备份集或备份片,也没有被压缩。

Full backup Sets全备份集合

全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被备份的,也就是说,oracle进行备份集合的压缩。

Incremental backup sets增量备份集合

增量备份是指备份一个或多个数据文件的自从上一次同一级别的或更低级别的备份以

来被修改过的数据块。与完全备份相同,增量备份也进行压缩。

File multiplexing

多个数据文件可以在一个备份集中。

Recovery catalog resyncing恢复目录同步

使用恢复管理器执行backup、copy、restore或者switch命令时,恢复目录自动进行更 新,但是有关日志与归档日志信息没有自动记入恢复目录。需要进行目录同步。使用resync catalog命令进行同步。

RMAN> resync catalog;

Incarnation对应物

在不完全恢复完成之后,通常需要使用resetlogs选项来打开数据库。resetlogs表示一个 数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始。数据库的逻辑生存期也被称为一个对应物(incarnation)。每次使用resetlogs选项来打开数据库后都会创建一个新的数据库 对应物。

4.1.2RMAN的使用:命令行接口与脚本

数据库状态:

RMAN恢复目录数据库:必须OPEN

目标数据库:根据不同情况,必须MOUNT或OPEN

1.使用不带恢复目录的RMAN

设置目标数据库的ORACLE_SID,执行:

$ rman nocatalog

RMAN> connect target

RMAN> connect target user/pwd>@db

2.使用带恢复目录的RMAN

$ rman catalogrman/rman

RMAN> connect target    //连接本地数据库作为目标数据库

RMAN> connect target user/pwd>@db //连接远程数据库

$ rman catalogrman/rman target user/pwd>@db

3.命令行接口

1、单个执行

RMAN> backup database;

2、运行一个命令块

RMAN> RUN {

2> copy datafile 10 to

3> ‘/oracle/prod/backup/prod_10.dbf’;

4> }

3、运行存储在恢复目录中的脚本:

RMAN> RUN    { EXECUTE SCRIPT backup_whole_db };

4、运行外部脚本:

$ rman catalog rman/rman target / @backup_db.rman

$ rman cmdfile=backup.rman msglog=backup.log

RMAN> @backup_db.rman

RMAN> RUN    { @backup_db.rman }

如果在cron中执行,注意在脚本中设置正确的环境变量,例:

#set env

export ORACLE_HOME=/opt/oracle/product/9.2

export ORACLE_SID=test

export NLS_LANG=”AMERICAN_AMERICA.zhs16gbk”

export PATH=$PATH:$ORACLE_HOME/bin rman cmdfile=backup_db.rman

4.使用脚本

创建或者取代脚本:

RMAN> create script alloc_disk {

2> # Allocates one disk

3> allocate channel dev1 type disk;

4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;

5> }

RMAN> replace script rel_disk {

2> # releases disk

3> release channel dev1;

5> }

删除脚本:

RMAN> DELETE SCRIPT Level0Backup;

查看脚本:

RMAN> PRINT SCRIPT Level0Backup;

运行脚本:

RMAN> RUN { EXECUTE SCRIPT backup_whole_db };

5.运行OS命令

RMAN支持通过执行host命令暂时退出RMAN的命令提示符而进入到操作系统的命令环境。

6.执行SQL语句

在RMAN的命令提示符后输入SQL命令,然后在一对单引号(双引号亦可)中输入要

执行的SQL语句,例如:

RMAN> SQL ‘ALTER SYSTEM CHECKPOINT’;

对于SELECT语句,无法得到结果。可以先执行host再用SQLPLUS。

4.2 RMAN的配置

4.2.1建立Recovery Catalog恢复目录

(1)在目录数据库中创建恢复目录所用表空间:

SQL> create tablespace rman_ts datafile ‘/xxx/rman_ts.dbf’ size 20M;

(2)在目录数据库中创建RMAN用户并授权:

SQL>  create  user  rman  identified  by  rman  default  tablespace  rman_ts  temporary tablespace temp quota unlimited on rman_ts;

SQL> grant connect, resource, recovery_catalog_ownerto rman;

(3)在目录数据库中创建恢复目录

$ rman catalog rman/rman

RMAN> create catalog tablespace rman_ts;

(4)登记目标数据库:

一个恢复目录可以注册多个目标数据库,注册目标数据库的命令为:

$ RMAN catalog rman/rman target user/pwd @rcdb; RMAN> register database;

4.2.2查看RMAN的默认设置SHOW命令

必须连接目标数据库

RMAN> show all

RMAN> show channel;                      //通道分配

RMAN> show device type;   // IO设备类型

RMAN> show retention policy;            //保存策略

RMAN> show datafile backup copies;     //多个备份的拷贝数目

RMAN> show maxsetsize; //备份集大小的最大值

RMAN> show exclude;    //不必备份的表空间

RMAN> show backup optimization;     //备份的优化

4.2.3配置RMAN的默认设置

1.配置备份集文件的格式(format)

RMAN> configure channel device type disk format’/u05/oracle/rmanback/%U’;

备份文件可以自定义各种各样的格式,如下

%c备份片的拷贝数

%d数据库名称

%D位于该月中的第几天(DD)

%M位于该年中的第几月(MM)

%F一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,

其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列

%n数据库名称,向右填补到最大八个字符

%u一个八个字符的名称代表备份集与创建时间

%p该备份集中的备份片号,从1开始到创建的文件数

%U一个唯一的文件名,代表%u_%p_%c

%s备份集的号

%t备份集时间戳

%T年月日格式(YYYYMMDD)

2.配置默认IO设备类型( device type )

IO设备类型可以是磁盘或者磁带,在默认的情况下是磁盘,可以通过如下的命令进行重新配置。

RMAN> configure default device t ype to disk; RMAN> configure default device t ype to sbt;

注意,如果换了一种IO设备,相应的配置也需要做修改,如

RMAN> configure device type sbt parallelism 2;

3.配置自动分配的通道( Chanel )

RMAN> configure channel device type disk format

‘/U01/ORACLE/BACKUP/%U

在运行块中,手工指定通道分配,这样的话,将取代默认的通道分配。

RMAN> Run {

allocate channel cq type disk format=’/u01/backup/%u.bak’;

}

通道的一些特性:

读的速率限制

Allocate channel……rate = integer最大备份片大小限制

Allocate channel……maxpiecesize = integer最大并发打开文件数(默认16)

Allocate channel……maxopenfile = integer

4.配置默认的保存策略( Retention Policy)

保存策略是管理备份与副本有效期或者是否有效的一种方法。恢复数据库的时候

Oracle不 考 虑 失效 的 备 份。我 们可以 定 义 两 种 保存 策 略: 恢复 窗口 备份 保存 策 略(recovery window  backup  retention policy)和冗余备份保存策略(redundancy backup retention policy)备份策略保持

分为两个保持策略: 一个是时间策略,决定至少有一个备份能恢复到指定的日期 一个冗余策略,规定至少有几个冗余的备份。

恢复窗口备份保存策略

这种保存策略类型的使用基于数据库可能恢复到的最早的日期。

例如,假设今天 是星期一,此前存在3个备份。第一个备份在昨天生成的,第二个备份是上星期四生成的,而最后一个备份是10天前备份的。假如恢复窗口是7天,那么昨天和上星期 四的备份是有效备份,而10天前的备份会成为废弃备份。

下面的命令将恢复窗口配置为7天:

RMAN> configure retention policy to recovery window of 7 days;

冗余备份保存策略

使用这种保存策略,RMAN会从最新备份开是保留N个数据备份,其余的废弃。

例如,如果有四个备份,而冗余数是3,那么最早的那个备份将被废弃。

下面的命令将 备份策略设置为3:

RMAN> configure retention policy to redundancy3;

设置NONE可以把使备份保持策略失效,Clear将恢复默认的保持策略

RMAN> configure retention policy to none;

例:

保 证 至 少有一 个 备份 能 恢复 到Sysdate-5的时 间点 上, 之 前 的备份将 标 记 为Obsolete

RMAN> configure retention policy to recovery window of 5 days;

至少需要有三个冗余的备份存在,如果多余三个备份以上的备份将标记为冗余

RMAN> configure retention policy to redundancy 5;

5.配置多个备份的拷贝数目( backup copies )

如果觉得单个备份集不放心,可以设置多个备份集的拷贝,如:RMAN> configure datafile backup copies for device type disk to 2; RMAN> configure archivelogbackup copies for device type disk to 2;

如果指定了多个拷贝,可以在通道配置或者备份配置中指定多个拷贝地点:

RMAN> configure channel device type disk format

‘/u01/backup/%U’, ‘/u02/backup/%U’;

RMAN> backup datafile n format ‘/u01/backup/%U’, ‘/u02/backup/%U’;

6.设置并行备份( ARALLELISM )

RMAN支持并行备份与恢复,也可以在配置中指定默认的并行程度。如:

RMAN> configure device type disk parallelism 4;

指定在以后的备份与恢复中,将采用并行度为4,同时开启4个通道进行备份与恢复,当然也可以在RUN的运行块中手工分配多个通道来决定备份与恢复的并行程度。 并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。

还可以在BACKUP命令中使用指定FILESPERSET或者指定(datafile  1,4,5  channel c1 tag=DF1)(datafile 2,3,6 channel c2 tag=DF2)

7.设置控制文件自动备份(autobackup on)

通过如下的命令,可以设置控制文件的自动备份

RMAN> configure controlfile autobackup on;

对于没有恢复目录的备份策略来说,这个特性是特别有效的,控制文件的自动备份

发生在任何backup或者copy命令之后,或者任何数据库的结构改变之后。

可以用如下的配置指定控制文件的备份路径与格式

RMAN> configure controlfile autobackup format for type disk to ‘%f’;

在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,如下配置:

RMAN> configure snapshot controlfile name to

‘/u01/app/oracle/product/9.0.2/dbs/snapcf_U02.f’;

8.设置备份优化选项( optimization )

可以在配置中设置备份的优化,如

RMAN> configure backup optimization on;

如果优化设置打开,将对备份的数据文件、归档日志或备份集运行一个优化算法。

4.2.4RMAN会话的设置

set命令与configure命令很相似,但是set命令设置不是永久的。set命令定义只应

用于当前RMAN会话的设置。

可以用于RUN代码之外的命令有:

set echo on | off//显示或关闭RMAN显示

set DBID dbidn//指定一个数据库的数据库标识符。

下面的set命令只能在RUN代码中使用:

set newname:

用于TSPITR或者数据库复制操作,指定新的数据库文件名,将数据库移动

到新的系统中并且文件名不同的时候可以用此命令。

set maxcorrupt for datafile:

用于定义RMAN操作失败之前允许的数据块讹误的数量

set archivelog destination:

可以修改存储归档的重做日志archive_log_dest_1的目的地。

set命令和until子句:

可以定义数据库时间点恢复操作所使用的具体的时间点、SCN或者日志序列

号,例:

set until time “to_date(‘2005/08/01 13:00:00′,’yyyy/mm/dd hh24:mi:ss’)”;

set backup copies:

使用该命令可以定义为备份集的每个备份片创建的镜像副本数。

例:

RMAN> RUN{

set maxcorrupt for datafile 3 to 10;

set backup copies = 2;

backup database;

}

4.3 Copy镜像拷贝与恢复

Copy镜像拷贝命令可以创建数据库数据文件、归档重做日志或者控制文件的精确副本。RMAN副本与这些文件的区别仅在于名称和(或)位置的区别。功能相当于用户管理的备 份恢复中的热备份。备份副本的好处是恢复比较快,恢复时可以不用拷贝,指定新位置即可。

Copy镜像拷贝至少要在mount状态下运行。

Copy镜像拷贝可作为增量备份的Level 0

Oracle10g开始,允许使用单条命令”backup as copy”进行数据库拷贝。

4.3.1备份

生成数据文件副本:

RMAN> copy datafile 3 to ‘d:\backup\datafilecopy\users01.dbf.bak’; RMAN> copy datafile ‘d:\oracle\oradata\ora9i\users01.dbf’ to

‘d:\backup\datafilecop y\users01.dbf.bak’;

生成控制文件副本:

RMAN> copy current controlfile to…;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP is ON;

备份 ARCHIVELOG副本:

//只能一个一个的来备份,而不能指定一个范围

RMAN> copy archivelog ‘d:\oracle\oradata\arc\ming_351.arc’ to

‘d:\oracle\orabackup\arc\ming_351.arc’;

并行设置:

1. RMAN> configure device type … parallelism = 3;

//only 2 channel, one for writting data to disk

2.手工分配多个通道

3.在命令中指定多个文件

RMAN> cop y datafile ‘xx’ to ‘xx2’, datafile ‘yy’ to ‘yy2’, …;

块检查:

CHECK LOGICAL选项MAXCORRUPT参数V$COPY_CORRUPTION

在复制操作中,Oracle服务器进程对每个块执行校验和计算以检测是否有块损坏。RMAN在 还 原 副 本时也 要 核 对 校验 和 。 该 过 程称 为 物 理 损 坏 检 测。 可 以使用NOCHECKSUM选项取消校验和操作,从而加快复制进程。如果数据库已在维护块校验和,则此选项无效。缺省情况下,禁用逻辑损坏的错误检查。

可以使用CHECK LOGICAL选项测试通过了物理损坏检查的数据和索引块,查看它们是否存在逻辑损坏,如行片或索引条目损坏。如果检测到任何块存在逻辑损坏,则 将该块记录到服务器进程的警报日志和跟踪文件中。

可以使用MAXCORRUPT参数设置逻辑和物理损坏的阈值。只要在某个文件中检测到的逻辑和物理损坏总和低于该值,则RMAN命令完成,同时Oracle将损坏块的 范围植入到V$COPY_CORRUPTION视图。如果超出MAXCORRUPT,则该命令终止,并且不植入视图。当并行度比较高时,占用的计算机资源较多,但备份操作完成 速度较快。缺省情况下将启用对物理损坏的错误检查。有关在备份过程中遇到的损坏数据文件块的信息将记录在控制文件和警报日志中。

4.3.2恢复

查看所有的Copy镜像拷贝:

RMAN> list copy;

数据文件副本还原:

还原时可以offline数据文件所属表空间,然后利用OS拷贝命令恢复副本。

还可以用restore  (datafile  num)  from  datafilecop y命令来从数据文件副本中还原数 据文件,然后再用recover命令来恢复。例如:

RMAN> sql “alter database datafile 5 offline”; RMAN> restore (datafile 5) from datafilecop y; RMAN> recover datafile 5;

RMAN> sql “alter database   datafile 5 online”;

注意,上面的圆括号很重要,如果没有,restore命令就会执行失败。

4.4 Backup备份与恢复

Backup备份命令生成Backup sets (备份集合),以oracle专有的格式保存,由一个完全

的所有的备份片集合构成,构成一个完全备份或增量备份。

4.4.1BACKUP备份命令选项

设置标记(TAG)

RMAN> backup database tag=’test backup’;

限制备份集大小

RMAN> backup database maxsetsize=100M;

只备份新增部分

RMAN> backup incremental level 0 database;

备份控制文件同时备份SPFILE

RMAN> backup current controlfile;

RMAN> configure controlfile autobackup on;    //默认是off

也可以在备份数据库或者文件的时候加上include current controlfile选项。例如:

RMAN> backup database include current controlfile;

备份时如果包含了SYSTEM表空间,将自动备份控件文件和SPFILE RMAN> backup file 1;

使用自动备份进行恢复:

RMAN> restore spfile/controlfile to ‘/xx/xx’ from autobackup;

备份归档日志(9i)

RMAN> backup archivelog all;

RMAN> backup … plus archivelog; //在备份其他时同时备份归档日志

plus archivelog隐含如下步骤:

?运行一个ALTER SYSTEM ARCHIVELOG CURRENT命令

?运行BACKUP  ARCHIVELOG  ALL命令。注意如果备份优化被启用,

RMAN只会备份未备份过的日志

?备份BACKUP命令中定义的文件

?运行ALTER SYSTEM ARCHIVE LOG CURRENT命令

?备份所有的剩下的归档日志

备份完后删除归档日志

RMAN> backup … ARCHIVELOG all delete all input;

修改备份集的保存策略

例如:将备份设置为永久有效

RMAN> backup database keep forever logs|nologs;

设置为有效期180天

RMAN> backup database keep until time=’sysdate+180′;

重写configure exclude / noexclude

通过configure  exclude可以配置RMAN不备份上次备份以来没有发生变化的数据文

件。如果要确保RMAN备份这些数据文件,可以在backup命令中添加noexclude选项。 例如:

RMAN> backup database noexclude;

跳过脱机的、不可存取的或者只读的数据文件

RMAN> backup database skip offline skipinaccessible skipreadonly;

强制备份只读的数据文件

RMAN> backup database force;

备份指定周期内没有备份的数据文件

RMAN> backup database not backed up;

RMAN> backup database not backed up since time=’sysdate-2′;

在备份操作期间检查逻辑讹误

RMAN> backup check logical database;    //在检查逻辑错误的同时进行备份

RMAN> backup validate check logical database;    //只检查

建立压缩备份集

RMAN> backup as compressed backupset tablespace users

FORMAT=’D:\BACKUP\%d_%s.dbf’;

4.4.2RESTORE/RECOVER恢复命令选项

数据库恢复

RMAN> restore/revover database ;

表空间恢复

RMAN> restore/revover tablespace xx ;

只读表空间的恢复

默认情况下,即使丢失了只读的数据文件,RMAN也不会在执行完全数据库还原 操作时 候还原只读的数据文件。要在完全恢复期间还 原只读的 数据文件,就必须在RESTORE命令中使用CHECK READONLY参数:

RMAN> RESTORE DATABASE CHECK READONLY;

恢复SPFILE/控制文件

使用自动备份恢复SPFILE/控制文件

RMAN> startup nomount; RMAN> set dbid=153910023

RMAN> restore controlfile from autobackup

RMAN> restore spfile/controlfile to ‘/xx/xx’ from autobackup ;

RMAN> restore controlfile from’/arch/ct_c-2347671489-20060630-00′;

联机状态:目标数据库MOUNT或OPEN

RMAN> restore controlfile to ‘d:\temp\control01.ctl’;

归档重做日志的还原

RMAN> RESTORE ARCHIVELOG ALL;

RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1 UNTIL LOGSEQ=20; RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1;

也可以用SET命令来指定归档日志的还原位置,例如:

RMAN> run

{

set archivelog destination to “d:\temp”;

restore archivelog all;

}

数据文件副本还原

RMAN> sql “alter datafile 5 offline”;

RMAN> restore (datafile 5) from datafilecop y; RMAN> recover datafile 5;

RMAN> sql “alter datafile 5 online”;

请注意,上面的圆括号很重要

还原检查与恢复测试

与备份检查一样,还原操作也可以检查是否能正常restore或者是否该备份集

是否有效。如::

RMAN> RESTORE DATABASE VALIDATE;

RMAN>VALIDATEBACKUPSET 218;

RMAN> RESTORE DATABASE VALIDATE CHECK LOGICAL ;

从指定的tag恢复:

RMAN> RESTORE FROM tag=’xxxx’;

不完全恢复的还原:

1.set until time/SCN/

2.RMAN> restore database until scn 1000;

RMAN>restore database “to_date(‘2005/08/01 13:00:00′,’yyyy/mm/dd hh24:mi:ss’)”; RMAN> restore database until sequence 100 thread 1;

块级别的恢复

块恢复Block Media Recovery (BMR),块是恢复的最小单元,通过块可以减少恢复时间,而且数据文件可以在线。恢复块的时候,必须指定具体的块号,如:

RMAN> blockrecoverdatafile 6 block 3;

具体请见4.7.4块媒体恢复Block Media Recovery (BMR)

待续。。。。。。

今天的文章oracle查询备份存储路径,Oracle 数据库备份与恢复(RMAN介绍一)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25043.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注