转发一份GoldenGate 配置文档
转发一份GoldenGate 配置文档,里面有参数说明,值得看
1 GoldenGate简要说明
GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一。
GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步。
1.1 Golden Gate技术结构
从图中可以看到:GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicat进程,下面对其一一说明:
Manager进程是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。
Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML或DDL语句,然后应用到目标数据库中。
1.2 Golden Gate拓扑结构
GoldenGate提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑结构,如图1.2所示:
根据实际需求情况,我们需要进行的是一对一复制,且只是复制部分表数据,所以这里仅探讨一对一复制的安装配置,而且对于DDL复制的支持这里也不做研究。
2 单机à单机复制配置
2.1 环境简介
性质 |
IP |
系统 |
Oracle版本 |
源端 |
10.122.0.110 |
AIX 5.3 |
10.2.0.1 |
目标端 |
10.122.0.113 |
WINDOWS 2003 |
10.2.0.1 |
2.2 源端安装GoldenGate
unzip ogg112101_ggs_AIX_ppc_ora10.2_64bit.zip
tar –xf ggs_AIX_ppc_ora10.2_64bit.tar
export GGATE_HOME=/u01/oracle/oracle/ogg
export LIBPATH=$GGATE_HOME:$ORACLE_HOME/lib
HP及Linux平台下用LD_LIBRARY_PATH替换LIBPATH
执行命令 createsubdirs创建工作目录,显示如下:
GGSCI (NDSCDB1)1> create subdirs
Creatingsubdirectories under current directory /u01/oracle/oracle/ogg
Parameterfiles /u01/oracle/oracle/ogg/dirprm: already exists
Reportfiles /u01/oracle/oracle/ogg/dirrpt: created
Checkpointfiles /u01/oracle/oracle/ogg/dirchk: created
Process statusfiles /u01/oracle/oracle/ogg/dirpcs: created
SQL scriptfiles /u01/oracle/oracle/ogg/dirsql:created
Databasedefinitions files /u01/oracle/oracle/ogg/dirdef: created
Extract datafiles /u01/oracle/oracle/ogg/dirdat: created
Temporaryfiles /u01/oracle/oracle/ogg/dirtmp: created
Stdout files /u01/oracle/oracle/ogg/dirout: created
2.3 目标端安装GoldenGate
建立OGG安装目录,然后将压缩包解压到目录中,进入cmd控制台,创建工作目录,
2.4 配置源端数据库
Alter databaseadd supplemental log data;
使用SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
源端数据库创建GoldenGate数据库用户并授权:(我们这里以ogg为例,使用其他亦可)
create user ogg identified by oracle defaulttablespace DATA_OL;
grant connect,resource,unlimited tablespace to ogg;
grant executeon utl_file to ogg;
grant select any dictionary,select any table to ogg;
grant flashback any table to ogg;
grant execute onDBMS_FLASHBACK to ogg;
GGSCI (NDSCDB1) 2>dblogin userid ogg,password oracle
Successfully logged intodatabase.
GGSCI(NDSCDB1) 3> add trandata olive.ol$_objects
Logging of supplemental redo dataenabled for table OLIVE.OL$_OBJECTS.
2.5 配置源端进程组
GGSCI(NDSCDB1) 1> edit param mgr
AUTORESTART EXTRACT *,RETRIES5,WAITMINUTES 3
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3
PORT:指定服务监听端口;这里以7839为例,默认端口为7809
AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。
LAGREPORT、LAGINFO、LAGCRITICAL:
定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。
Program Status Group Lag at Chkpt Time Since Chkpt
GGSCI(NDSCDB1) 12> add extract extnd,tranlog,begin now
GGSCI(NDSCDB1) 14> add exttrail ./dirdat/nd,extract extnd,megabytes 100
GGSCI(NDSCDB1) 15> edit params extnd
setenv(NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV(ORACLE_HOME = "/u01/oracle/oracle/product/10.2.0/db_1")
REPORTCOUNTEVERY 1 MINUTES, RATE
DISCARDFILE./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024
--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000
WARNLONGTRANS2h,CHECKINTERVAL 3m
--TRANLOGOPTIONSEXCLUDEUSER USERNAME
TRANLOGOPTIONS CONVERTUCS2CLOBS
GGSCI(NDSCDB1) 2> add extract dpend,exttrailsource ./dirdat/nd
GGSCI(NDSCDB1) 3> add rmttrail F:\ogg\dirdat\nd, EXTRACT DPEND
GGSCI(NDSCDB1) 4> edit params dpend
SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")
RMTHOST10.122.0.113, MGRPORT 7839, compress
抽取进程和传输进程其实都是EXTRACT进程,也可以配置在一个进程完成这两个功能,但是当网络传输有问题时,这样抽取也就不能继续运行了,所以推荐分开配置为两个进程;
USERID/ PASSWORD:指定OGG连接数据库的用户名和密码,这里使用3.4部分中创建的数据库用户OGG;
TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:
RMTHOST:指定目标系统及其GoldengateManager进程的端口号,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输;
SQLEXEC:在extract进程运行时首先运行一个SQL语句;
PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程;
STATOPTIONS:定义每次使用stat时统计数字是否需要重置;
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
DBOPTIONS:指定对于某种特定数据库所需要的特殊参数;
TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0
WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;
2.6 配置目标数据库
createuser ogg identified by oracle default tablespace DATA_OL;
grantconnect,resource,unlimited tablespace to ogg;
grantexecute on utl_file to ogg;
grantselect any dictionary,select any table to ogg;
grantflashback any table to ogg;
grantexecute on DBMS_FLASHBACK to ogg;
2.7 配置目标端进程组
ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;
SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。
MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;
REPERROR:定义出错以后进程的响应,一般可以定义为两种:
DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。
MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。
2.8 启动进程进行数据同步
启动后使用info all查看进程状态,正常status应该RUNNING,显示如下:
Program Status Group Lag at Chkpt Time Since Chkpt
EXTRACT RUNNING DPEND 00:00:00 00:15:32
EXTRACT RUNNING EXTND 00:00:00 00:00:04
3 RACà单机复制配置
3.1 环境简介
性质 |
IP |
系统 |
ORACLE版本 |
源端 |
10.123.112.201/10.123.112.202 |
linux rhel5 64位 |
10.2.0.1 |
目标端 |
10.123.112.235 |
LINUX rhel5 32位 |
10.2.0.1 |
3.2 源端安装OCFS2集群文件系统
RAC环境中为了实现高可用性,需将OGG安装在集群文件系统中,这样OGG可以访问RAC中的所有节点,我们这里测试采用OCFS2文件系统。
从http://oss.oracle.com下载与LINUX内核相符的OCFS2 RPM包
[root@node1ocfs]# rpm -ivh ocfs2-tools-1.2.7-1.el5.x86_64.rpm \
ocfs2console-1.2.7-1.el5.x86_64.rpm\
ocfs2-2.6.18-92.el5-1.2.9-1.el5.x86_64.rpm
在集群中的所有节点上以 root 用户帐户的身份运行以下命令
export PATH=$PATH:/sbin:/usr/sbin
/etc/init.d/o2cb enable
创建ocfs2文件系统,其中-N选项用于指明最多允许多少个节点同时使用此文件系统:
chown -Roracle:dba /ggate
chmod -R 775 /ggate
3.3 源端安装GoldenGate
在GoldenGate安装目录(OCFS2目录/ggate)解压安装文件
unzipogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip
tar–xvf fbo_ggs_Linux_x64_ora10g_64bit.tar
exportLD_LIBRARY_PATH=$GGATE_HOME:$ORACLE_HOME/lib
执行命令 createsubdirs创建工作目录,显示如下:
GGSCI(node1) 1> create subdirs
Creatingsubdirectories under current directory /ggate
Parameterfiles /ggate/dirprm:already exists
Reportfiles /ggate/dirrpt:created
Checkpointfiles /ggate/dirchk:created
Processstatus files /ggate/dirpcs: created
SQLscript files /ggate/dirsql:created
Databasedefinitions files /ggate/dirdef: created
Extractdata files /ggate/dirdat: created
Temporaryfiles /ggate/dirtmp:created
Stdoutfiles /ggate/dirout:created
3.4 目标端安装GoldenGate
环境相同,安装方法与4.3一致,仅仅是安装位置不同,安装过程略,注意安装包与平台一致。
3.5 配置源端数据库
Alterdatabase add supplemental log data;
使用SELECTSUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
源端数据库创建GoldenGate数据库用户并授权:(我们这里以ogg为例,使用其他亦可)
createuser ogg identified by oracle default tablespace DATA_OL;
grantconnect,resource,unlimited tablespace to ogg;
grantexecute on utl_file to ogg;
grantselect any dictionary,select any table to ogg;
grantflashback any table to ogg;
grantexecute on DBMS_FLASHBACK to ogg;
GGSCI(node1) 1> dblogin userid ogg,password oracle
Successfullylogged into database.
GGSCI(node1) 2> add trandata SCOTT.DEPT
Loggingof supplemental redo data enabled for table SCOTT.DEPT.
GGSCI(node1) 3> add trandata SCOTT.EMP
Loggingof supplemental redo data enabled for table SCOTT.EMP.
3.6 配置源端进程组
GGSCI(node1) 1> edit param mgr
AUTORESTARTEXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3
Program Status Group Lag at Chkpt Time Since Chkpt
GGSCI(node1) 6> add extract extnd,tranlog,begin now,threads 2
GGSCI(node1) 7> add exttrail ./dirdat/nd,extract extnd,megabytes 100
GGSCI(node1) 8> edit params extnd
SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV(ORACLE_HOME = "/u01/app/oracle/product/10.2.0/db_1")
USERID ogg@RAC, PASSWORDoracle
REPORTCOUNTEVERY 1 MINUTES, RATE
DISCARDFILE./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024
--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000
WARNLONGTRANS2h,CHECKINTERVAL 3m
--TRANLOGOPTIONSEXCLUDEUSER USERNAME
TRANLOGOPTIONS CONVERTUCS2CLOBS
注意:threads与RAC节点数相同即可,RAC中不再使用ORACLE_SID设置,而使用USERID ogg@RAC,注意两个节点均可连接数据库。
GGSCI(node1) 2> add extract dpend,exttrailsource ./dirdat/nd
GGSCI(node1) 3> add rmttrail /uo1/app/ogg/dirdat/nd, EXTRACT DPEND
GGSCI(node1) 4> edit params dpend
SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)
USERID ogg@RAC, PASSWORDoracle
RMTHOST10.123.112.235, MGRPORT 7839, compress
RMTTRAIL/uo1/app/ogg/dirdat/nd
3.7 配置目标数据库
createuser ogg identified by oracle default tablespace USERS;
grantconnect,resource,unlimited tablespace to ogg;
grantexecute on utl_file to ogg;
grantselect any dictionary,select any table to ogg;
grantflashback any table to ogg;
grantexecute on DBMS_FLASHBACK to ogg;
GGSCI(sun.linux) 2> edit params GLOBALS
GGSCI(sun.linux) 4> dblogin userid ogg,password oracle
Successfullylogged into database.
GGSCI(sun.linux) 5> add checkpointtable ogg.checkpoint
Successfullycreated checkpoint table ogg.checkpoint.
3.8 配置目标端进程组
GGSCI(sun.linux) 6> edit params mgr
AUTORESTARTEXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3
GGSCI(sun.linux)8> add replicat repnd,exttrail/uo1/app/ogg/dirdat/nd,checkpointtable ogg.checkpoint
GGSCI(sun.linux) 10> edit params repnd
SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)
discardfile./dirrpt/repnd.dsc,append,megabytes 50
3.9 启动进程进行数据同步
启动后使用info all查看进程状态,正常status应该RUNNING,显示如下:
Program Status Group Lag at Chkpt Time Since Chkpt
EXTRACT RUNNING DPEND 00:00:00 00:00:09
EXTRACT RUNNING EXTND 00:00:00 00:00:04
Program Status Group Lag at Chkpt Time Since Chkpt
REPLICAT RUNNING REPND 00:00:00 00:00:03
到此RAC到单点OGG的安装配置就完成了,可以进行数据同步测试了。
4 RACà单机下的HA配置
第4部分的RACà单机的配置仅仅完成了数据复制的功能,不包含高可用的配置,当运行GoldenGate的节点出现故障时复制功能就将终止,如何使复制功能继续可用呢,有如下两种方式:
4.1 节点故障的手工处理方式
4.2 GoldenGate的HA配置
我们可以通过使用CRS来管理GoldenGate资源组,并且使用RAC的vip连接到GoldenGate,一旦数据库的某一个节点宕掉,Oracleclusterware将自动切换到另一个可用节点。
[oracle@node1ggate]$ cd $ORA_CRS_HOME/bin
/u01/app/oracle/product/10.2.0/crs_1/bin
[oracle@node1 bin]$crs_profile –create ggvip –t application \
–a /u01/app/oracle/product/10.2.0/crs_1\
-o oi=eth0,ov=192.168.73.203,on=255.255.255.0
[oracle@node1 bin]$crs_register ggvip
[root@node1 bin]#./crs_setperm ggvip –o root
[root@node1 bin]#./crs_setperm ggvip –u user:oracle:r-x
[oracle@node1bin]$ crs_start ggvip
Attempting tostart `ggvip` on member `node1`
Start of`ggvip` on member `node1` succeeded.
[oracle@node1bin]$ crs_stat ggvip -t
------------------------------------------------------------
ggvip application ONLINE ONLINE node1
action程序我们这里放到共享磁盘上,action程序最少需要可以接受三个参数:start,stop,check
check :返回0表示GoldenGate在运行,1 表示不运行;
#set the OracleGoldengate installation directory
#set the oraclehome to the database to ensure GoldenGate will get the
#rightenvironment settings to be able to connect to the database
exportORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
#specify delayafter start before checking for successful start
#Include theGoldenGate home in the library path to start GGSCI
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:${GGS_HOME}:${LD_LIBRARY_PATH}
#check_processvalidates that a manager process is running at the PID
if ( [ -f"${GGS_HOME}/dirpcs/MGR.pcm" ] )
pid=`cut -f8"${GGS_HOME}/dirpcs/MGR.pcm"`
if [ ${pid} = `ps -e |grep ${pid} |grep mgr|cut -d " " -f2` ]
#manager process is running on the PID exitsuccess
if [ ${pid} = `ps -e |grep ${pid} |grep mgr|cut -d " " -f1` ]
#manager process is running on the PID exitsuccess
#manager process is not running on the PID
#manager is not running because there is noPID file
#call_ggsci isa generic routine that executes a ggsci command
ggsci_output=`${GGS_HOME}/ggsci << EOF
#there is a small delay between issuing thestart manager command
#and the process being spawned on the OS.wait before checking
#check whether manager is running and exitaccordingly
#attempt a clean stop for all non-managerprocesses
#stop manager without (y/n) confirmation
#attempt a clean stop for all non-managerprocesses
#in case there are lingering processes
#stop manager without (y/n) confirmation
#in case there are lingering processes
#stop manager without (y/n) confirmation
[oracle@node1 ggate]$cd $ORA_CRS_HOME/bin
/u01/app/oracle/product/10.2.0/crs_1/bin
[oracle@node1 bin]$crs_profile –create GG_app –t application \
–r ggvip –a/ggate/gg_action.scr –o ci=10
其中:-r ggvip表示ggvip必须在GoldenGate启动之前运行,
-a /ggate/gg_action.scr指定action 脚本的位置,在每个节点必须都可用
[oracle@node1 bin]$crs_register GG_app
[root@node1 bin]#./crs_setperm ggvip –o oracle
[root@node1 bin]#./crs_setperm GG_app –u user:oracle:r-x
[oracle@node1bin]$ crs_start GG_app
Attempting tostart `GG_app` on member `node1`
Start of`GG_app` on member `node1` succeeded.
[oracle@node1bin]$ crs_stat GG_app -t
------------------------------------------------------------
GG_app application ONLINE ONLINE node1
在测试环境中可以使用crs_relocate –fGG_app使它强行漂移:过程显示如下:
------------------------------------------------------------
GG_app application ONLINE ONLINE node1
ggvip application ONLINE ONLINE node1
ora....AC1.srv application ONLINE ONLINE node1
ora....AC2.srv application ONLINE ONLINE node2
ora.RAC.RAC.cs application ONLINE ONLINE node2
ora....C1.inst application ONLINE ONLINE node1
ora....C2.inst application ONLINE ONLINE node2
ora.RAC.db application ONLINE ONLINE node1
ora....E1.lsnr application ONLINE ONLINE node1
ora.node1.gsd application ONLINE ONLINE node1
ora.node1.ons application ONLINE ONLINE node1
ora.node1.vip application ONLINE ONLINE node1
ora....E2.lsnr application ONLINE ONLINE node2
ora.node2.gsd application ONLINE ONLINE node2
ora.node2.ons application ONLINE ONLINE node2
ora.node2.vip application ONLINE ONLINE node2
[oracle@node1 ~]$ crs_relocate -f GG_app
Attempting to stop `GG_app` on member `node1`
Stop of `GG_app` on member `node1` succeeded.
Attempting to stop `ggvip` on member `node1`
Stop of `ggvip` on member `node1` succeeded.
Attempting to start `ggvip` on member `node2`
Start of `ggvip` on member `node2` succeeded.
Attempting to start `GG_app` on member `node2`
Start of `GG_app` on member `node2` succeeded.
------------------------------------------------------------
GG_app application ONLINE ONLINE node2
ggvip application ONLINE ONLINE node2
ora....AC1.srv application ONLINE ONLINE node1
ora....AC2.srv application ONLINE ONLINE node2
ora.RAC.RAC.cs application ONLINE ONLINE node2
ora....C1.inst application ONLINE ONLINE node1
ora....C2.inst application ONLINE ONLINE node2
ora.RAC.db application ONLINE ONLINE node1
ora....E1.lsnr application ONLINE ONLINE node1
ora.node1.gsd application ONLINE ONLINE node1
ora.node1.ons application ONLINE ONLINE node1
ora.node1.vip application ONLINE ONLINE node1
ora....E2.lsnr application ONLINE ONLINE node2
ora.node2.gsd application ONLINE ONLINE node2
ora.node2.ons application ONLINE ONLINE node2
ora.node2.vip application ONLINE ONLINE node2
5 常见错误及解决方法
5.1 OGG-00446
启动源端抽取进程extnd,ggserr.log错误显示如下:
导致原因:早期归档日志被删除或已备份,导致找不到归档日志文件;
测试库可以指定抽取进程从某个时间点开始读取日志,跳过已删除的归档日志文件,命令如下:alterextract extnd,begin 2012-8-16 16:38;
5.2 OGG-01223
启动源端传输进程DPEND,ggserr.log错误显示如下:
在目标端启动startmgr启动进程后,再启动源端的传输进程DPEND,错误消失,文件顺利传输过来了。
5.3 OGG-01224
启动源端传输进程DPEND,ggserr.log错误显示如下:
在目标端机器关闭防火墙后,再启动源端的传输进程DPEND,错误消失,文件顺利传输过来了。
5.4 OGG-01031
启动源端传输进程DPEND,ggserr.log错误显示如下:
2、可能是目标端的trail file出问题了,前滚重新生成一个新的队列文件
或者:alter extract xxx etrollover
5.5 OGG-01154
导致原因:源端更新了分区列,但目标端没有打开行移动,导致更新时报错;
处理方法:SQLPLUS>alter table SCHEMA.TABLENAME enable row movement;转发一份GoldenGate 配置文档,里面有参数说明,值得看
目录(?)[+]
1 GoldenGate简要说明
GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一。
GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步。
1.1 Golden Gate技术结构
从图中可以看到:GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicat进程,下面对其一一说明:
Manager进程是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。
Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML或DDL语句,然后应用到目标数据库中。
1.2 Golden Gate拓扑结构
GoldenGate提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑结构,如图1.2所示:
根据实际需求情况,我们需要进行的是一对一复制,且只是复制部分表数据,所以这里仅探讨一对一复制的安装配置,而且对于DDL复制的支持这里也不做研究。
2 单机à单机复制配置
2.1 环境简介
性质 |
IP |
系统 |
Oracle版本 |
源端 |
10.122.0.110 |
AIX 5.3 |
10.2.0.1 |
目标端 |
10.122.0.113 |
WINDOWS 2003 |
10.2.0.1 |
2.2 源端安装GoldenGate
unzip ogg112101_ggs_AIX_ppc_ora10.2_64bit.zip
tar –xf ggs_AIX_ppc_ora10.2_64bit.tar
export GGATE_HOME=/u01/oracle/oracle/ogg
export LIBPATH=$GGATE_HOME:$ORACLE_HOME/lib
HP及Linux平台下用LD_LIBRARY_PATH替换LIBPATH
执行命令 createsubdirs创建工作目录,显示如下:
GGSCI (NDSCDB1)1> create subdirs
Creatingsubdirectories under current directory /u01/oracle/oracle/ogg
Parameterfiles /u01/oracle/oracle/ogg/dirprm: already exists
Reportfiles /u01/oracle/oracle/ogg/dirrpt: created
Checkpointfiles /u01/oracle/oracle/ogg/dirchk: created
Process statusfiles /u01/oracle/oracle/ogg/dirpcs: created
SQL scriptfiles /u01/oracle/oracle/ogg/dirsql:created
Databasedefinitions files /u01/oracle/oracle/ogg/dirdef: created
Extract datafiles /u01/oracle/oracle/ogg/dirdat: created
Temporaryfiles /u01/oracle/oracle/ogg/dirtmp: created
Stdout files /u01/oracle/oracle/ogg/dirout: created
2.3 目标端安装GoldenGate
建立OGG安装目录,然后将压缩包解压到目录中,进入cmd控制台,创建工作目录,
2.4 配置源端数据库
Alter databaseadd supplemental log data;
使用SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
源端数据库创建GoldenGate数据库用户并授权:(我们这里以ogg为例,使用其他亦可)
create user ogg identified by oracle defaulttablespace DATA_OL;
grant connect,resource,unlimited tablespace to ogg;
grant executeon utl_file to ogg;
grant select any dictionary,select any table to ogg;
grant flashback any table to ogg;
grant execute onDBMS_FLASHBACK to ogg;
GGSCI (NDSCDB1) 2>dblogin userid ogg,password oracle
Successfully logged intodatabase.
GGSCI(NDSCDB1) 3> add trandata olive.ol$_objects
Logging of supplemental redo dataenabled for table OLIVE.OL$_OBJECTS.
2.5 配置源端进程组
GGSCI(NDSCDB1) 1> edit param mgr
AUTORESTART EXTRACT *,RETRIES5,WAITMINUTES 3
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3
PORT:指定服务监听端口;这里以7839为例,默认端口为7809
AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。
LAGREPORT、LAGINFO、LAGCRITICAL:
定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。
Program Status Group Lag at Chkpt Time Since Chkpt
GGSCI(NDSCDB1) 12> add extract extnd,tranlog,begin now
GGSCI(NDSCDB1) 14> add exttrail ./dirdat/nd,extract extnd,megabytes 100
GGSCI(NDSCDB1) 15> edit params extnd
setenv(NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV(ORACLE_HOME = "/u01/oracle/oracle/product/10.2.0/db_1")
REPORTCOUNTEVERY 1 MINUTES, RATE
DISCARDFILE./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024
--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000
WARNLONGTRANS2h,CHECKINTERVAL 3m
--TRANLOGOPTIONSEXCLUDEUSER USERNAME
TRANLOGOPTIONS CONVERTUCS2CLOBS
GGSCI(NDSCDB1) 2> add extract dpend,exttrailsource ./dirdat/nd
GGSCI(NDSCDB1) 3> add rmttrail F:\ogg\dirdat\nd, EXTRACT DPEND
GGSCI(NDSCDB1) 4> edit params dpend
SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")
RMTHOST10.122.0.113, MGRPORT 7839, compress
抽取进程和传输进程其实都是EXTRACT进程,也可以配置在一个进程完成这两个功能,但是当网络传输有问题时,这样抽取也就不能继续运行了,所以推荐分开配置为两个进程;
USERID/ PASSWORD:指定OGG连接数据库的用户名和密码,这里使用3.4部分中创建的数据库用户OGG;
TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:
RMTHOST:指定目标系统及其GoldengateManager进程的端口号,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输;
SQLEXEC:在extract进程运行时首先运行一个SQL语句;
PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程;
STATOPTIONS:定义每次使用stat时统计数字是否需要重置;
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
DBOPTIONS:指定对于某种特定数据库所需要的特殊参数;
TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0
WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;
2.6 配置目标数据库
createuser ogg identified by oracle default tablespace DATA_OL;
grantconnect,resource,unlimited tablespace to ogg;
grantexecute on utl_file to ogg;
grantselect any dictionary,select any table to ogg;
grantflashback any table to ogg;
grantexecute on DBMS_FLASHBACK to ogg;
2.7 配置目标端进程组
ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;
SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。
MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;
REPERROR:定义出错以后进程的响应,一般可以定义为两种:
DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。
MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。
2.8 启动进程进行数据同步
启动后使用info all查看进程状态,正常status应该RUNNING,显示如下:
Program Status Group Lag at Chkpt Time Since Chkpt
EXTRACT RUNNING DPEND 00:00:00 00:15:32
EXTRACT RUNNING EXTND 00:00:00 00:00:04
3 RACà单机复制配置
3.1 环境简介
性质 |
IP |
系统 |
ORACLE版本 |
源端 |
10.123.112.201/10.123.112.202 |
linux rhel5 64位 |
10.2.0.1 |
目标端 |
10.123.112.235 |
LINUX rhel5 32位 |
10.2.0.1 |
3.2 源端安装OCFS2集群文件系统
RAC环境中为了实现高可用性,需将OGG安装在集群文件系统中,这样OGG可以访问RAC中的所有节点,我们这里测试采用OCFS2文件系统。
从http://oss.oracle.com下载与LINUX内核相符的OCFS2 RPM包
[root@node1ocfs]# rpm -ivh ocfs2-tools-1.2.7-1.el5.x86_64.rpm \
ocfs2console-1.2.7-1.el5.x86_64.rpm\
ocfs2-2.6.18-92.el5-1.2.9-1.el5.x86_64.rpm
在集群中的所有节点上以 root 用户帐户的身份运行以下命令
export PATH=$PATH:/sbin:/usr/sbin
/etc/init.d/o2cb enable
创建ocfs2文件系统,其中-N选项用于指明最多允许多少个节点同时使用此文件系统:
chown -Roracle:dba /ggate
chmod -R 775 /ggate
3.3 源端安装GoldenGate
在GoldenGate安装目录(OCFS2目录/ggate)解压安装文件
unzipogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip
tar–xvf fbo_ggs_Linux_x64_ora10g_64bit.tar
exportLD_LIBRARY_PATH=$GGATE_HOME:$ORACLE_HOME/lib
执行命令 createsubdirs创建工作目录,显示如下:
GGSCI(node1) 1> create subdirs
Creatingsubdirectories under current directory /ggate
Parameterfiles /ggate/dirprm:already exists
Reportfiles /ggate/dirrpt:created
Checkpointfiles /ggate/dirchk:created
Processstatus files /ggate/dirpcs: created
SQLscript files /ggate/dirsql:created
Databasedefinitions files /ggate/dirdef: created
Extractdata files /ggate/dirdat: created
Temporaryfiles /ggate/dirtmp:created
Stdoutfiles /ggate/dirout:created
3.4 目标端安装GoldenGate
环境相同,安装方法与4.3一致,仅仅是安装位置不同,安装过程略,注意安装包与平台一致。
3.5 配置源端数据库
Alterdatabase add supplemental log data;
使用SELECTSUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
源端数据库创建GoldenGate数据库用户并授权:(我们这里以ogg为例,使用其他亦可)
createuser ogg identified by oracle default tablespace DATA_OL;
grantconnect,resource,unlimited tablespace to ogg;
grantexecute on utl_file to ogg;
grantselect any dictionary,select any table to ogg;
grantflashback any table to ogg;
grantexecute on DBMS_FLASHBACK to ogg;
GGSCI(node1) 1> dblogin userid ogg,password oracle
Successfullylogged into database.
GGSCI(node1) 2> add trandata SCOTT.DEPT
Loggingof supplemental redo data enabled for table SCOTT.DEPT.
GGSCI(node1) 3> add trandata SCOTT.EMP
Loggingof supplemental redo data enabled for table SCOTT.EMP.
3.6 配置源端进程组
GGSCI(node1) 1> edit param mgr
AUTORESTARTEXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3
Program Status Group Lag at Chkpt Time Since Chkpt
GGSCI(node1) 6> add extract extnd,tranlog,begin now,threads 2
GGSCI(node1) 7> add exttrail ./dirdat/nd,extract extnd,megabytes 100
GGSCI(node1) 8> edit params extnd
SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV(ORACLE_HOME = "/u01/app/oracle/product/10.2.0/db_1")
USERID ogg@RAC, PASSWORDoracle
REPORTCOUNTEVERY 1 MINUTES, RATE
DISCARDFILE./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024
--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000
WARNLONGTRANS2h,CHECKINTERVAL 3m
--TRANLOGOPTIONSEXCLUDEUSER USERNAME
TRANLOGOPTIONS CONVERTUCS2CLOBS
注意:threads与RAC节点数相同即可,RAC中不再使用ORACLE_SID设置,而使用USERID ogg@RAC,注意两个节点均可连接数据库。
GGSCI(node1) 2> add extract dpend,exttrailsource ./dirdat/nd
GGSCI(node1) 3> add rmttrail /uo1/app/ogg/dirdat/nd, EXTRACT DPEND
GGSCI(node1) 4> edit params dpend
SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)
USERID ogg@RAC, PASSWORDoracle
RMTHOST10.123.112.235, MGRPORT 7839, compress
RMTTRAIL/uo1/app/ogg/dirdat/nd
3.7 配置目标数据库
createuser ogg identified by oracle default tablespace USERS;
grantconnect,resource,unlimited tablespace to ogg;
grantexecute on utl_file to ogg;
grantselect any dictionary,select any table to ogg;
grantflashback any table to ogg;
grantexecute on DBMS_FLASHBACK to ogg;
GGSCI(sun.linux) 2> edit params GLOBALS
GGSCI(sun.linux) 4> dblogin userid ogg,password oracle
Successfullylogged into database.
GGSCI(sun.linux) 5> add checkpointtable ogg.checkpoint
Successfullycreated checkpoint table ogg.checkpoint.
3.8 配置目标端进程组
GGSCI(sun.linux) 6> edit params mgr
AUTORESTARTEXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3
GGSCI(sun.linux)8> add replicat repnd,exttrail/uo1/app/ogg/dirdat/nd,checkpointtable ogg.checkpoint
GGSCI(sun.linux) 10> edit params repnd
SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)
discardfile./dirrpt/repnd.dsc,append,megabytes 50
3.9 启动进程进行数据同步
启动后使用info all查看进程状态,正常status应该RUNNING,显示如下:
Program Status Group Lag at Chkpt Time Since Chkpt
EXTRACT RUNNING DPEND 00:00:00 00:00:09
EXTRACT RUNNING EXTND 00:00:00 00:00:04
Program Status Group Lag at Chkpt Time Since Chkpt
REPLICAT RUNNING REPND 00:00:00 00:00:03
到此RAC到单点OGG的安装配置就完成了,可以进行数据同步测试了。
4 RACà单机下的HA配置
第4部分的RACà单机的配置仅仅完成了数据复制的功能,不包含高可用的配置,当运行GoldenGate的节点出现故障时复制功能就将终止,如何使复制功能继续可用呢,有如下两种方式:
4.1 节点故障的手工处理方式
4.2 GoldenGate的HA配置
我们可以通过使用CRS来管理GoldenGate资源组,并且使用RAC的vip连接到GoldenGate,一旦数据库的某一个节点宕掉,Oracleclusterware将自动切换到另一个可用节点。
[oracle@node1ggate]$ cd $ORA_CRS_HOME/bin
/u01/app/oracle/product/10.2.0/crs_1/bin
[oracle@node1 bin]$crs_profile –create ggvip –t application \
–a /u01/app/oracle/product/10.2.0/crs_1\
-o oi=eth0,ov=192.168.73.203,on=255.255.255.0
[oracle@node1 bin]$crs_register ggvip
[root@node1 bin]#./crs_setperm ggvip –o root
[root@node1 bin]#./crs_setperm ggvip –u user:oracle:r-x
[oracle@node1bin]$ crs_start ggvip
Attempting tostart `ggvip` on member `node1`
Start of`ggvip` on member `node1` succeeded.
[oracle@node1bin]$ crs_stat ggvip -t
------------------------------------------------------------
ggvip application ONLINE ONLINE node1
action程序我们这里放到共享磁盘上,action程序最少需要可以接受三个参数:start,stop,check
check :返回0表示GoldenGate在运行,1 表示不运行;
#set the OracleGoldengate installation directory
#set the oraclehome to the database to ensure GoldenGate will get the
#rightenvironment settings to be able to connect to the database
exportORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
#specify delayafter start before checking for successful start
#Include theGoldenGate home in the library path to start GGSCI
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:${GGS_HOME}:${LD_LIBRARY_PATH}
#check_processvalidates that a manager process is running at the PID
if ( [ -f"${GGS_HOME}/dirpcs/MGR.pcm" ] )
pid=`cut -f8"${GGS_HOME}/dirpcs/MGR.pcm"`
if [ ${pid} = `ps -e |grep ${pid} |grep mgr|cut -d " " -f2` ]
#manager process is running on the PID exitsuccess
if [ ${pid} = `ps -e |grep ${pid} |grep mgr|cut -d " " -f1` ]
#manager process is running on the PID exitsuccess
#manager process is not running on the PID
#manager is not running because there is noPID file
#call_ggsci isa generic routine that executes a ggsci command
ggsci_output=`${GGS_HOME}/ggsci << EOF
#there is a small delay between issuing thestart manager command
#and the process being spawned on the OS.wait before checking
#check whether manager is running and exitaccordingly
#attempt a clean stop for all non-managerprocesses
#stop manager without (y/n) confirmation
#attempt a clean stop for all non-managerprocesses
#in case there are lingering processes
#stop manager without (y/n) confirmation
#in case there are lingering processes
#stop manager without (y/n) confirmation
[oracle@node1 ggate]$cd $ORA_CRS_HOME/bin
/u01/app/oracle/product/10.2.0/crs_1/bin
[oracle@node1 bin]$crs_profile –create GG_app –t application \
–r ggvip –a/ggate/gg_action.scr –o ci=10
其中:-r ggvip表示ggvip必须在GoldenGate启动之前运行,
-a /ggate/gg_action.scr指定action 脚本的位置,在每个节点必须都可用
[oracle@node1 bin]$crs_register GG_app
[root@node1 bin]#./crs_setperm ggvip –o oracle
[root@node1 bin]#./crs_setperm GG_app –u user:oracle:r-x
[oracle@node1bin]$ crs_start GG_app
Attempting tostart `GG_app` on member `node1`
Start of`GG_app` on member `node1` succeeded.
[oracle@node1bin]$ crs_stat GG_app -t
------------------------------------------------------------
GG_app application ONLINE ONLINE node1
在测试环境中可以使用crs_relocate –fGG_app使它强行漂移:过程显示如下:
------------------------------------------------------------
GG_app application ONLINE ONLINE node1
ggvip application ONLINE ONLINE node1
ora....AC1.srv application ONLINE ONLINE node1
ora....AC2.srv application ONLINE ONLINE node2
ora.RAC.RAC.cs application ONLINE ONLINE node2
ora....C1.inst application ONLINE ONLINE node1
ora....C2.inst application ONLINE ONLINE node2
ora.RAC.db application ONLINE ONLINE node1
ora....E1.lsnr application ONLINE ONLINE node1
ora.node1.gsd application ONLINE ONLINE node1
ora.node1.ons application ONLINE ONLINE node1
ora.node1.vip application ONLINE ONLINE node1
ora....E2.lsnr application ONLINE ONLINE node2
ora.node2.gsd application ONLINE ONLINE node2
ora.node2.ons application ONLINE ONLINE node2
ora.node2.vip application ONLINE ONLINE node2
[oracle@node1 ~]$ crs_relocate -f GG_app
Attempting to stop `GG_app` on member `node1`
Stop of `GG_app` on member `node1` succeeded.
Attempting to stop `ggvip` on member `node1`
Stop of `ggvip` on member `node1` succeeded.
Attempting to start `ggvip` on member `node2`
Start of `ggvip` on member `node2` succeeded.
Attempting to start `GG_app` on member `node2`
Start of `GG_app` on member `node2` succeeded.
------------------------------------------------------------
GG_app application ONLINE ONLINE node2
ggvip application ONLINE ONLINE node2
ora....AC1.srv application ONLINE ONLINE node1
ora....AC2.srv application ONLINE ONLINE node2
ora.RAC.RAC.cs application ONLINE ONLINE node2
ora....C1.inst application ONLINE ONLINE node1
ora....C2.inst application ONLINE ONLINE node2
ora.RAC.db application ONLINE ONLINE node1
ora....E1.lsnr application ONLINE ONLINE node1
ora.node1.gsd application ONLINE ONLINE node1
ora.node1.ons application ONLINE ONLINE node1
ora.node1.vip application ONLINE ONLINE node1
ora....E2.lsnr application ONLINE ONLINE node2
ora.node2.gsd application ONLINE ONLINE node2
ora.node2.ons application ONLINE ONLINE node2
ora.node2.vip application ONLINE ONLINE node2
5 常见错误及解决方法
5.1 OGG-00446
启动源端抽取进程extnd,ggserr.log错误显示如下:
导致原因:早期归档日志被删除或已备份,导致找不到归档日志文件;
测试库可以指定抽取进程从某个时间点开始读取日志,跳过已删除的归档日志文件,命令如下:alterextract extnd,begin 2012-8-16 16:38;
5.2 OGG-01223
启动源端传输进程DPEND,ggserr.log错误显示如下:
在目标端启动startmgr启动进程后,再启动源端的传输进程DPEND,错误消失,文件顺利传输过来了。
5.3 OGG-01224
启动源端传输进程DPEND,ggserr.log错误显示如下:
在目标端机器关闭防火墙后,再启动源端的传输进程DPEND,错误消失,文件顺利传输过来了。
5.4 OGG-01031
启动源端传输进程DPEND,ggserr.log错误显示如下:
2、可能是目标端的trail file出问题了,前滚重新生成一个新的队列文件
或者:alter extract xxx etrollover
5.5 OGG-01154
导致原因:源端更新了分区列,但目标端没有打开行移动,导致更新时报错;
处理方法:SQLPLUS>alter table SCHEMA.TABLENAME enable row movement;
转发一份GoldenGate 配置文档相关推荐
- 转发一份GoldenGate 配置文档,里面有参数说明,值得看
1 GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一. GoldenGate软件是一种基于日志的 ...
- 高性能mysql_「高性能MySQL」十年阿里架构师推荐,这份高性能MySQL文档送给你
MySQL MySQL的概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方 ...
- FortiGate FGCP HA 配置文档
请访问原文链接:https://sysin.org/blog/fortios-fgcp-ha-config/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页:www ...
- oracle12c配置文档,Oracle12C安装配置文档
Oracle12C安装配置文档 Oracle12C安装配置文档 准备软件: 开始安装: 打开从官网下载下来的两个压缩包,进行解压 打开解压好的后缀为2of2的文件夹 找到路径为database下的&q ...
- Java日志框架-Logback手册中文版以及官方配置文档教程
Logback手册中文版:(链接: https://pan.baidu.com/s/1bpMyasR 密码: 6u5c),虽然版本有点旧,但是大体意思差不多,先用中文版了解个大概,然后一切最新的配置以 ...
- nagios配置文档
nagios配置文档 关于nagios Nagios是一款用于系统和网络监控的应用程序.它可以在你设定的条件下对主机和服务进行监控,在状态变差和 变好的时候给出告警信息. Nagios最初被设计为在 ...
- Nginx配置文档具体解释
Nginx的配置文档具体解释.在这儿做个总结,以便以后使用的时间查看. 下面大部分自己整理.部分来自參考 #设置用户 #user nobody; #启动进程数(一般和server的CPU同样) #能 ...
- 我的Debian 8.0 (jessie)配置文档
2019独角兽企业重金招聘Python工程师标准>>> 我的Debian 8.0 (jessie)配置文档 1,添加软件源 su到root用户 vi /etc/apt/sou ...
- Postfix配置文档
环境:RedHat Linux+Postfix+Cyrus-sasl+Dovecot+Stunnel 在安装Linux时,如果选择全部安装的话,Postfix与Dovecot以及Stunnel将会自动 ...
最新文章
- 在一个配置文件中联系多个数据库
- c++计算eigen随笔(10)-数组、矩阵、向量(3)
- textarea回车不换行 小程序_微信小程序商城到底值得不值得开通?
- 磊科路由虚拟服务器设置,磊科路由器虚拟转发服务设置的方法
- 并发服务器模型——单进程服务器
- Math: Fibonacci
- Elasticsearch--高级-分词 安装ik分词---全文检索引擎ElasticSearch工作笔记020
- 使用windows live writer连接CSDN和博客园博客
- angular-route 和soket注意细节点
- capture nx2 安装
- python处理葵花8 netCDF4(nc格式)数据
- 2023年南昌大学电子信息考研考情与难度、参考书及上岸前辈经验
- mysql足球管理系统_基于java的足球队管理系统精选.doc
- hash和history路由的区别
- linux解除用户锁,linux禁用锁定和解除解锁用户账号的方法
- 2021年煤气考试内容及煤气找解析
- ASP.NET Core中如何显示[PII is hidden]的隐藏信息
- Java04--运算符+分支结构+循环
- 学Linux选择什么系统比较好?
- 用友从“新”出发:“新”在哪里?
热门文章
- 手写签名图片处理-Android
- u-boot简单学习笔记(二)——AR9331 uboot.lds分析
- 我的世界java1.16.3村庄种子,我的世界:1.16最神奇的种子,自然生成的石头雕像,基岩能用!...
- b级计算机考试全名叫啥,大专英语B级全称是什么
- c++ progress controll的使用
- Sangfor 实验
- 在软件开发生命周期中使用应用程序验证器
- 第1台电子计算机诞生于一个国家,第一台计算机诞生于什么国家
- ROS小课堂官网、视频以及所有教程文档下载
- GPRS无线通信原理