一、oracle11g DG 搭建
搭建方法(一)
主机 备机
Version 11.2.0.4 11.2.0.4
IP 192.168.91.131 192.168.91.132
安装情况 已安装好数据库 只安装数据库软件
1、关防火墙(用root用户再主备节点都执行)
临时关闭
$ service iptables stop
永久关闭
$ chkconfig iptables off
2、关闭Selinux(用root用户再主备节点都执行)
$ sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
及时生效
$ setenforce 0
3、主机名能互访(用root用户再主备节点都执行)
$ vi /etc/hosts
192.168.91.131 primarydb
192.168.91.132 standbydb
4、主备库建创建必要的目录(用oracle用户再主备节点都执行)
$ mkdir -p /u01/app/archivelog
$ mkdir -p /u01/app/oracle/admin/burton/adump
$ mkdir -p /u01/app/oracle/fast_recovery_area/burton
$ mkdir -p /u01/app/oracle/oradata/burton
$ mkdir -p /u01/app/backup
$ chmod -R 755 /u01/app
5、主机设置参数文件
SQL> alter database force logging;
SQL> alter system set log_archive_format='burton_%t_%s_%r.arc' scope=spfile;
SQL> alter system set fal_client='burton';
SQL> alter system set fal_server='standby';
SQL> alter system set standby_file_management='AUTO';
SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton' scope=spfile;
SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton' scope=spfile;
SQL> alter system set log_archive_config='DG_CONFIG=(burton,standby)';
SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=burton';
SQL> alter system set log_archive_dest_state_1='enable';
SQL> alter system set log_archive_dest_2='SERVICE=standby lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby';
SQL> alter system set log_archive_dest_state_2='enable';
SQL> alter system set db_unique_name='burton';
SQL> alter database flashback on;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> create pfile='/tmp/pfile.ora' from spfile;
SQL> exit
6、主机上pfile文件复制到备库
6.1 主库把pfile复制到备库
$ scp -r /tmp/pfile.ora oracle@192.168.91.132:/tmp
6.2 备库查看pfile文件
$ ll /tmp/pfile.ora
7、修改备库的pfile
$ vi /tmp/pfile.ora
burton.__db_cache_size=289406976
burton.__java_pool_size=4194304
burton.__large_pool_size=71303168
burton.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
burton.__pga_aggregate_target=335544320
burton.__sga_target=503316480
burton.__shared_io_pool_size=0
burton.__shared_pool_size=130023424
burton.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/burton/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/burton/control01.ctl','/u01/app/oracle/fast_recovery_area/burton/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton'
*.db_name='burton'
*.db_unique_name='standby'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=burtonXDB)'
*.fal_client='standby'
*.fal_server='burton'
*.log_archive_config='DG_CONFIG=(burton,standby)'
*.log_archive_dest_1='LOCATION=/u01/app/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
*.log_archive_dest_2='SERVICE=burton lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=burton'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_format='burton_%t_%s_%r.arc'
*.log_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton'
*.memory_target=836763648
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
注:
(a)db_name:数据库名字,需要保持同一个Data Guard中所有数据库db_name相同(静态参数,8个字符限制,大小写不敏感)。
(b)db_unique_name:用来区分数据库的唯一名。
(c)db_file_name_convert:主库和备库的数据文件路径转换。如果有多个,逐一指明对映关系(静态参数,成对出现)。
(d)log_file_name_convert:主库和备库的online redo log文件路径转换。如果有多个,逐一指明对映关系(静态参数,成对出现)。
(e)log_archive_format:指定归档文件格式,这里在主备端应保持一样的格式(静态参数)。
(f)log_archive_config:该参数通过DG_CONFIG设置同一个Data Guard中所有db_unique_name,以逗号分隔(动态参数)。
(g)log_archive_dest_n与log_archive_dest_state_n:设置归档路径。location即本地路径;service即tnsnames.ora中配置的远端服务,
指向standby,此时的归档路径即为standby的归档路径。(动态参数)。
(h)fal_server和fal_client:FAL即Fetch Archive Log,其值为Oracle Net service name,即 tnsnames.ora中的服务名。设置这两个参数
可以用来解决Archive Gaps。一旦产生了gap,fal_client会自动向fal_server请求传输gap的archivelog。设置了这2个参数,就不需要在
产生gap时手动向standby注册归档日志了。所需要做的就是确认主库有这些归档日志,并且主库的控制文件中有这些日志的注册信息。
fal_client设置为数据库自身的service name,fal_server设置为远端数据库的service name。
(i)standby_file_management:如果primary 数据库数据文件发生修改(如新建,重命名等)则按照本参数的设置在standby中做相应修改。
设为AUTO 表示自动管理。设为MANUAL表示需要手工管理。
(j)dispatchers="(PROTOCOL=TCP)(SERVICE=XDB)"。
8、备库用参数文件启动到nomount,并创建spfile
$ sqlplus / as sysdba
SQL> startup nomount pfile='/tmp/pfile.ora';
SQL> create spfile from pfile='/tmp/pfile.ora';
SQL> shutdown abort
SQL> startup nomount
9、主库复制密码文件到备库
$ cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs
$ scp -r ./orapwburton oracle@192.168.91.132:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwburton
备库查看
$ ll /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwburton
10、修改主库和备库的监听
10.1 修改主备库tnsnames.ora(tnsnames.ora主备库一样)
$ cd $ORACLE_HOME/network/admin/
$ vi tnsnames.ora
BURTON =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.91.131)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = burton)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.91.132)(PORT = 1521))
)
(CONNECT_DATA =
(SID = burton)
)
)
10.2 新增备库listener.ora
$ vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = standby)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = burton)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = standbydb)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
注:listener.ora中的GLOBAL_DBNAME向外提供服务名,listener.ora中的SID_NAME提供注册的实例名
10.3 重启主备监听
$ lsnrctl stop
$ lsnrctl start
$ lsnrctl status
11、测试联通性
主->备
$ sqlplus sys/oracle4U@standby as sysdba
备->主
$ sqlplus sys/oracle4U@burton as sysdba
12、在主机上添加standby日志文件
12.1 查看原日志组文件
SQL> set lines 200
SQL> col member for a50
SQL> select group#,type,member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------
3 ONLINE /u01/app/oracle/oradata/burton/redo03.log
2 ONLINE /u01/app/oracle/oradata/burton/redo02.log
1 ONLINE /u01/app/oracle/oradata/burton/redo01.log
SQL> select group#,sequence#,BYTES/1024/1024 sizeM,members from v$log;
GROUP# SEQUENCE# SIZEM MEMBERS
---------- ---------- ---------- ----------
1 7 50 1
2 8 50 1
3 9 50 1
12.2 增加standy日志组文件(原组数+1)
SQL> alter database add standby logfile thread 1 group 4 ('/u01/app/oracle/oradata/burton/redo_dg04.log') size 50M;
Database altered.
SQL> alter database add standby logfile thread 1 group 5 ('/u01/app/oracle/oradata/burton/redo_dg05.log') size 50M;
Database altered.
SQL> alter database add standby logfile thread 1 group 6 ('/u01/app/oracle/oradata/burton/redo_dg06.log') size 50M;
Database altered.
SQL> alter database add standby logfile thread 1 group 7 ('/u01/app/oracle/oradata/burton/redo_dg07.log') size 50M;
Database altered.
13、复制数据库
主库:
$ rman target sys/oracle4U auxiliary sys/oracle4U@standby nocatalog
RMAN> duplicate target database for standby from active database nofilenamecheck;
注:此操作主要执行Memory Script,复制密码文件,控制文件,数据文件,在线日志文件和归档日志文件。在此期间,
脚本执行了alter database mount standby database,是备库启动到mount状态。
14、启动备库
14.1 正常启动流程
原nomount状态,但在duplicate时,已启动到mount状态。
SQL> alter database open read only;
Database altered.
SQL> alter database flashback on;
Database altered.
SQL> recover managed standby database disconnect from session;
Media recovery complete.
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
14.2 可以延迟应用日志(一般略过)
方法1: 在备库应用主库日志的语句中指定delay属性
备库延迟120分钟应用主库日志
SQL> alter database recover managed standby database delay 120 disconnect from session;
方法2: log_ archive_dest_n参数中指定了delay属性
SQL> alter system set log_archive_dest_3='service=standby2 lgwr async delay=5 valid_for=(all_logfiles,all_roles) db_unique_name=standby2';
注:delay属性并不是说延迟从主库发送日志到备库,而是指日志到备库后,延迟多长时间应用主库日志。
select ora_rowscn,to_char(scn_to_timestamp(ora_rowscn),'yyyy-mm-dd hh24:mi:ss') opertime,id ,name from scntest;
15、验证主备库同步
15.1 检查归档目录是否有误
SQL> select error from v$archive_dest where error is not null;
正常,没有错误。
15.2 在主库手工切换归档
SQL> alter system switch logfile;
15.3 查看主备库归档情况(主备是一致的)
SQL> select max(sequence#) from v$archived_log;
15.4 查看standby管理情况
备库:
SQL> select process,pid,status from v$managed_standby;
PROCESS PID STATUS
--------- ---------- ------------
ARCH 7728 CONNECTED
ARCH 7730 CONNECTED
ARCH 7732 CONNECTED
ARCH 7734 CLOSING
RFS 7826 IDLE
RFS 7766 IDLE
RFS 7768 IDLE
RFS 7824 IDLE
MRP0 7807 APPLYING_LOG
ARCH、MRPO和RFS都有表示正常
主库:
SQL> select process,pid,status from v$managed_standby;
PROCESS PID STATUS
--------- ---------- ------------
ARCH 33377 CLOSING
ARCH 33379 CLOSING
ARCH 33381 CONNECTED
ARCH 33383 CLOSING
LNS 33385 WRITING
没有RFS进程和MRP进程,有LNS进程
16、主备机配置最大可用模式:
SQL> alter database set standby database to maximize availability;
Database altered.
17、Data Guard 配置
17.1 主库 PROTECTION_MODE
SQL> select name,dbid,database_role,protection_mode from v$database;
NAME DBID DATABASE_ROLE PROTECTION_MODE
--------- ---------- ---------------- --------------------
BURTON 3893622323 PRIMARY MAXIMUM AVAILABILITY
17.2 备库 PROTECTION_MODE
SQL> select name,dbid,database_role,protection_mode from v$database;
NAME DBID DATABASE_ROLE PROTECTION_MODE
--------- ---------- ---------------- --------------------
BURTON 3893622323 PHYSICAL STANDBY MAXIMUM AVAILABILITY
17.3 查看主备flashback database情况开启
SQL> select name,flashback_on from v$database;
NAME FLASHBACK_ON
--------- ------------------
BURTON YES
搭建方法(二)
一、安装ORACLE DG
1、关防火墙(用root用户再主备节点都执行)
临时关闭
$ service iptables stop
永久关闭
$ chkconfig iptables off
2、关闭Selinux(用root用户再主备节点都执行)
$ sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
及时生效
$ setenforce 0
3、主机名能互访(用root用户再主备节点都执行)
$ vi /etc/hosts
192.168.91.131 primarydb
192.168.91.132 standbydb
4、主备库建创建必要的目录(用oracle用户再主备节点都执行)
$ mkdir -p /u01/app/archivelog
$ mkdir -p /u01/app/oracle/admin/burton/adump
$ mkdir -p /u01/app/oracle/fast_recovery_area/burton
$ mkdir -p /u01/app/oracle/oradata/burton
$ mkdir -p /u01/app/backup
$ chmod -R 755 /u01/app
5、增加主库standby日志组文件
SQL> select member from v$logfile;
SQL> select group#,thread#,bytes/1024/1024 M ,STATUS from v$log;
SQL> alter database add standby logfile thread 1 group 4 ('/u01/app/oracle/oradata/burton/redo_dg04.log') size 50M;
SQL> alter database add standby logfile thread 1 group 5 ('/u01/app/oracle/oradata/burton/redo_dg05.log') size 50M;
SQL> alter database add standby logfile thread 1 group 6 ('/u01/app/oracle/oradata/burton/redo_dg06.log') size 50M;
SQL> alter database add standby logfile thread 1 group 7 ('/u01/app/oracle/oradata/burton/redo_dg07.log') size 50M;
SQL> col member for a50;
SQL> select group#,status,type,member from v$logfile;
6、修改主库和备库的tnsnames.ora
$ cd $ORACLE_HOME/network/admin/
$ vi tnsnames.ora
BURTON =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.91.131)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = burton)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.91.132)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
重启下监听
$ lsnrctl stop
$ lsnrctl start
$ lsnrctl status
7、测试联通性
主->备
$ sqlplus sys/oracle4U@standby as sysdba
备->主
$ sqlplus sys/oracle4U@burton as sysdba
8、主库复制密码文件到备库
$ cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs
$ scp -r ./orapwburton oracle@192.168.91.132:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwburton
9、修改主库配置
SQL> alter database force logging;
SQL> alter system set log_archive_dest='' scope=spfile;
SQL> alter system set log_archive_format='burton_%t_%s_%r.arc' scope=spfile;
SQL> alter system set fal_client='burton';
SQL> alter system set fal_server='standby';
SQL> alter system set standby_file_management='AUTO';
SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton' scope=spfile;
SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton' scope=spfile;
SQL> alter system set log_archive_config='DG_CONFIG=(burton,standby)';
SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=burton';
SQL> alter system set log_archive_dest_state_1='enable';
SQL> alter system set log_archive_dest_2='SERVICE=standby lgwr async affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby';
SQL> alter system set log_archive_dest_state_2='enable';
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
SQL> create pfile='/tmp/pfile.ora' from spfile;
$ scp -r /tmp/pfile.ora oracle@192.168.91.132:/tmp/
10、修改备库的pfile
*.audit_file_dest='/u01/app/oracle/admin/burton/adump'
*.audit_trail='DB'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/burton/control01.ctl','/u01/app/oracle/fast_recovery_area/burton/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton'
*.db_name='burton'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.db_unique_name='standby'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=burtonXDB)'
*.fal_client='standby'
*.fal_server='burton'
*.log_archive_config='DG_CONFIG=(burton,standby)'
*.log_archive_dest=''
*.log_archive_dest_1='LOCATION=/u01/app/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
*.log_archive_dest_2='SERVICE=burton lgwr async affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=burton'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_format='burton_%t_%s_%r.arc'
*.log_file_name_convert='/u01/app/oracle/oradata/burton','/u01/app/oracle/oradata/burton'
*.open_cursors=300
*.pga_aggregate_target=25242370048
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1536
*.sga_target=1610612736
*.shared_servers=100
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
11、通过主库创建备库的控制文件
主库
SQL> sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> alter database create standby controlfile as '/u01/app/oracle/oradata/burton/controldg01.ctl';
$ scp -r /u01/app/oracle/oradata/burton/controldg01.ctl oracle@192.168.91.132:/u01/app/oracle/oradata/burton/control01.ctl
$ scp -r /u01/app/oracle/oradata/burton/controldg01.ctl oracle@192.168.91.132:/u01/app/oracle/fast_recovery_area/burton/control02.ctl
12、备份
$ mkdir -p /u01/app/backup
$ rman target /
$ backup database format '/u01/app/backup/full_%d_%T_%s_%U' plus archivelog FORMAT '/u01/app/backup/arc_%d_%s_%p.bak';
$ list backup;
13、复制备份集到备库(具体操作看实际情况)
$ scp -r /u01/app/backup/* oracle@192.168.91.132:/u01/app/backup
14、备库用pfile启动到mount
$ sqlplus / as sysdba
SQL> startup nomount pfile='/tmp/pfile.ora';
SQL> create spfile from pfile='/tmp/pfile.ora';
SQL> alter database mount;
15、恢复standby (14和15同一个窗口操作)
$ rman target /
RMAN> crosscheck backup;
RMAN> delete expired backup;
RMAN> list backup;
RMAN> catalog start with '/u01/app/backup';
RMAN> list backup;
RMAN> restore database;
16、启动主库
SQL> alter database open;
17、同步及启动备库
SQL> alter database open read only;
SQL> recover managed standby database disconnect from session;
SQL> alter database recover managed standby database cancel;
SQL> alter database recover managed standby database using current logfile disconnect from session;
18、验证主备库同步
18.1 检查归档目录是否有误
SQL> select dest_name,error,status from v$archive_dest where error is not null;
正常,没有错误。
18.2 在主库手工切换归档
SQL> alter system switch logfile;
18.3 查看主库归档情况
SQL> select max(sequence#) from v$archived_log;
18.4 查看备库归档情况
SQL> select sequence#,applied from v$archived_log;
19、primary上配置最大可用模式:
SQL> alter database set standby database to maximize availability;
二、主备机切换
192.168.91.131 主库--->备库
192.168.91.132 备库--->主库
1、主机切换到备机,在192.168.91.131操作
SQL> select database_role,protection_level,protection_mode from v$database;
DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE
---------------- -------------------- --------------------
PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
正常是 TO STANDBY,SESSIONS ACTIVE说明有活动会话,切换时必须加with session shutdown
SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.
2、备机切换到主机,在192.168.91.132操作
SQL> select database_role,protection_level,protection_mode from v$database;
DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
SQL> alter database commit to switchover to primary;
Database altered.
SQL> alter database open;
Database altered.
3、启动现备机,在192.168.91.131操作
SQL> startup nomount
ORACLE instance started.
SQL> alter database mount standby database;
Database altered.
SQL> alter database open read only;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
4、验证数据同步
4.1 先查看192.168.91.132
主库手工切换归档
SQL> alter system switch logfile;
stem altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
20
SQL> select database_role,protection_level,protection_mode from v$database;
DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE
---------------- -------------------- --------------------
PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
4.2 查看 192.168.91.131
SQL> select database_role,protection_level,protection_mode from v$database;
DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
20
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30590361/viewspace-2135720/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30590361/viewspace-2135720/