【OGG】OGG的单向复制配置-支持DDL(二)
【OGG】OGG的单向复制配置-支持DDL(二)
一.1 BLOG文档结构图
一.2 前言部分
一.2.1 导读
各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:
① OGG的单向DDL实时复制功能
注意:本篇BLOG中代码部分需要特别关注的地方我都用黄色背景和红色字体来表示,比如下边的例子中,thread 1的最大归档日志号为33,thread 2的最大归档日志号为43是需要特别关注的地方。
List of Archived Logs in backup set 11
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- ------------------- ---------- ---------
1 32 1621589 2015-05-29 11:09:52 1625242 2015-05-29 11:15:48
1 33 1625242 2015-05-29 11:15:48 1625293 2015-05-29 11:15:58
2 42 1613951 2015-05-29 10:41:18 1625245 2015-05-29 11:15:49
2 43 1625245 2015-05-29 11:15:49 1625253 2015-05-29 11:15:53
本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。
一.2.2 实验环境介绍
项目 | source db | target db |
db 类型 | 单实例 | 单实例 |
db version | 11.2.0.3 | 11.2.0.3 |
db 存储 | FS type | FS type |
ORACLE_SID | ogg1 | ogg2 |
db_name | ogg1 | ogg2 |
主机IP地址: | 192.168.59.129 | 192.168.59.130 |
OS版本及kernel版本 | RHEL6.5 64位,2.6.32-504.16.2.el6.x86_64 | RHEL6.5 64位,2.6.32-504.16.2.el6.x86_64 |
OGG版本 | 11.2.1.0.1 64位 | 11.2.1.0.1 64位 |
OS hostname | orcltest | rhel6_lhr |
一.2.3 相关参考文章链接
【OGG】OGG的下载和安装篇:http://blog.itpub.net/26736162/viewspace-1693241/
【OGG】OGG的单向DML复制配置(一):http://blog.itpub.net/26736162/viewspace-1696020/
一.2.4 本文简介
本文基于OGG的DML复制功能,加上DDL复制功能,后续会推出系列的OGG配置,包括双向复制,还有rac到单实例的复制等等,主要参考网址为:http://ylw6006.blog.51cto.com/all/470441/16 ,非常感谢斩月大师。
一.3 实验部分
一.3.1 实验目标
配置2台服务器,搭建OGG,实现hr用户下的数据ddl和DML复制功能。
一.3.2 先验证之前的配置不支持DDL复制
验证之前的配置不支持DDL复制,这里在source端,新建一张表,发现无法复制到target端!target端也新建相同的表后,DML操作可以成功复制。
[oracle@orcltest ~]$ sqlplus hr/hr@ogg1
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 10 16:18:03 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create table t2 (id number primary key,name varchar2(20));
Table created.
SQL> conn hr/hr@ogg2
Connected.
SQL> select tname from tab where tname='T2';
no rows selected
SQL> create table t2 (id number primary key,name varchar2(20));
Table created.
SQL> conn hr/hr@ogg1
Connected.
SQL> insert into t2 values (1,'one');
1 row created.
SQL> commit;
Commit complete.
SQL> conn hr/hr@ogg2
Connected.
SQL> select * from t2;
ID NAME
---------- --------------------
1 one
SQL>
此时source库:
GGSCI (orcltest) 26> dblogin userid ggusr@ogg1,password lhr
Successfully logged into database.
GGSCI (orcltest) 29> info trandata hr.t2
Logging of supplemental redo log data is disabled for table HR.T2.
GGSCI (orcltest) 30>
一.3.3 开始配置OGG支持DDL复制(在source端操作)
一.3.3.1 赋予ggusr用户相应的权限,修改全局配置文件添加ggschema参数
[oracle@orcltest ~]$ sqlplus sys/lhr@ogg1 as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 10 16:27:05 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> grant execute on utl_file to ggusr;
Grant succeeded.
SQL>
[oracle@orcltest gg11]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (orcltest) 1> edit param ./GLOBALS
GGSCHEMA ggusr
~
~
~
~
。。。。。。。。。。。。。。。
~
~
~
~
"./GLOBALS" 1L, 15C written
GGSCI (orcltest) 2> view param ./GLOBALS
GGSCHEMA ggusr
GGSCI (orcltest) 3>
一.3.3.2 运行相关的sql脚本
如果想使用DDL功能,需要在之前运行支持DDL的相关脚本。
1.@marker_setup.sql
2.@ddl_setup.sql
3.@role_setup.sql
4.GRANT GGS_GGSUSER_ROLE TO gguser
5.@ddl_enable.sql
6.@?/rdbms/admin/dbmspool.sql
7.@ddl_pin.sql ggusr
[oracle@orcltest gg11]$ sqlplus sys/lhr@ogg1 as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 10 16:30:45 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @marker_setup.sql
Marker setup script
You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.
Enter Oracle GoldenGate schema name:ggusr
Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGUSR
MARKER TABLE
-------------------------------
OK
MARKER SEQUENCE
-------------------------------
OK
Script complete.
SQL> @ddl_setup.sql
Oracle GoldenGate DDL Replication setup script
Verifying that current user has privileges to install DDL Replication...
You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.
Enter Oracle GoldenGate schema name:ggusr
Working, please wait ...
Spooling to file ddl_setup_spool.txt
Checking for sessions that are holding locks on Oracle Golden Gate metadata tables ...
Check complete.
Using GGUSR as a Oracle GoldenGate schema name.
Working, please wait ...
DDL replication setup script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGUSR
CLEAR_TRACE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
CREATE_TRACE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
TRACE_PUT_LINE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
INITIAL_SETUP STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
DDLVERSIONSPECIFIC PACKAGE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
DDLREPLICATION PACKAGE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
DDLREPLICATION PACKAGE BODY STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
DDL IGNORE TABLE
-----------------------------------
OK
DDL IGNORE LOG TABLE
-----------------------------------
OK
DDLAUX PACKAGE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
DDLAUX PACKAGE BODY STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
SYS.DDLCTXINFO PACKAGE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
SYS.DDLCTXINFO PACKAGE BODY STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
DDL HISTORY TABLE
-----------------------------------
OK
DDL HISTORY TABLE(1)
-----------------------------------
OK
DDL DUMP TABLES
-----------------------------------
OK
DDL DUMP COLUMNS
-----------------------------------
OK
DDL DUMP LOG GROUPS
-----------------------------------
OK
DDL DUMP PARTITIONS
-----------------------------------
OK
DDL DUMP PRIMARY KEYS
-----------------------------------
OK
DDL SEQUENCE
-----------------------------------
OK
GGS_TEMP_COLS
-----------------------------------
OK
GGS_TEMP_UK
-----------------------------------
OK
DDL TRIGGER CODE STATUS:
Line/pos Error
-------------------- -----------------------------------------------------------------
No errors No errors
DDL TRIGGER INSTALL STATUS
-----------------------------------
OK
DDL TRIGGER RUNNING STATUS
----------------------------------------------------------------------
ENABLED
STAYMETADATA IN TRIGGER
----------------------------------------------------------------------
OFF
DDL TRIGGER SQL TRACING
----------------------------------------------------------------------
0
DDL TRIGGER TRACE LEVEL
----------------------------------------------------------------------
0
LOCATION OF DDL TRACE FILE
------------------------------------------------------------------------------------------------------------------------
/u02/app/oracle/diag/rdbms/ogg1/ogg1/trace/ggs_ddl_trace.log
Analyzing installation status...
STATUS OF DDL REPLICATION
------------------------------------------------------------------------------------------------------------------------
SUCCESSFUL installation of DDL Replication software components
Script complete.
SQL> @role_setup.sql
GGS Role setup script
This script will drop and recreate the role GGS_GGSUSER_ROLE
To use a different role name, quit this script and then edit the params.sql script to change the gg_role parameter to the preferred name. (Do not run the script.)
You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.
Enter GoldenGate schema name:ggusr
Wrote file role_setup_set.txt
PL/SQL procedure successfully completed.
Role setup script complete
Grant this role to each user assigned to the Extract, GGSCI, and Manager processes, by using the following SQL command:
GRANT GGS_GGSUSER_ROLE TO <loggedUser>
where <loggedUser> is the user assigned to the GoldenGate processes.
SQL> grant ggs_ggsuser_role to ggusr;
Grant succeeded.
SQL> @ddl_enable.sql
Trigger altered.
SQL> @?/rdbms/admin/dbmspool.sql
Package created.
Grant succeeded.
SQL> @ddl_pin.sql ggusr
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
SQL>
/u02/app/oracle/diag/rdbms/ogg1/ogg1/trace/ggs_ddl_trace.log 为DDL语句的日志。
一.3.4 source端修改extract进程的params文件,添加"ddl include all"参数,重启extract进程
GGSCI (orcltest) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EORA_HR 00:00:27 00:00:08
EXTRACT RUNNING PORA_HR 00:00:00 00:00:02
GGSCI (orcltest) 4> edit params eora_hr
extract eora_hr
setenv (ORACLE_SID=ogg1)
setenv (ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
ddl include all
userid ggusr,password lhr
exttrail ./dirdat/hr
table hr.*;
~
~
~
~
~
。。。。。。。。。。。。
~
~
~
~
~
~
~
~
"dirprm/eora_hr.prm" 8L, 229C written
GGSCI (orcltest) 5> view params eora_hr
extract eora_hr
setenv (ORACLE_SID=ogg1)
setenv (ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
ddl include all
userid ggusr,password lhr
exttrail ./dirdat/hr
table hr.*;
GGSCI (orcltest) 6> stop eora_hr
Sending STOP request to EXTRACT EORA_HR ...
Request processed.
GGSCI (orcltest) 7> start eora_hr
Sending START request to MANAGER ...
EXTRACT EORA_HR starting
GGSCI (orcltest) 8> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EORA_HR 00:00:00 00:00:07
EXTRACT RUNNING PORA_HR 00:00:00 00:00:09
GGSCI (orcltest) 9>
GGSCI (orcltest) 9> view report EORA_HR
***********************************************************************
Oracle GoldenGate Capture for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:42:16
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
Starting at 2015-06-10 16:41:04
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Sun Nov 10 22:19:54 EST 2013, Release 2.6.32-431.el6.x86_64
Node: orcltest
Machine: x86_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 22734
Description:
***********************************************************************
** Running with the following parameters **
***********************************************************************
2015-06-10 16:41:04 INFO OGG-03035 Operating system character set identified as UTF-8. Locale: en_US, LC_ALL:.
extract eora_hr
setenv (ORACLE_SID=ogg1)
Set environment variable (ORACLE_SID=ogg1)
setenv (ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1)
Set environment variable (ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
Set environment variable (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
ddl include all
userid ggusr,password ***
exttrail ./dirdat/hr
table hr.*;
2015-06-10 16:41:04 INFO OGG-01815 Virtual Memory Facilities for: BR
anon alloc: mmap(MAP_ANON) anon free: munmap
file alloc: mmap(MAP_SHARED) file free: munmap
target directories:
/u01/gg11/BR/EORA_HR.
Bounded Recovery Parameter:
BRINTERVAL = 4HOURS
BRDIR = /u01/gg11
2015-06-10 16:41:04 INFO OGG-01815 Virtual Memory Facilities for: COM
anon alloc: mmap(MAP_ANON) anon free: munmap
file alloc: mmap(MAP_SHARED) file free: munmap
target directories:
/u01/gg11/dirtmp.
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE: 64G
CACHEPAGEOUTSIZE (normal): 8M
PROCESS VM AVAIL FROM OS (min): 128G
CACHESIZEMAX (strict force to disk): 96G
Database Version:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
Database Language and Character Set:
NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK"
NLS_LANGUAGE = "AMERICAN"
NLS_TERRITORY = "AMERICA"
NLS_CHARACTERSET = "ZHS16GBK"
2015-06-10 16:41:04 WARNING OGG-01423 No valid default archive log destination directory found for thread 1.
2015-06-10 16:41:04 INFO OGG-01513 Positioning to Sequence 8, RBA 4283920, SCN 0.1107430.
2015-06-10 16:41:04 INFO OGG-01516 Positioned to Sequence 8, RBA 4283920, SCN 0.1107430, Jun 10, 2015 4:40:34 PM.
2015-06-10 16:41:04 INFO OGG-01055 Recovery initialization completed for target file ./dirdat/hr000001, at RBA 1076.
2015-06-10 16:41:04 INFO OGG-01478 Output file ./dirdat/hr is using format RELEASE 11.2.
2015-06-10 16:41:04 INFO OGG-01026 Rolling over remote file ./dirdat/hr000001.
2015-06-10 16:41:04 INFO OGG-01053 Recovery completed for target file ./dirdat/hr000002, at RBA 1076.
2015-06-10 16:41:04 INFO OGG-01057 Recovery completed for all targets.
***********************************************************************
** Run Time Messages **
***********************************************************************
2015-06-10 16:41:04 INFO OGG-01517 Position of first record processed Sequence 8, RBA 4283920, SCN 0.1107430, Jun 10, 2015 4:40:34 PM.
GGSCI (orcltest) 10>
GGSCI (orcltest) 10> info extract eora_hr
EXTRACT EORA_HR Last Started 2015-06-10 16:41 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:04 ago)
Log Read Checkpoint Oracle Redo Logs
2015-06-10 16:42:16 Seqno 8, RBA 4302848
SCN 0.1107495 (1107495)
GGSCI (orcltest) 11>
一.3.5 target端修改replicat进程的params文件,添加"ddl include all"和"ddlerror default ignore retryop maxretries 3 retrydelay 5" 参数,重启replicat进程
[oracle@rhel6_lhr gg11]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (rhel6_lhr) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING RORA_HR 00:00:00 00:00:07
GGSCI (rhel6_lhr) 2> edit params rora_hr
GGSCI (rhel6_lhr) 3> view params rora_hr
replicat rora_hr
setenv (ORACLE_SID=ogg2)
setenv (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
ddl include all
ddlerror default ignore retryop maxretries 3 retrydelay 5
userid ggusr,password lhr
handlecollisions
assumetargetdefs
discardfile ./dirrpt/rora_hr.dsc,purge
map hr.* ,target hr.*;
GGSCI (rhel6_lhr) 4> stop rora_hr
Sending STOP request to REPLICAT RORA_HR ...
Request processed.
GGSCI (rhel6_lhr) 5> start rora_hr
Sending START request to MANAGER ...
REPLICAT RORA_HR starting
GGSCI (rhel6_lhr) 6> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING RORA_HR 00:00:00 00:00:06
GGSCI (rhel6_lhr) 7>
GGSCI (rhel6_lhr) 7> info replicat rora_hr
REPLICAT RORA_HR Last Started 2015-06-10 02:39 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:08 ago)
Log Read Checkpoint File ./dirdat/pa000000
First Record RBA 7200161
GGSCI (rhel6_lhr) 8>
一.3.6 测试
[oracle@orcltest ~]$ sqlplus hr/hr@ogg1
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 10 16:47:12 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter table t2 add location varchar2(200);
Table altered.
SQL> conn hr/hr@ogg2
Connected.
SQL> desc t2
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER
NAME VARCHAR2(20)
LOCATION VARCHAR2(200)
SQL> conn hr/hr@ogg1
Connected.
SQL> create table t3 as select object_id,object_name from dba_objects;
Table created.
SQL> select count(1) from t3;
COUNT(1)
----------
75262
SQL> conn hr/hr@ogg2
Connected.
SQL> select tname from tab where tname='T3';
TNAME
------------------------------
T3
SQL> select count(1) from t3;
COUNT(1)
----------
75217
可以看到DDL语句已经执行了,我们看看DDL语句的日志:
SESS 380011-2015-06-10 16:47:19 : DDL : ************************* Start of log for DDL sequence [14], v[ $Id: ddl_setup.sql /st_oggcore_11.2.1/8 2012/04/02 11:11:33 smijatov Exp $ ] trace level [0], owner schema of DDL package [GGUSR], objtype [TABLE] name [HR.T2]
SESS 380011-2015-06-10 16:47:19 : DDLTRACE1 : Before Trigger: point in execution = [1.0], objtype [TABLE] name [HR.T2]
SESS 380011-2015-06-10 16:47:19 : DDL : DDL operation [alter table t2 add location varchar2(200) ], sequence [14], DDL type [ALTER] TABLE, real object type [TABLE], validity [VALID], object ID [76836], object [HR.T2], real object [HR.T2], base object schema [], base object name [], logged as [HR]
SESS 380011-2015-06-10 16:47:19 : DDL : Start SCN found [1107605]
SESS 380011-2015-06-10 16:47:20 : DDL : ------------------------- End of log for DDL sequence [14]
SESS 390002-2015-06-10 16:48:14 : DDL : ************************* Start of log for DDL sequence [501], v[ $Id: ddl_setup.sql /st_oggcore_11.2.1/8 2012/04/02 11:11:33 smijatov Exp $ ] trace level [0], owner schema of DDL package [GGUSR], objtype [TABLE] name [HR.T3]
SESS 390002-2015-06-10 16:48:14 : DDLTRACE1 : Before Trigger: point in execution = [1.0], objtype [TABLE] name [HR.T3]
SESS 390002-2015-06-10 16:48:14 : DDL : DDL operation [create table t3 as select object_id,object_name from dba_objects ], sequence [501], DDL type [CREATE] TABLE, real object type [TABLE], validity [], object ID [], object [HR.T3], real object [HR.T3], base object schema [], base object name [], logged as [HR]
SESS 390002-2015-06-10 16:48:14 : DDL : Start SCN found [1107994]
SESS 390002-2015-06-10 16:48:14 : DDL : ------------------------- End of log for DDL sequence [501]
一.3.7 实验总结
DDL复制,我们可以从日志看出其执行的SQL语句,若DML配置熟悉的话,DDL配置就很简单了。
一.4 About Me
...........................................................................................................................................................................................
本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
ITPUB BLOG:http://blog.itpub.net/26736162
本文地址:http://blog.itpub.net/26736162/viewspace-1696031/
本文pdf版:http://yunpan.cn/QCwUAI9bn7g7w 提取码:af2d
QQ:642808185 若加QQ请注明你所正在读的文章标题
创作时间地点:2015-06-10 09:00~ 2015-06-10 19:00 于外汇交易中心
<版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任!>
...........................................................................................................................................................................................
............................................................................................ ● 小麦苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ............................................................................................ 使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(DB宝),学习最实用的数据库技术。
|