Oracle 19C OGG基础运维-06增加复制表
场景一:源端extract进程和目标端replicat进程参数文件中通过*来匹配所有表。
场景二:源端extract进程和目标端replicat进程参数文件中没有通过*来匹配所有表,而是指定了固定的表。
场景一:源端extract进程和目标端replicat进程参数文件中通过*来匹配所有表。
例如:
源端:
extract进程
GGSCI (cjcos01) 16> edit params ext_01
GGSCI (cjcos01) 18> view param ext_01
extract ext_01
userid c##ogg@cjcdb,password oracle
GETUPDATEBEFORES
GETTRUNCATES
BR BRINTERVAL 2H
CACHEMGR CACHESIZE 500MB
WARNLONGTRANS 2H,CHECKINTERVAL 5M
NUMFILES 4000
EOFDELAYCSECS 10
LOGALLSUPCOLS
TRANLOGOPTIONS INTEGRATEDPARAMS (max_sga_size 200, parallelism 2)
discardfile ./dirrpt/jcms.dsc,append, megabytes 200
exttrail ./dirdat/ex
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA, REPORT
TABLE cjcpdb.cjc.*;
---TABLE cjcpdb.cjc.emp;
---TABLE cjcpdb.cjc.dept;
---TABLE cjcpdb.cjc.bonus;
---TABLE cjcpdb.cjc.salgrade;
---TABLE cjcpdb.cjc.dummy;
pump投递进程
GGSCI (cjcos01) 20> edit param pump_01
GGSCI (cjcos01) 21> view param pump_01
extract pump_01
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid c##ogg@cjcdb,password oracle
rmthost 192.168.31.100,mgrport 7809,compress
rmttrail ./dirdat/dp
TABLE cjcpdb.cjc.*;
---TABLE cjcpdb.cjc.emp;
---TABLE cjcpdb.cjc.dept;
---TABLE cjcpdb.cjc.bonus;
---TABLE cjcpdb.cjc.salgrade;
---TABLE cjcpdb.cjc.dummy;
进程状态
GGSCI (cjcos01) 25> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_01 06:16:15 00:02:21
EXTRACT RUNNING PUMP_01 00:00:00 00:00:02
目标端:
replicat进程
GGSCI (cjcos02) 8> edit param rep_01
GGSCI (cjcos02) 9> view param rep_01
replicat rep_01
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg@chenpdb,password oracle
assumetargetdefs
reperror default,discard
discardfile ./dirrpt/replzl.dsc,append,megabytes 50
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
MAP cjcpdb.cjc.*, TARGET chenpdb.chen.*;
---MAP cjcpdb.cjc.emp, TARGET chenpdb.chen.emp;
---MAP cjcpdb.cjc.dept, TARGET chenpdb.chen.dept;
---MAP cjcpdb.cjc.bonus, TARGET chenpdb.chen.bonus;
---MAP cjcpdb.cjc.salgrade, TARGET chenpdb.chen.salgrade;
---MAP cjcpdb.cjc.dummy, TARGET chenpdb.chen.dummy;
进程状态
GGSCI (cjcos02) 12> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP_01 00:00:00 00:21:01
增加复制表操作:
源端在复制用户下创建新表后,只要符合*匹配的所有条件,都会自动复制,无需修改配置文件。
需要执行以下步骤:
例如 在源端创建了新表t1:
SQL> conn cjc/cjc@cjcpdb
SQL> create table t1 (id number,cname varchar2(100));
SQL> select tname from tab;
TNAME
-------------------------------------------
DEPT
EMP
BONUS
SALGRADE
DUMMY
DEPT_BAK
T1
7 rows selected.
源端:
1 为新增的表添加附加日志
GGSCI (cjcos01 as c##ogg@cjcdb/CDB$ROOT) 29> dblogin userid c##ogg@cjcpdb password oracle
Successfully logged into database CJCPDB.
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 30> info trandata cjcpdb.cjc.t1
2020-04-10 20:38:15 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T1 *****
Oracle Goldengate support native capture on table CJC.T1.
Oracle Goldengate marked following column as key columns on table CJC.T1: ID, CNAME
No unique key is defined for table CJC.T1.
Logging of supplemental redo log data is disabled for table CJCPDB.CJC.T1.
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 31> add trandata cjcpdb.cjc.t1
2020-04-10 20:38:43 WARNING OGG-06439 No unique key is defined for table T1. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
2020-04-10 20:38:43 INFO OGG-15130 No key found for table CJCPDB.CJC.T1. All viable columns will be logged.
2020-04-10 20:38:46 INFO OGG-15132 Logging of supplemental redo data enabled for table CJCPDB.CJC.T1.
2020-04-10 20:38:46 INFO OGG-15133 TRANDATA for scheduling columns has been added on table CJCPDB.CJC.T1.
2020-04-10 20:38:47 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table CJCPDB.CJC.T1.
2020-04-10 20:38:48 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T1 *****
Oracle Goldengate support native capture on table CJC.T1.
Oracle Goldengate marked following column as key columns on table CJC.T1: ID, CNAME
No unique key is defined for table CJC.T1.
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 35> info trandata cjcpdb.cjc.t1
2020-04-10 20:41:51 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T1 *****
Oracle Goldengate support native capture on table CJC.T1.
Oracle Goldengate marked following column as key columns on table CJC.T1: ID, CNAME
No unique key is defined for table CJC.T1.
Logging of supplemental redo log data is enabled for table CJCPDB.CJC.T1.
Columns supplementally logged for table CJCPDB.CJC.T1: "CNAME", "ID".
Prepared CSN for table CJCPDB.CJC.T1: 3644902
目标端:
2 t1表数据已经同步
SQL> conn chen/chen@chenpdb
SQL> select tname from tab;
TNAME
--------------------------------------------------------------------------------
DUMMY
SALGRADE
BONUS
EMP
DEPT
T1
6 rows selected.
3 检查目标端新表上是否有外键、trigger、check约束等。
禁用外键、trigger、check约束
4 同步日志如下
SQL> create table t1 (id number,cname varchar2(100));
源端:
2020-04-10T20:31:43.623+0800 INFO OGG-01487 Oracle GoldenGate Capture for Oracle, ext_01.prm: DDL found, operation [create table t1 (id number,cname varchar2(100)) (size 47)], start SCN [3642918], commit SCN [3642934] instance [ (1)], DDL seqno [0], marker seqno [0].
2020-04-10T20:31:43.661+0800 INFO OGG-10451 Oracle GoldenGate Capture for Oracle, ext_01.prm: DDL operation included [INCLUDE ALL], optype [CREATE], objtype [TABLE], catalog "CJCPDB", objowner "CJC", objname "T1".
2020-04-10T20:31:43.854+0800 INFO OGG-00497 Oracle GoldenGate Capture for Oracle, ext_01.prm: Writing DDL operation to extract trail file.
目标端:
2020-04-10T20:31:49.044+0800 INFO OGG-00482 Oracle GoldenGate Delivery for Oracle, rep_01.prm: DDL found, operation [create table t1 (id number,cname varchar2(100)) (size 47)].
2020-04-10T20:31:49.317+0800 INFO OGG-00489 Oracle GoldenGate Delivery for Oracle, rep_01.prm: DDL is of mapped scope, after mapping new operation [create table "CHEN"."T1" (id number,cname varchar2(100)) (size 56)].
2020-04-10T20:31:49.317+0800 INFO OGG-10451 Oracle GoldenGate Delivery for Oracle, rep_01.prm: DDL operation included [INCLUDE MAPPED], optype [CREATE], objtype [TABLE], catalog "CJCPDB", objowner "CHEN", objname "T1".
2020-04-10T20:31:49.590+0800 INFO OGG-01407 Oracle GoldenGate Delivery for Oracle, rep_01.prm: Setting current schema for DDL operation to CHEN.
2020-04-10T20:31:49.590+0800 INFO OGG-00484 Oracle GoldenGate Delivery for Oracle, rep_01.prm: Executing DDL operation.
2020-04-10T20:31:50.609+0800 INFO OGG-00483 Oracle GoldenGate Delivery for Oracle, rep_01.prm: DDL operation successful.
2020-04-10T20:31:50.614+0800 INFO OGG-01408 Oracle GoldenGate Delivery for Oracle, rep_01.prm: Restoring current schema for DDL operation to OGG.
5 测试表无主键并且超过32列,是否出现错误显示无法附加日志的情况?
结论:本次测试,创建33列表,可以正常附加日志。
例:创建t2表,还有33列
create table t2
(col1 number,col2 number,col3 number,col4 number,col5 number,col6 number,col7 number,col8 number,col9 number,col10 number,
col11 number,col12 number,col13 number,col14 number,col15 number,col16 number,col17 number,col18 number,col19 number,col20 number,
col21 number,col22 number,col23 number,col24 number,col25 number,col26 number,col27 number,col28 number,col29 number,col30 number,
col31 number,col32 number,col33 number);
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 32> info trandata cjcpdb.cjc.t2
2020-04-10 20:40:20 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T2 *****
Oracle Goldengate support native capture on table CJC.T2.
Oracle Goldengate marked following column as key columns on table CJC.T2: COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18, COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33
No unique key is defined for table CJC.T2.
Logging of supplemental redo log data is disabled for table CJCPDB.CJC.T2.
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 36> add trandata cjcpdb.cjc.t2
2020-04-10 20:42:19 WARNING OGG-06439 No unique key is defined for table T2. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
2020-04-10 20:42:19 INFO OGG-15130 No key found for table CJCPDB.CJC.T2. All viable columns will be logged.
2020-04-10 20:42:19 WARNING OGG-01387 Table CJCPDB.CJC.T2 has no valid key columns, added unconditional supplemental log group for all table columns.
2020-04-10 20:42:19 INFO OGG-15132 Logging of supplemental redo data enabled for table CJCPDB.CJC.T2.
2020-04-10 20:42:19 INFO OGG-15133 TRANDATA for scheduling columns has been added on table CJCPDB.CJC.T2.
2020-04-10 20:42:19 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table CJCPDB.CJC.T2.
2020-04-10 20:42:19 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T2 *****
Oracle Goldengate support native capture on table CJC.T2.
Oracle Goldengate marked following column as key columns on table CJC.T2: COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18, COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33
No unique key is defined for table CJC.T2.
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 37> info trandata cjcpdb.cjc.t2
2020-04-10 20:42:43 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T2 *****
Oracle Goldengate support native capture on table CJC.T2.
Oracle Goldengate marked following column as key columns on table CJC.T2: COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18, COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33
No unique key is defined for table CJC.T2.
Logging of supplemental redo log data is enabled for table CJCPDB.CJC.T2.
All columns supplementally logged for table CJCPDB.CJC.T2.
Prepared CSN for table CJCPDB.CJC.T2: 3645152
场景二:源端extract进程和目标端replicat进程参数文件中没有通过*来匹配所有表,而是指定了固定的表。
例如:
源端
:
extract进程
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 41> edit param ext_01
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 42> view param ext_01
extract ext_01
userid c##ogg@cjcdb,password oracle
GETUPDATEBEFORES
GETTRUNCATES
BR BRINTERVAL 2H
CACHEMGR CACHESIZE 500MB
WARNLONGTRANS 2H,CHECKINTERVAL 5M
NUMFILES 4000
EOFDELAYCSECS 10
LOGALLSUPCOLS
TRANLOGOPTIONS INTEGRATEDPARAMS (max_sga_size 200, parallelism 2)
discardfile ./dirrpt/jcms.dsc,append, megabytes 200
exttrail ./dirdat/ex
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA, REPORT
---TABLE cjcpdb.cjc.*;
TABLE cjcpdb.cjc.emp;
TABLE cjcpdb.cjc.dept;
TABLE cjcpdb.cjc.bonus;
TABLE cjcpdb.cjc.salgrade;
TABLE cjcpdb.cjc.dummy;
pump进程
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 43> edit param pump_01
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 44> view param pump_01
extract pump_01
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid c##ogg@cjcdb,password oracle
rmthost 192.168.31.100,mgrport 7809,compress
rmttrail ./dirdat/dp
---TABLE cjcpdb.cjc.*;
TABLE cjcpdb.cjc.emp;
TABLE cjcpdb.cjc.dept;
TABLE cjcpdb.cjc.bonus;
TABLE cjcpdb.cjc.salgrade;
TABLE cjcpdb.cjc.dummy;
进程状态:
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 48> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_01 00:00:01 00:00:00
EXTRACT RUNNING PUMP_01 00:00:00 00:00:02
目标端:
replicat进程
GGSCI (cjcos02) 26> edit param rep_01
GGSCI (cjcos02) 27> view param rep_01
replicat rep_01
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg@chenpdb,password oracle
assumetargetdefs
reperror default,discard
discardfile ./dirrpt/replzl.dsc,append,megabytes 50
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
DDLERROR 942 IGNORE
---MAP cjcpdb.cjc.*, TARGET chenpdb.chen.*;
MAP cjcpdb.cjc.emp, TARGET chenpdb.chen.emp;
MAP cjcpdb.cjc.dept, TARGET chenpdb.chen.dept;
MAP cjcpdb.cjc.bonus, TARGET chenpdb.chen.bonus;
MAP cjcpdb.cjc.salgrade, TARGET chenpdb.chen.salgrade;
MAP cjcpdb.cjc.dummy, TARGET chenpdb.chen.dummy;
进程状态
GGSCI (cjcos02) 30> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP_01 00:00:00 00:00:02
增加复制表操作:
1 源端数据库添加测试表
SQL> create table t1 as select * from dept;
源端:
SQL> select tname from tab;
TNAME
--------------------------------------------------------------------------------
DEPT
EMP
BONUS
SALGRADE
DUMMY
T1
6 rows selected.
2 对新加表添加补充日志
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 63> info trandata cjcpdb.cjc.t1
2020-04-10 22:53:11 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T1 *****
Oracle Goldengate support native capture on table CJC.T1.
Oracle Goldengate marked following column as key columns on table CJC.T1: DEPTNO, DNAME, LOC
No unique key is defined for table CJC.T1.
Logging of supplemental redo log data is disabled for table CJCPDB.CJC.T1.
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 64> add trandata cjcpdb.cjc.t1
2020-04-10 22:53:16 WARNING OGG-06439 No unique key is defined for table T1. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
2020-04-10 22:53:16 INFO OGG-15130 No key found for table CJCPDB.CJC.T1. All viable columns will be logged.
2020-04-10 22:53:20 INFO OGG-15132 Logging of supplemental redo data enabled for table CJCPDB.CJC.T1.
2020-04-10 22:53:20 INFO OGG-15133 TRANDATA for scheduling columns has been added on table CJCPDB.CJC.T1.
2020-04-10 22:53:22 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table CJCPDB.CJC.T1.
2020-04-10 22:53:23 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T1 *****
Oracle Goldengate support native capture on table CJC.T1.
Oracle Goldengate marked following column as key columns on table CJC.T1: DEPTNO, DNAME, LOC
No unique key is defined for table CJC.T1.
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 65> info trandata cjcpdb.cjc.t1
2020-04-10 22:53:25 INFO OGG-10471 ***** Oracle Goldengate support information on table CJC.T1 *****
Oracle Goldengate support native capture on table CJC.T1.
Oracle Goldengate marked following column as key columns on table CJC.T1: DEPTNO, DNAME, LOC
No unique key is defined for table CJC.T1.
Logging of supplemental redo log data is enabled for table CJCPDB.CJC.T1.
Columns supplementally logged for table CJCPDB.CJC.T1: "DEPTNO", "DNAME", "LOC".
Prepared CSN for table CJCPDB.CJC.T1: 3695914
目标端:表还没有同步
SQL> select tname from tab;
TNAME
--------------------------------------------------------------------------------
DUMMY
SALGRADE
BONUS
EMP
DEPT
3 目标端:T1表数据初始化
源端:
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
3658620
[oracle@cjcos01 ogg]$ expdp cjc/cjc@cjcpdb DIRECTORY=expdp_dir DUMPFILE=cjc_t1.dmp logfile=cjc_expdp_t1.log
tables=cjc.t1 flashback_scn=3658620
[oracle@cjcos01 ogg]$ cd /backup/
[oracle@cjcos01 backup]$ scp cjc_t1.dmp 192.168.31.100:/backup
目标端:
[oracle@cjcos02 ogg]$ impdp chen/chen@chenpdb DIRECTORY=expdp_dir DUMPFILE=cjc_t1.dmp logfile=cjc_impdp_t1.log
remap_schema=cjc:chen remap_tablespace=cjctbs:chentbs table_exists_action=REPLACE
4 添加源端extract进程参数和目标端replicat进程参数。
例如:
源端:
extract进程
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 50> edit param ext_01
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 51> view param ext_01
extract ext_01
userid c##ogg@cjcdb,password oracle
GETUPDATEBEFORES
GETTRUNCATES
BR BRINTERVAL 2H
CACHEMGR CACHESIZE 500MB
WARNLONGTRANS 2H,CHECKINTERVAL 5M
NUMFILES 4000
EOFDELAYCSECS 10
LOGALLSUPCOLS
TRANLOGOPTIONS INTEGRATEDPARAMS (max_sga_size 200, parallelism 2)
discardfile ./dirrpt/jcms.dsc,append, megabytes 200
exttrail ./dirdat/ex
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA, REPORT
---TABLE cjcpdb.cjc.*;
TABLE cjcpdb.cjc.emp;
TABLE cjcpdb.cjc.dept;
TABLE cjcpdb.cjc.bonus;
TABLE cjcpdb.cjc.salgrade;
TABLE cjcpdb.cjc.dummy;
TABLE cjcpdb.cjc.t1;
pump进程
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 53> edit param pump_01
GGSCI (cjcos01 as c##ogg@cjcdb/CJCPDB) 54> view param pump_01
extract pump_01
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid c##ogg@cjcdb,password oracle
rmthost 192.168.31.100,mgrport 7809,compress
rmttrail ./dirdat/dp
---TABLE cjcpdb.cjc.*;
TABLE cjcpdb.cjc.emp;
TABLE cjcpdb.cjc.dept;
TABLE cjcpdb.cjc.bonus;
TABLE cjcpdb.cjc.salgrade;
TABLE cjcpdb.cjc.dummy;
TABLE cjcpdb.cjc.t1;
目标端添加:
replicat进程
GGSCI (cjcos02) 31> edit param rep_01
GGSCI (cjcos02) 32> view param rep_01
replicat rep_01
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg@chenpdb,password oracle
assumetargetdefs
reperror default,discard
discardfile ./dirrpt/replzl.dsc,append,megabytes 50
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
DDLERROR 942 IGNORE
---MAP cjcpdb.cjc.*, TARGET chenpdb.chen.*;
MAP cjcpdb.cjc.emp, TARGET chenpdb.chen.emp;
MAP cjcpdb.cjc.dept, TARGET chenpdb.chen.dept;
MAP cjcpdb.cjc.bonus, TARGET chenpdb.chen.bonus;
MAP cjcpdb.cjc.salgrade, TARGET chenpdb.chen.salgrade;
MAP cjcpdb.cjc.dummy, TARGET chenpdb.chen.dummy;
MAP cjcpdb.cjc.t1, TARGET chenpdb.chen.t1;
5 检查目标端新表上是否有外键、trigger、check约束等。
禁用外键、trigger、check约束
6 重启进程,使参数生效
源端:
stop pump_01
stop ext_01
start pump_01
start ext_01
目标端:
stop rep_01
start replicat rep_01,aftercsn 3658620
7 查看同步数据
源端:
SQL> select * from t1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 DBA DUNHUA
60 CJC DAPUCHAI
90 CH CCC
目标端:t1表数据已同步
SQL> select * from t1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 DBA DUNHUA
60 CJC DAPUCHAI
90 CH CCC
欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!