Oracle 11g RAC 集群中引入了SCAN(Single Client Access Name)的概念,也就是指集群的单客户端访问名称。SCAN 这个特性为客户端提供了单一的主机名,用于访问集群中运行的 Oracle 数据库。如果您在集群中添加或删除节点,使用 SCAN 的客户端无需更改自己的 TNS 配置。无论集群包含哪些节点,SCAN 资源及其关联的 IP 地址提供了一个稳定的名称供客户端进行连接使用。在Oracle 11g grid 安装时即要求为该特性配置DNS解析方式或GNS解析方式。本文描述了安装Oracle 11g grid时的DNS配置。
1. 1、安装环境
2. #配置DNS,可以使用单独的DNS服务器,也可以直接使用RAC的一个节点来提供DNS解析
3. #直接使用某个节点时,容易出现该节点如果宕机将导致SCAN无法解析,客户端无法连接数据库
4. #本文仅作演示,使用节点1的public ip用作dns,不考虑上面描述的情形以及DNS安全性等。
5. [root@node1 ~]# cat /etc/issue
6. Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
7. Kernel \r on an \m
8.
9. 2、主机节点host信息
10. [root@node1 ~]# more /etc/hosts
11. # Do not remove the following line, or various programs
12. # that require network functionality will fail.
13. #127.0.0.1 localhost.localdomain localhost
14. #::1 localhost6.localdomain6 localhost6
15.
16. 127.0.0.1 localhost.szdb.com localhost
17. # Public eth0
18. 192.168.7.71 node1.szdb.com node1 #该地址作为DNS服务器地址
19. 192.168.7.72 node2.szdb.com node2
20.
21. #Private eth1
22. 10.10.7.71 node1-priv.szdb.com node1-priv
23. 10.10.7.72 node2-priv.szdb.com node2-priv
24.
25. #Virtual
26. 192.168.7.81 node1-vip.szdb.com node1-vip
27. 192.168.7.82 node2-vip.szdb.com node2-vip
28.
29. #scan
30. 192.168.7.91 scan-cluster1.szdb.com scan-cluster1
31.
32. 3、配置dns需要用到的安装包
33. [root@node1 dns_rpm]# ls -hltr
34. total 1.1M
35. -rw-r--r-- 1 root root 45K Dec 7 18:04 bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm
36. -rw-r--r-- 1 root root 985K Dec 7 18:04 bind-9.3.6-4.P1.el5_4.2.i386.rpm
37. -rw-r--r-- 1 root root 61K Dec 7 18:04 caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm
38.
39. #下面安装rpm包
40. [root@node1 dns_rpm]# rpm -Uvh bind-9.3.6-4.P1.el5_4.2.i386.rpm
41. warning: bind-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
42. Preparing... ########################################### [100%]
43. 1:bind ########################################### [100%]
44. [root@node1 dns_rpm]# rpm -Uvh bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm
45. warning: bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
46. Preparing... ########################################### [100%]
47. 1:bind-chroot ########################################### [100%]
48. [root@node1 dns_rpm]# rpm -Uvh caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm
49. warning: caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
50. Preparing... ########################################### [100%]
51. 1:caching-nameserver ########################################### [100%]
52.
53. 4、配置DNS
54. #关于DNS的配置,分为以下几个步骤
55. #a.安装所需的rpm包
56. #b.配置named.conf文件
57. #c.配置zone文件,包括正向和反向zone文件
58. #d.配置解析文件resolv.conf
59. #e.启动dns服务
60. [root@node1 ~]# cd /var/named/chroot/etc/
61. #使用下面的方式复制两个新的副本并修改,参数-p表示连同权限及属主,属组一同复制。切记不可忽略参数-p
62. [root@node1 etc]# cp -p named.caching-nameserver.conf named.conf
63. [root@node1 etc]# cp -p named.rfc1912.zones named.zones
64.
65. #修改named.conf文件,将源文件中的所有localhost以及127.0.0.1修改成any,注意any;前后保留空格
66. #该文件主要是配置dns监听那些端口以及ip地址并指明相应的名字解析zone文件名named.zones
67. #下面是修改后的named.conf文件
68. [root@node1 ~]# cat /var/named/chroot/etc/named.conf
69. //
70. // named.caching-nameserver.conf
71. //
72. // Provided by Red Hat caching-nameserver package to configure the
73. // ISC BIND named(8) DNS server as a caching only nameserver
74. // (as a localhost DNS resolver only).
75. //
76. // See /usr/share/doc/bind*/sample/ for example named configuration files.
77. //
78. // DO NOT EDIT THIS FILE - use system-config-bind or an editor
79. // to create named.conf - edits to this file will be lost on
80. // caching-nameserver package upgrade.
81. //
82. options {
83. listen-on port 53 { any; };
84. listen-on-v6 port 53 { ::1; };
85. directory "/var/named";
86. dump-file "/var/named/data/cache_dump.db";
87. statistics-file "/var/named/data/named_stats.txt";
88. memstatistics-file "/var/named/data/named_mem_stats.txt";
89.
90. // Those options should be used carefully because they disable port
91. // randomization
92. // query-source port 53;
93. // query-source-v6 port 53;
94.
95. allow-query { any; };
96. allow-query-cache { any; };
97. };
98. logging {
99. channel default_debug {
100. file "data/named.run";
101. severity dynamic;
102. };
103. };
104. view localhost_resolver {
105. match-clients { any; };
106. match-destinations { any; };
107. recursion yes;
108. include "/etc/named.zones";
109. };
110.
111. #修改named.zones文件,该文件用于指定zone的搜索范围,包括正向和反向。文件末尾最后的两个zone为新增加的
112. #注意每一个zone的file用于指向真正的zone文件,后面要用到
113. # Author : Robinson
114. # Blog : http://blog.csdn.net/robinson_0612
115.
116. #下面是修改后的named.zones文件
117. [root@node1 ~]# cat /var/named/chroot/etc/named.zones
118. // named.rfc1912.zones:
119. //
120. // Provided by Red Hat caching-nameserver package
121. //
122. // ISC BIND named zone configuration for zones recommended by
123. // RFC 1912 section 4.1 : localhost TLDs and address zones
124. //
125. // See /usr/share/doc/bind*/sample/ for example named configuration files.
126. //
127. zone "." IN {
128. type hint;
129. file "named.ca";
130. };
131.
132. zone "localdomain" IN {
133. type master;
134. file "localdomain.zone";
135. allow-update { none; };
136. };
137.
138. zone "localhost" IN {
139. type master;
140. file "localhost.zone";
141. allow-update { none; };
142. };
143.
144. zone "0.0.127.in-addr.arpa" IN {
145. type master;
146. file "named.local";
147. allow-update { none; };
148. };
149.
150. zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
151. type master;
152. file "named.ip6.local";
153. allow-update { none; };
154. };
155.
156. zone "255.in-addr.arpa" IN {
157. type master;
158. file "named.broadcast";
159. allow-update { none; };
160. };
161.
162. zone "0.in-addr.arpa" IN {
163. type master;
164. file "named.zero";
165. allow-update { none; };
166. };
167.
168. #Add new zone added by Robinson
169. #以下两个zone为新增的,包含正向和反向zone
170. zone "szdb.com" IN {
171. type master;
172. file "node1.szdb.zero";
173. allow-update { none; };
174. };
175.
176. zone "7.168.192.in-addr.arpa" IN {
177. type master;
178. file "7.168.192.local";
179. allow-update { none; };
180. };
181.
182. #配置正向和反向搜索数据库解析文件
183. [root@node1 etc]# pwd
184. /var/named/chroot/etc
185. [root@node1 etc]# cd ../var/named/
186. #同样使用cp -p 方式复制文件到新的正向和反向文件
187. [root@node1 named]# cp -p named.zero node1.szdb.zero
188. [root@node1 named]# cp -p named.local 7.168.192.local
189.
190. #下面是修改之后的正向搜索文件,也可以将host文件的其他ip对照编辑到正向搜索文件以实现解析
191. #如下面的例子将vip的参照关系也添加到解析文件
192. [root@node1 named]# cat node1.szdb.zero
193. $TTL 86400
194. @ IN SOA node1.szdb.com. root.szdb.com. (
195. 42 ; serial (d. adams)
196. 3H ; refresh
197. 15M ; retry
198. 1W ; expiry
199. 1D ) ; minimum
200. IN NS node1.szdb.com.
201. scan-cluster1 IN A 192.168.7.91
202. scan-cluster1 IN A 192.168.7.92
203. scan-cluster1.szdb.com IN A 192.168.7.91
204. scan-cluster1.szdb.com IN A 192.168.7.92
205. node1-vip IN A 192.168.7.81
206. node2-vip IN A 192.168.7.82
207. node1-vip.szdb.com IN A 192.168.7.81
208. node2-vip.szdb.com IN A 192.168.7.82
209.
210. #下面是修改之后的反向搜索文件
211. [root@node1 named]# cat 7.168.192.local
212. $TTL 86400
213. @ IN SOA node1.szdb.com. root.szdb.com. (
214. 1997022700 ; Serial
215. 28800 ; Refresh
216. 14400 ; Retry
217. 3600000 ; Expire
218. 86400 ) ; Minimum
219. IN NS node1.szdb.com.
220. 1 IN PTR node1.szdb.com.
221. 91 IN PTR scan-cluster1.szdb.com.
222. 92 IN PTR scan-cluster1.szdb.com.
223. 91 IN PTR scan-cluster1.
224. 92 IN PTR scan-cluster1.
225. 81 IN PTR node1-vip.
226. 82 IN PTR node2-vip.
227. 81 IN PTR node1-vip.szdb.com.
228. 82 IN PTR node2-vip.szdb.com.
229.
230. #在各个节点配置resolv.conf文件
231. #下面是修改之后的内容
232. [root@node1 named]# more /etc/resolv.conf
233. ; generated by /sbin/dhclient-script
234. #the following item removed by Robinson
235. #search SSG-140
236. #nameserver 192.168.7.10
237. #nameserver 192.168.7.11
238. #the following item added by Robinson
239. search szdb.com
240. nameserver 192.168.7.71
241.
242. #节点2上的resolv.conf文件
243. [root@node2 ~]# more /etc/resolv.conf
244. ; generated by /sbin/dhclient-script
245. #search SSG-140
246. #nameserver 192.168.7.10
247. #nameserver 192.168.7.11
248. search szdb.com
249. nameserver 192.168.7.71
250.
251. #启动dns服务
252. [root@node1 named]# service named restart
253. Stopping named: [ OK ]
254. Starting named: [ OK ]
255. [root@node1 named]# chkconfig named on
256.
257. #测试dns解析
258. [root@node1 named]# cd ~
259. [root@node1 ~]# nslookup 192.168.7.91
260. Server: 192.168.7.71
261. Address: 192.168.7.71#53
262.
263. 91.7.168.192.in-addr.arpa name = scan-cluster1.
264. 91.7.168.192.in-addr.arpa name = scan-cluster1.szdb.com.
265.
266. [root@node1 ~]# nslookup 192.168.7.92
267. Server: 192.168.7.71
268. Address: 192.168.7.71#53
269.
270. 92.7.168.192.in-addr.arpa name = scan-cluster1.szdb.com.
271. 92.7.168.192.in-addr.arpa name = scan-cluster1.
272.
273. [root@node1 ~]# nslookup scan-cluster1
274. Server: 192.168.7.71
275. Address: 192.168.7.71#53
276.
277. Name: scan-cluster1.szdb.com
278. Address: 192.168.7.92
279. Name: scan-cluster1.szdb.com
280. Address: 192.168.7.91
281.
282. [root@node1 ~]# nslookup scan-cluster1.szdb.com.
283. Server: 192.168.7.71
284. Address: 192.168.7.71#53
285.
286. Name: scan-cluster1.szdb.com
287. Address: 192.168.7.91
288. Name: scan-cluster1.szdb.com
289. Address: 192.168.7.92
290. 转:http://blog.csdn.net/leshami/article/details/8291685#comments
1. 1、安装环境
2. #配置DNS,可以使用单独的DNS服务器,也可以直接使用RAC的一个节点来提供DNS解析
3. #直接使用某个节点时,容易出现该节点如果宕机将导致SCAN无法解析,客户端无法连接数据库
4. #本文仅作演示,使用节点1的public ip用作dns,不考虑上面描述的情形以及DNS安全性等。
5. [root@node1 ~]# cat /etc/issue
6. Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
7. Kernel \r on an \m
8.
9. 2、主机节点host信息
10. [root@node1 ~]# more /etc/hosts
11. # Do not remove the following line, or various programs
12. # that require network functionality will fail.
13. #127.0.0.1 localhost.localdomain localhost
14. #::1 localhost6.localdomain6 localhost6
15.
16. 127.0.0.1 localhost.szdb.com localhost
17. # Public eth0
18. 192.168.7.71 node1.szdb.com node1 #该地址作为DNS服务器地址
19. 192.168.7.72 node2.szdb.com node2
20.
21. #Private eth1
22. 10.10.7.71 node1-priv.szdb.com node1-priv
23. 10.10.7.72 node2-priv.szdb.com node2-priv
24.
25. #Virtual
26. 192.168.7.81 node1-vip.szdb.com node1-vip
27. 192.168.7.82 node2-vip.szdb.com node2-vip
28.
29. #scan
30. 192.168.7.91 scan-cluster1.szdb.com scan-cluster1
31.
32. 3、配置dns需要用到的安装包
33. [root@node1 dns_rpm]# ls -hltr
34. total 1.1M
35. -rw-r--r-- 1 root root 45K Dec 7 18:04 bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm
36. -rw-r--r-- 1 root root 985K Dec 7 18:04 bind-9.3.6-4.P1.el5_4.2.i386.rpm
37. -rw-r--r-- 1 root root 61K Dec 7 18:04 caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm
38.
39. #下面安装rpm包
40. [root@node1 dns_rpm]# rpm -Uvh bind-9.3.6-4.P1.el5_4.2.i386.rpm
41. warning: bind-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
42. Preparing... ########################################### [100%]
43. 1:bind ########################################### [100%]
44. [root@node1 dns_rpm]# rpm -Uvh bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm
45. warning: bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
46. Preparing... ########################################### [100%]
47. 1:bind-chroot ########################################### [100%]
48. [root@node1 dns_rpm]# rpm -Uvh caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm
49. warning: caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
50. Preparing... ########################################### [100%]
51. 1:caching-nameserver ########################################### [100%]
52.
53. 4、配置DNS
54. #关于DNS的配置,分为以下几个步骤
55. #a.安装所需的rpm包
56. #b.配置named.conf文件
57. #c.配置zone文件,包括正向和反向zone文件
58. #d.配置解析文件resolv.conf
59. #e.启动dns服务
60. [root@node1 ~]# cd /var/named/chroot/etc/
61. #使用下面的方式复制两个新的副本并修改,参数-p表示连同权限及属主,属组一同复制。切记不可忽略参数-p
62. [root@node1 etc]# cp -p named.caching-nameserver.conf named.conf
63. [root@node1 etc]# cp -p named.rfc1912.zones named.zones
64.
65. #修改named.conf文件,将源文件中的所有localhost以及127.0.0.1修改成any,注意any;前后保留空格
66. #该文件主要是配置dns监听那些端口以及ip地址并指明相应的名字解析zone文件名named.zones
67. #下面是修改后的named.conf文件
68. [root@node1 ~]# cat /var/named/chroot/etc/named.conf
69. //
70. // named.caching-nameserver.conf
71. //
72. // Provided by Red Hat caching-nameserver package to configure the
73. // ISC BIND named(8) DNS server as a caching only nameserver
74. // (as a localhost DNS resolver only).
75. //
76. // See /usr/share/doc/bind*/sample/ for example named configuration files.
77. //
78. // DO NOT EDIT THIS FILE - use system-config-bind or an editor
79. // to create named.conf - edits to this file will be lost on
80. // caching-nameserver package upgrade.
81. //
82. options {
83. listen-on port 53 { any; };
84. listen-on-v6 port 53 { ::1; };
85. directory "/var/named";
86. dump-file "/var/named/data/cache_dump.db";
87. statistics-file "/var/named/data/named_stats.txt";
88. memstatistics-file "/var/named/data/named_mem_stats.txt";
89.
90. // Those options should be used carefully because they disable port
91. // randomization
92. // query-source port 53;
93. // query-source-v6 port 53;
94.
95. allow-query { any; };
96. allow-query-cache { any; };
97. };
98. logging {
99. channel default_debug {
100. file "data/named.run";
101. severity dynamic;
102. };
103. };
104. view localhost_resolver {
105. match-clients { any; };
106. match-destinations { any; };
107. recursion yes;
108. include "/etc/named.zones";
109. };
110.
111. #修改named.zones文件,该文件用于指定zone的搜索范围,包括正向和反向。文件末尾最后的两个zone为新增加的
112. #注意每一个zone的file用于指向真正的zone文件,后面要用到
113. # Author : Robinson
114. # Blog : http://blog.csdn.net/robinson_0612
115.
116. #下面是修改后的named.zones文件
117. [root@node1 ~]# cat /var/named/chroot/etc/named.zones
118. // named.rfc1912.zones:
119. //
120. // Provided by Red Hat caching-nameserver package
121. //
122. // ISC BIND named zone configuration for zones recommended by
123. // RFC 1912 section 4.1 : localhost TLDs and address zones
124. //
125. // See /usr/share/doc/bind*/sample/ for example named configuration files.
126. //
127. zone "." IN {
128. type hint;
129. file "named.ca";
130. };
131.
132. zone "localdomain" IN {
133. type master;
134. file "localdomain.zone";
135. allow-update { none; };
136. };
137.
138. zone "localhost" IN {
139. type master;
140. file "localhost.zone";
141. allow-update { none; };
142. };
143.
144. zone "0.0.127.in-addr.arpa" IN {
145. type master;
146. file "named.local";
147. allow-update { none; };
148. };
149.
150. zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
151. type master;
152. file "named.ip6.local";
153. allow-update { none; };
154. };
155.
156. zone "255.in-addr.arpa" IN {
157. type master;
158. file "named.broadcast";
159. allow-update { none; };
160. };
161.
162. zone "0.in-addr.arpa" IN {
163. type master;
164. file "named.zero";
165. allow-update { none; };
166. };
167.
168. #Add new zone added by Robinson
169. #以下两个zone为新增的,包含正向和反向zone
170. zone "szdb.com" IN {
171. type master;
172. file "node1.szdb.zero";
173. allow-update { none; };
174. };
175.
176. zone "7.168.192.in-addr.arpa" IN {
177. type master;
178. file "7.168.192.local";
179. allow-update { none; };
180. };
181.
182. #配置正向和反向搜索数据库解析文件
183. [root@node1 etc]# pwd
184. /var/named/chroot/etc
185. [root@node1 etc]# cd ../var/named/
186. #同样使用cp -p 方式复制文件到新的正向和反向文件
187. [root@node1 named]# cp -p named.zero node1.szdb.zero
188. [root@node1 named]# cp -p named.local 7.168.192.local
189.
190. #下面是修改之后的正向搜索文件,也可以将host文件的其他ip对照编辑到正向搜索文件以实现解析
191. #如下面的例子将vip的参照关系也添加到解析文件
192. [root@node1 named]# cat node1.szdb.zero
193. $TTL 86400
194. @ IN SOA node1.szdb.com. root.szdb.com. (
195. 42 ; serial (d. adams)
196. 3H ; refresh
197. 15M ; retry
198. 1W ; expiry
199. 1D ) ; minimum
200. IN NS node1.szdb.com.
201. scan-cluster1 IN A 192.168.7.91
202. scan-cluster1 IN A 192.168.7.92
203. scan-cluster1.szdb.com IN A 192.168.7.91
204. scan-cluster1.szdb.com IN A 192.168.7.92
205. node1-vip IN A 192.168.7.81
206. node2-vip IN A 192.168.7.82
207. node1-vip.szdb.com IN A 192.168.7.81
208. node2-vip.szdb.com IN A 192.168.7.82
209.
210. #下面是修改之后的反向搜索文件
211. [root@node1 named]# cat 7.168.192.local
212. $TTL 86400
213. @ IN SOA node1.szdb.com. root.szdb.com. (
214. 1997022700 ; Serial
215. 28800 ; Refresh
216. 14400 ; Retry
217. 3600000 ; Expire
218. 86400 ) ; Minimum
219. IN NS node1.szdb.com.
220. 1 IN PTR node1.szdb.com.
221. 91 IN PTR scan-cluster1.szdb.com.
222. 92 IN PTR scan-cluster1.szdb.com.
223. 91 IN PTR scan-cluster1.
224. 92 IN PTR scan-cluster1.
225. 81 IN PTR node1-vip.
226. 82 IN PTR node2-vip.
227. 81 IN PTR node1-vip.szdb.com.
228. 82 IN PTR node2-vip.szdb.com.
229.
230. #在各个节点配置resolv.conf文件
231. #下面是修改之后的内容
232. [root@node1 named]# more /etc/resolv.conf
233. ; generated by /sbin/dhclient-script
234. #the following item removed by Robinson
235. #search SSG-140
236. #nameserver 192.168.7.10
237. #nameserver 192.168.7.11
238. #the following item added by Robinson
239. search szdb.com
240. nameserver 192.168.7.71
241.
242. #节点2上的resolv.conf文件
243. [root@node2 ~]# more /etc/resolv.conf
244. ; generated by /sbin/dhclient-script
245. #search SSG-140
246. #nameserver 192.168.7.10
247. #nameserver 192.168.7.11
248. search szdb.com
249. nameserver 192.168.7.71
250.
251. #启动dns服务
252. [root@node1 named]# service named restart
253. Stopping named: [ OK ]
254. Starting named: [ OK ]
255. [root@node1 named]# chkconfig named on
256.
257. #测试dns解析
258. [root@node1 named]# cd ~
259. [root@node1 ~]# nslookup 192.168.7.91
260. Server: 192.168.7.71
261. Address: 192.168.7.71#53
262.
263. 91.7.168.192.in-addr.arpa name = scan-cluster1.
264. 91.7.168.192.in-addr.arpa name = scan-cluster1.szdb.com.
265.
266. [root@node1 ~]# nslookup 192.168.7.92
267. Server: 192.168.7.71
268. Address: 192.168.7.71#53
269.
270. 92.7.168.192.in-addr.arpa name = scan-cluster1.szdb.com.
271. 92.7.168.192.in-addr.arpa name = scan-cluster1.
272.
273. [root@node1 ~]# nslookup scan-cluster1
274. Server: 192.168.7.71
275. Address: 192.168.7.71#53
276.
277. Name: scan-cluster1.szdb.com
278. Address: 192.168.7.92
279. Name: scan-cluster1.szdb.com
280. Address: 192.168.7.91
281.
282. [root@node1 ~]# nslookup scan-cluster1.szdb.com.
283. Server: 192.168.7.71
284. Address: 192.168.7.71#53
285.
286. Name: scan-cluster1.szdb.com
287. Address: 192.168.7.91
288. Name: scan-cluster1.szdb.com
289. Address: 192.168.7.92
290. 转:http://blog.csdn.net/leshami/article/details/8291685#comments
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31448824/viewspace-2139480/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31448824/viewspace-2139480/