ITPub博客

首页 > 数据库 > Oracle > ORACLE DUPLICATE创建物理standby数据库

ORACLE DUPLICATE创建物理standby数据库

Oracle 作者:dawn009 时间:2014-04-04 18:42:30 0 删除 编辑

一、创建物理standby数据库
1.利用duplicate命令创建物理standby数据库的Oracle官方的三点说法:
a.duplicate命令创建物理standby数据库,是通过Primary数据库的备份进行,因此不会对primary有影响
b.duplicate命令支持以OMF方式管理文件以及路径结构
c.duplicate命令支持在恢复过程中自动执行recover,尽可能保持standby数据库与Primary数据库的一致状态。
2.配置Data Guard环境需要进行的准备工作,这块包括:primary数据库打开归档模式、设置为force logging、配置相关初始化参数等等。
a.拥有至少一份有效地RMAN整库备份。
b.创建辅助实例并启动至NOMOUNT状态。
c.配置网络服务名、监听服务等。
3.创建步骤:Data Guard配置非常灵活,sstandby数据库可以与primary在相同的服务器或不同的服务器上,并且两端的文件路径可以相同,也可以不同。
a.相同目录结构的创建:说明standby数据库与primary数据库肯定不在同一台服务器上,不需要各种方式转换文件路径,次情况下用duplicate创建物理standby极为简单。
#连接primary数据库和辅助实例,如果使用了catalog模式,那么还要链接到catalog数据库
#分配通道
#创建standby控制文件
(1)RMAN>backup current controlfile for standby;
(2)RMAN>copy controlfile for standby to 'f:\oracle\product\oradata\orclstdby01.ctl';
#执行DUPLICATE命令创建standby数据库:
RMAN>duplicate target database for standby nofilenamecheck dorecover;
必须指定NOFILENAMECHECK参数,避免覆盖primary数据库的当前的数据文件。
DORECOVER并不是必选的,如果不指定,则duplicate仅修复数据文件到目标服务器,不过并不会Recover数据文件,最后将standby数据库打开到MOUNT状态,此时新创建的物理standby有可能与primary相差较远(因为备份后所有的redologs均未在standby数据库上应用过),指定DORECOVER参数后,DUPLICATE在修复数据文件到目标路径下后,就会自动对这些文件执行RECOVER。
b.不同目录结构的创建
#连接primary数据库和辅助实例,如果使用了catalog模式,那么还要链接到catalog数据库
#分配通道
#创建standby控制文件
#为数据文件、日志文件指定新路径
#执行DUPLICATE命令创建standby数据库
要对数据文件和日志文件的路径重新定义方法很多
(1)DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT
(2)SET NEWNAME命令重定义数据文件 RUN{ SET NEWNAME FOR DATAFILE 1 TO 'F:\oracle\product\10.2.0\oradata\orcl\SYSTEM01.DBF';
duplicate target database for standby dorecover;}
(3)CONFIGURE AUXNAME命令重定义数据文件
CONFIGURE AUXNAME FOR DATAFILE 1 TO 'F:\oracle\product\10.2.0\oradata\orcl\AUX_1.F';
DUPLICATE TARGET DATABASE FOR STANDBY;
务必注意:CONFIGURE AUXNAME命令执行后是一直生效的,因此应当在DUPLICATE命令执行完之后,清楚CONFIGURE AUXNAME,这样就不会对未来的操作造成影响。
CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
4.duplicate命令操作步骤:默认情况下,执行duplicate命令后,RMAN会按照下面的步骤操作:
a.恢复standby控制文件到standby服务器
b.恢复primary数据库备份集中的相应的数据文件到standby服务器
c.将standby数据库打开到MOUNT状态,不过不会自动打开REDO应用,命令执行完毕。
NOTE:在默认情况duplicate命令并不会应用归档文件对创建的standby数据库数据文件进行恢复,除非执行duplicate时指定了DORECOVER参数,那么默认duplicate会应用
所有可应用的redologs,如果希望指定恢复的时间点,可以通过SET UNTIL SCN/TIME的方式执行不完全恢复,不过注意SET UNTIL和duplicate命令必须在同一个RUN块中。
5.duplicate命令创建物理standby
primary数据库:ORCL;IP:192.168.29.38; windows xp sp3
通过ORCL创建Standby数据库,设置standby数据库DB_UNIQUE_NAME为ORCLMAN,并重指定standby数据库的文件路径。
a.配置standby辅助实例的初始化参数文件
#创建相关的目录:
F:\oracle\product\10.2.0\admin\orclman>mkdir adump bdump cdump pfile udump
F:\oracle\product\10.2.0\admin\orclman>cd F:\oracle\product\10.2.0\oradata
F:\oracle\product\10.2.0\oradata>mkdir orclman
F:\oracle\product\10.2.0\oradata>cd orclman
F:\oracle\product\10.2.0\oradata\orclman>
F:\oracle\product\10.2.0\oradata\orclman>mkdir archivelog
#创建初始化参数文件init.ora
orcl.__db_cache_size=20971520
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=251658240
orcl.__streams_pool_size=0
*._allow_resetlogs_corruption=FALSE
*.audit_file_dest='F:\oracle\product\10.2.0\admin\orclman\adump'
*.audit_sys_operations=TRUE
*.audit_trail='DB_EXTENDED'
*.background_dump_dest='F:\oracle\product\10.2.0\admin\orclman\bdump'
*.compatible='10.2.0.3.0'
*.control_files='F:\oracle\product\10.2.0\oradata\orclman\stdctl01.ctl','F:\oracle\product\10.2.0\oradata\orclman\stdctl02.ctl','F:\oracle\product\10.2.0\oradata\orclman\stdctl03.ctl'
*.core_dump_dest='F:\oracle\product\10.2.0\admin\orclman\cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.DB_FILE_NAME_CONVERT='F:\oracle\product\10.2.0\oradata\orcl','F:\oracle\product\10.2.0\oradata\orclman'
*.db_name='orcl'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='orclman'
*.job_queue_processes=10
*.log_archive_config='DG_CONFIG=(orcl,orclman)'
*.log_archive_dest_1='location=F:\oracle\product\10.2.0\oradata\orclman\archivelog\ valid_for=(all_logfiles,all_roles) db_unique_name=orclman'
*.log_archive_dest_state_1='ENABLE'
*.LOG_ARCHIVE_FORMAT='log%t_%s_%r.arc'
*.LOG_FILE_NAME_CONVERT='F:\oracle\product\10.2.0\oradata\orcl','F:\oracle\product\10.2.0\oradata\orclman'
*.open_cursors=300
*.open_links=10
*.pga_aggregate_target=95420416
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=170
*.sga_target=287309824
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='F:\oracle\product\10.2.0\admin\orclman\udump'
保存为在init.ora,存放在pfile目录下。
由于次standby数据库不准备执行角色切换,因此没有配置FAL_*及其他归档目录等相关参数。
b.创建实例orclman
C:\>oradim -new -sid orclman -startmode manual
Instance created.
c.从pfile创建spfile
C:\>set oracle_sid=orclman
C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Sun Aug 12 16:12:05 2012

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to an idle instance.
SQL> show user;
USER is "SYS"
SQL> create spfile from pfile='F:\oracle\product\10.2.0\admin\orclman\pfile\init.ora';

File created.

SQL> startup nomount;
ORACLE instance started.

Total System Global Area  289406976 bytes
Fixed Size                  1290184 bytes
Variable Size              96469048 bytes
Database Buffers          184549376 bytes
Redo Buffers                7098368 bytes
SQL>
d.创建辅助实例密钥文件
F:\>orapwd file=F:\oracle\product\10.2.0\db_1\database\PWDorclman.ora password=l
yn entries=30
e.配置standby服务器的监听服务
在listener.ora文件中添加如下内容:
(SID_DESC =
     (GLOBAL_DBNAME = orclman)
     (ORACLE_HOME = F:\oracle\product\10.2.0\db_1)
     (SID_NAME = orclman)
)
f.在primary数据库端配置网络服务名
修改tnsnames.ora文件,添加如下内容:
ORCLMAN =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.29.38)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = ORCLMAN)
    )
)
g.在primary数据库检查状态
SQL> show parameter instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------
instance_name                        string      orcl
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            C:\DataGuard\Demo\orcl\archivelog
Oldest online log sequence     271
Next log sequence to archive   273
Current log sequence           273
SQL> select force_logging from v$DATABASE;
FOR
---
YES
h.primary数据库端检查备份并复制到目标服务器相同目录下
首先在primary端检查是否拥有合适的备份集
C:\>rman target sys/lyn@orcl catalog rman/rman@catalog

Recovery Manager: Release 10.2.0.3.0 - Production on Sun Aug 12 16:38:53 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1304585157)
connected to recovery catalog database
RMAN> list backup;
............................many backupsets............
如果没有standby控制文件,可以通过RMAN来创建
RMAN> backup current controlfile for standby;

Starting backup at 12-AUG-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=127 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including standby control file in backupset
channel ORA_DISK_1: starting piece 1 at 12-AUG-12
channel ORA_DISK_1: finished piece 1 at 12-AUG-12
piece handle=F:\BACKUP_4JNIFK61_1_1 tag=TAG20120812T164137 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 12-AUG-12

Starting Control File and SPFILE Autobackup at 12-AUG-12
piece handle=F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2012_0
8_12\O1_MF_S_791138502_82GV27VC_.BKP comment=NONE
Finished Control File and SPFILE Autobackup at 12-AUG-12
i.执行创建操作
RMAN连接目标数据库和辅助实例,连接standby的时候前面要制定AUXILIARY;
C:\>set oracle_sid=orcl

C:\>rman target / auxiliary sys/lyn@orclman

Recovery Manager: Release 10.2.0.3.0 - Production on Sun Aug 12 17:11:55 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1304585157)
connected to auxiliary database: ORCL (not mounted)

RMAN> duplicate target database for standby;

Starting Duplicate Db at 12-AUG-12
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=156 devtype=DISK

contents of Memory Script:
{
   restore clone standby controlfile;
   sql clone 'alter database mount standby database';
}
executing Memory Script

Starting restore at 12-AUG-12
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece F:\BACKUP_4JNIFK61_1_1
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=F:\BACKUP_4JNIFK61_1_1 tag=TAG20120812T164137
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:04
output filename=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\STDCTL01.CTL
output filename=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\STDCTL02.CTL
output filename=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\STDCTL03.CTL
Finished restore at 12-AUG-12

sql statement: alter database mount standby database
released channel: ORA_AUX_DISK_1

contents of Memory Script:
{
   set newname for tempfile  2 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\TEMP01.DBF";
   switch clone tempfile all;
   set newname for datafile  1 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\SYSTEM01.DBF";
   set newname for datafile  2 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\UNDOTBS2.DBF";
   set newname for datafile  3 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\SYSAUX01.DBF";
   set newname for datafile  4 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\USERS01.DBF";
   set newname for datafile  5 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\EXAMPLE01.DBF";
   set newname for datafile  6 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORADATA1.DBF";
   set newname for datafile  7 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORADATA2.DBF";
   set newname for datafile  8 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\SYSTEM02.DBF";
   set newname for datafile  9 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\MYIDX01.DBF";
   set newname for datafile  10 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\UNDOTBS02.DBF";
   set newname for datafile  11 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ASM_LMT.DBF";
   set newname for datafile  12 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\PERFSTAT.DBF";
   set newname for datafile  13 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORADATA3.DBF";
   set newname for datafile  14 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\STREAMS_TBS.DBF";
   set newname for datafile  15 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORCL\DATAFILE\O1_MF_USER123_81MTG1GN_.DBF";
   set newname for datafile  16 to
 "F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\GGTBS.DBF";
   restore
   check readonly
   clone database
   ;
}
executing Memory Script

executing command: SET NEWNAME

renamed temporary file 2 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\TEMP01.DBF
in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 12-AUG-12
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=155 devtype=DISK

channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\SYSTEM01.DBF
restoring datafile 00002 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\UNDOTBS2.DBF
restoring datafile 00003 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\SYSAUX01.DBF
restoring datafile 00004 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\USERS01.DBF

restoring datafile 00005 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\EXAMPLE01.DBF
restoring datafile 00006 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORADATA1.DBF
restoring datafile 00007 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORADATA2.DBF
restoring datafile 00008 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\SYSTEM02.DBF
restoring datafile 00009 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\MYIDX01.DBF

restoring datafile 00010 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\UNDOTBS02.DBF
restoring datafile 00011 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ASM_LMT.DBF

restoring datafile 00012 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\PERFSTAT.DBF
restoring datafile 00013 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORADATA3.DBF
restoring datafile 00014 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\STREAMS_TBS.DBF
restoring datafile 00015 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\ORCL\DATAFI
LE\O1_MF_USER123_81MTG1GN_.DBF
restoring datafile 00016 to F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLMAN\GGTBS.DBF
channel ORA_AUX_DISK_1: reading from backup piece F:\BACKUP_4MNIFKR1_1_1
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=F:\BACKUP_4MNIFKR1_1_1 tag=TAG20120812T165249
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:08:51
Finished restore at 12-AUG-12

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy recid=45 stamp=791140890 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\SYSTEM01.DBF
datafile 2 switched to datafile copy
input datafile copy recid=46 stamp=791140891 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\UNDOTBS2.DBF
datafile 3 switched to datafile copy
input datafile copy recid=47 stamp=791140892 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\SYSAUX01.DBF
datafile 4 switched to datafile copy
input datafile copy recid=48 stamp=791140892 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\USERS01.DBF
datafile 5 switched to datafile copy
input datafile copy recid=49 stamp=791140892 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\EXAMPLE01.DBF
datafile 6 switched to datafile copy
input datafile copy recid=50 stamp=791140892 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\ORADATA1.DBF
datafile 7 switched to datafile copy
input datafile copy recid=51 stamp=791140893 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\ORADATA2.DBF
datafile 8 switched to datafile copy
input datafile copy recid=52 stamp=791140893 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\SYSTEM02.DBF
datafile 9 switched to datafile copy
input datafile copy recid=53 stamp=791140893 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\MYIDX01.DBF
datafile 10 switched to datafile copy
input datafile copy recid=54 stamp=791140893 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\UNDOTBS02.DBF
datafile 11 switched to datafile copy
input datafile copy recid=55 stamp=791140894 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\ASM_LMT.DBF
datafile 12 switched to datafile copy
input datafile copy recid=56 stamp=791140894 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\PERFSTAT.DBF
datafile 13 switched to datafile copy
input datafile copy recid=57 stamp=791140894 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\ORADATA3.DBF
datafile 14 switched to datafile copy
input datafile copy recid=58 stamp=791140894 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\STREAMS_TBS.DBF
datafile 15 switched to datafile copy
input datafile copy recid=59 stamp=791140894 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\ORCL\DATAFILE\O1_MF_USER123_81MTG1GN_.DBF
datafile 16 switched to datafile copy
input datafile copy recid=60 stamp=791140895 filename=F:\ORACLE\PRODUCT\10.2.0\O
RADATA\ORCLMAN\GGTBS.DBF
Finished Duplicate Db at 12-AUG-12
至此,DUPLICATE命令执行完毕!
6.完善的工作
   在创建standby数据库的过程中,虽然属于duplicate命令已经全部完成,不过data guard环境配置不仅仅只有创建standby数据库,一个Data Guard环境至少包括一主一备,而且主备之间有互动才算是完整的Data Guard环境。
(1)修改primary数据库的相关参数,主要设置LOG_ARCHIVE_*参数实现发送归档到standby端。
ORCL> alter system set log_archive_config='dg_config=(orcl,orclman)';
ORCL> alter system set log_archive_dest_2='SERVICE=orclman lgwr async valid_for=(
online_logfiles,primary_role) db_unique_name=orclman';
(2)启动standby数据库到MOUNT状态,并开启REDO应用
ORCLMAN>alter database recover managed standby database disconnect from session;
Database altered.
(3)在Primary上切换日志,验证同步效果
ORCL>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
           274
ORCL>alter system switch logfile;

System altered.

ORCL>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
           275
(4)在standby端查看是否接受到primary端传来的归档日志
ORCLMAN>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
           275
Data Guard配置成功!O(∩_∩)O哈哈~!通过RMAN的DUPLICATE命令创建物理standby,实际步骤要简单一些,
基本上只需要记住DUPLICATE命令的语法就好,其他工作RMAN都帮你做好了。DUPLICATE创建物理standby简单吧!其实按照官方文档create physical standby database也不是很复杂。
---------------------------------------------------------->>
转载于:http://blog.sina.com.cn/s/blog_a32eff28010120je.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29119536/viewspace-1136284/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-15

  • 博文量
    595
  • 访问量
    4849995