热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OGG实用案例(一)oracle同步kafka

01、源库安装ogg      见OGG安装博客02、源库配置oracle环境环境说明:主机角色Ogg版本192.168.192.26源库191004_fbo_ggs_Linux_

01、源库安装ogg

       见OGG 安装 博客

02、源库配置oracle环境

环境说明:

主机

角色

Ogg版本

192.168.192.26

源库

191004_fbo_ggs_Linux_x64_shiphome.zip

192.168.193.221

目标库中间件Kafka

OGG_BigData_Linux_x64_19.1.0.0.5.zip

     01)、创建ogg同步用户

SQL>create tablespace ogg datafile '/u02/oradata/ogg.dbf' size 5000M;

SQL>create user ogg identified by "ogg" default tablespace ogg temporary tablespace TEMP;

 

     02)、权限赋予

GRANT CONNECT TO ogg;

GRANT ALTER ANY TABLE TO ogg;

GRANT ALTER SESSION TO ogg;

GRANT CREATE SESSION TO ogg;

GRANT FLASHBACK ANY TABLE TO ogg;

GRANT SELECT ANY DICTIONARY TO ogg;

GRANT SELECT ANY TABLE TO ogg;

GRANT RESOURCE TO ogg;

GRANT SELECT ANY TRANSACTION TO ogg;

 

     03)、归档模式开启

       已开启则忽略

SQL>archive log list;

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database archivelog;

SQL>alter database open;

SQL>alter system switch logfile;

 

     04)、开启oracle最小附加日志

       Oracle 执行查询语句,确保显示结果为yes

Select force_logging,SUPPLEMENTAL_LOG_DATA_MIN,

 SUPPLEMENTAL_LOG_DATA_PK,

SUPPLEMENTAL_LOG_DATA_UI,

 SUPPLEMENTAL_LOG_DATA_FK,

 SUPPLEMENTAL_LOG_DATA_ALL from v$database;

 

       Min列不为YES则执行开启操作:

alter database add supplemental log data ;

alter system switch logfile;

 

       ALL 列如果开启则关闭

alter database drop supplemental log data (ALL) columns;

 

未成功则执行一下语句关闭:

alter database drop supplemental log data (primary key, unique,foreign key) columns;

alter database drop supplemental log data ;

alter system switch logfile;

 

     05)、开启强制日志模式

alter database force logging;

 

     06)、环境变量配置

Vi /home/oracle/.bash_profile

export OGG_HOME=/home/oracle/app/ogg/

export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/usr/bin

 

03、配置源库ogg环境

     01)、初始化ogg

当前ogg 默认需要安装在oracle 用户下操作。

Su – oracle

. ~/.bash_profile

Cd /home/oracle/app/ogg/

[oracle@hso32-db-test ogg]$ . ~/.bash_profile

[oracle@hso32-db-test ogg]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle

Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO

Linux, x64, 64bit (optimized), Oracle 11g on Oct 17 2019 23:13:12

Operating system character set identified as UTF-8.

 

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

  

 

GGSCI (hso32-db-test) 1> create subdirs

 

Creating subdirectories under current directory /home/oracle/app/ogg

 

Parameter file                 /home/oracle/app/ogg/dirprm: already exists.

Report file                    /home/oracle/app/ogg/dirrpt: already exists.

Checkpoint file                /home/oracle/app/ogg/dirchk: already exists.

Process status files           /home/oracle/app/ogg/dirpcs: already exists.

SQL script files               /home/oracle/app/ogg/dirsql: already exists.

Database definitions files     /home/oracle/app/ogg/dirdef: already exists.

Extract data files             /home/oracle/app/ogg/dirdat: already exists.

Temporary files                /home/oracle/app/ogg/dirtmp: already exists.

Credential store files         /home/oracle/app/ogg/dircrd: already exists.

Masterkey wallet files         /home/oracle/app/ogg/dirwlt: already exists.

Dump files                     /home/oracle/app/ogg/dirdmp: already exists.

 

 

GGSCI (hso32-db-test) 2> exit

 

当前环境配置成功

04、创建源库测试表,测试数据

     01) 、创建测试用户,表

SQL> create user test_ogg identified by oracle ;   

User created.

SQL> grant dba to test_ogg;

Grant succeeded.

SQL> conn test_ogg

Enter password:

Connected.

SQL> create table test_ogg( id int,name varchar(20),primary key(id));

Table created.

02) 、配置Oracle 数据支持脚本

配置squence支持

/home/oracle/app/ogg/下执行

Sqlplus / as  sysdba

@seqence.sql

键入schemas :test_ogg

 

配置支持脚本

SQL> @marker_setup

SQL> @ddl_setup

SQL> @role_setup

SQL> grant GGS_GGSUSER_ROLE to goldengate;

SQL> @ddl_enable

SQL> @marker_status.sql

SQL> @?/rdbms/admin/dbmspool.sql

SQL> @ddl_pin.sql ogg

 

05、配置源库ogg 配置文件

     01)、配置mgr进程

登入ogg

Cd /home/oracle/app/ogg/

./ggsci

GGSCI (hso32-db-test) 1> dblogin userid ogg password ogg;

Successfully logged into database.

GGSCI (hso32-db-test as ogg@hso32) 9> edit param mgr

PORT 7809

DYNAMICPORTLIST  7840-7850

AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3

 

 

Ps:

  PORT即mgr的默认监听端口;

  DYNAMICPORTLIST动态端口列表,当指定的mgr端口不可用时,会在这个端口列表中选择一个,最大指定范围为256个;

  AUTORESTART重启参数设置表示重启所有EXTRACT进程,最多5次,每次间隔3分钟;PURGEOLDEXTRACTS即TRAIL文件的定期清理

     02)、配置ext抽取数据进程

GGSCI (hso32-db-test as ogg@hso32) 11> exit param extkafka

EXTRACT extkafka

dynamicresolution

SETENV (ORACLE_SID="hso32")

SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")

userid ogg,password ogg

EXTTRAIL ./dirdat/to

table test_kingle.oggest;

table test_ogg.test_ogg;

 

 

ps:

  第一行指定extract进程名称;

  dynamicresolution动态解析;

  SETENV设置环境变量,这里分别设置了Oracle数据库以及字符集;

  userid ggs,password ggs即OGG连接Oracle数据库的帐号密码,使用上面创建的账号;

  exttrail定义trail文件的保存位置以及文件名,注意这里文件名只能是2个字母,其余部分OGG会补齐;

  table即复制表的表名,支持*通配,必须以;结尾

     03)、配置push 发送进程

GGSCI (hso32-db-test as ogg@hso32) 11> exit param pukafka

EXTRACT pukafka

passthru

dynamicresolution

userid ogg,password ogg

RMTHOST 10.118.193.223, MGRPORT 7809

RMTTRAIL ./dirdat/to

table test_kingle.oggest;

table test_ogg.test_ogg; 

       ps,

第一行指定extract进程名称;

passthru即禁止OGG与Oracle交互,我们这里使用pump逻辑传输,故禁止即可;dynamicresolution动态解析;

userid ogg,password ogg即OGG连接Oracle数据库的帐号密码rmthost和mgrhost即目标端(kafka)OGG的mgr服务的地址以及监听端口;

rmttrail即目标端trail文件存储位置以及名称。

     04)、加入需要监控的表(下面的所有操作都是基于本次操作进行)

下面包含 linux 同步到windwos 都是基于这个完成,添加监控表至关重要。

GGSCI (hso32-db-test as ogg@hso32) 21> add trandata test_ogg.test_ogg

2021-07-29 09:03:01  INFO    OGG-15132  Logging of supplemental redo data enabled for table TEST_OGG.TEST_OGG.

2021-07-29 09:03:01  INFO    OGG-15133  TRANDATA for scheduling columns has been added on table TEST_OGG.TEST_OGG.

2021-07-29 09:03:01  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table TEST_OGG.TEST_OGG.

GGSCI (hso32-db-test as ogg@hso32) 22> info trandata test_ogg.test_ogg

Logging of supplemental redo log data is enabled for table TEST_OGG.TEST_OGG.

Columns supplementally logged for table TEST_OGG.TEST_OGG: "ID".

Prepared CSN for table TEST_OGG.TEST_OGG: 5982609614988

 

     05)、配置defile 文件

Oracle 到其他数据属于异构操作,需要定义映射关系

GGSCI (hso32-db-test as ogg@hso32) 21>edit param test_ogg

defsfile ./dirdef/ test_ogg.test_ogg

userid ogg,password ogg

table test_ogg. test_ogg

 

生成完成后,选择在ogg主目录下,并且oracle用户下执行

./defgen paramfile dirprm/test_ogg.prm

 

执行成功后没有报错的话,会在./dirdef下面生成一个文件,我们需要把这个文件拷贝到目标库ogg主目录下的diedef目录下即可

06、目标库221配置

     01)、安装 java

       当前环境为绿色版,我直接解压到/usr/local/java 目录下即可,环境根据自己的配置

配置环境变量

Vi ~/.bash_porofile

export ZOO_HOME=/root/ogg/zookeeper/

export KAFKA_HOME=/root/ogg/kafka/

export OGG_HOME=/root/ogg/ogg/

 

export RUN_AS_USER=root

export JAVA_HOME=/usr/local/java/

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin:$ZOO_HOME/bin/:$JAVA_HOME/jre/bin/:$KAFKA_HOME/bin

export LD_LIBRARY_PATH=$OGG_HOME/lib/:/usr/bin:$OGG_HOME/:$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server:$JAVA_HOMEjre/lib/amd64/libjsig.so:$JAVA_HOME/jre/lib/amd64/server/libjvm.so:/usr/lib

     02)、安装 配置zookeeper

       Tar xf apache-zookeeper-3.6.3.tar.gz –C /root/ogg/ zookeeper

       Cd /root/ogg/ zookeeper

       编辑配置文件

  

     [root@RHEL44223 zookeeper]# cat conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/root/ogg/zoo/data

dataLogDir=/root/ogg/zoo/log

clientPort=2181

 

       启动 zoo

Cd /root/ogg/zookeeper/bin

./zkServer.sh start

       启动成功即可

     03)、安装配置kafka

解压kafka

Tar xf kafka_2.12-2.8.0.tgz –c /roo/ogg/kafka

配置kafka配置文件

Cd kafka

Vi config/server.properties

broker.id=0

listeners=PLAINTEXT://10.118.193.223:9092

host.name=10.118.193.223

num.network.threads=3

num.io.threads=8

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

log.dirs=/root/ogg/zoo/kafka-logs

num.partitions=1

num.recovery.threads.per.data.dir=1

offsets.topic.replication.factor=1

transaction.state.log.replication.factor=1

transaction.state.log.min.isr=1

log.retention.hours=168

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

zookeeper.connect=localhost:2181

zookeeper.connection.timeout.ms=18000

group.initial.rebalance.delay.ms=0

 

启动 kafka

kafka-server-start.sh -daemon ./config/server.properties

     04)、安装ogg(root用户即可)

解压ogg

Tar xf OGG_BigData_Linux_x64_19.1.0.0.5.tar –C /root/ogg/ogg/

初始化ogg

Cd /root/ogg/ogg/

./ggsci

[oracle@RHEL44223 ogg]$ ./ggsci

 

Oracle GoldenGate Command Interpreter for Oracle

Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO

Linux, x64, 64bit (optimized), Oracle 11g on Oct 17 2019 23:13:12

Operating system character set identified as UTF-8.

 

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

 

 

 

GGSCI RHEL44223) 1> create subdirs

 

Creating subdirectories under current directory /home/oracle/app/ogg

 

Parameter file                 /home/oracle/app/ogg/dirprm: already exists.

Report file                    /home/oracle/app/ogg/dirrpt: already exists.

Checkpoint file                /home/oracle/app/ogg/dirchk: already exists.

Process status files           /home/oracle/app/ogg/dirpcs: already exists.

SQL script files               /home/oracle/app/ogg/dirsql: already exists.

Database definitions files     /home/oracle/app/ogg/dirdef: already exists.

Extract data files             /home/oracle/app/ogg/dirdat: already exists.

Temporary files                /home/oracle/app/ogg/dirtmp: already exists.

Credential store files         /home/oracle/app/ogg/dircrd: already exists.

Masterkey wallet files         /home/oracle/app/ogg/dirwlt: already exists.

Dump files                     /home/oracle/app/ogg/dirdmp: already exists.

 

 

GGSCI (RHEL44223) 2> exit

05) 配置ogg 配置文件

<01>、配置mgr

GGSCI (RHEL44223) 4> edit param mgr

PORT 7809

DYNAMICPORTLIST  7840-7850

AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3

PURGEOLDEXTRACTS /root/ogg/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3

<02>、配置 应用配置文件

GGSCI (RHEL44223) 5> edit param REKAFKA

REPLICAT rekafka

sourcedefs /root/ogg/ogg/dirdef/test_kingle.oggtest

TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props

REPORTCOUNT EVERY 1 MINUTES,RATE

GROUPTRANSOPS 10000

MAP test_kingle.oggtest,TARGET test_kingle.oggtest;

MAP test_ogg.test_ogg,TARGET test_ogg.test_ogg;

REPLICATE rekafka定义rep进程名称;

sourcedefs即在4.6中在源服务器上做的表映射文件;

TARGETDB LIBFILE即定义kafka一些适配性的库文件以及配置文件,配置文件位于OGG主目录下的dirprm/kafka.props;

REPORTCOUNT即复制任务的报告生成频率;

GROUPTRANSOPS为以事务传输时,事务合并的单位,减少IO操作;MAP即源端与目标端的映射关系

<03>、配置checkpoint

GGSCI (RHEL44223) 5>Edit param ./GLOBALS

checkpointtable test_kingle.checkpoint

<04>、配置kafka 控制文件

Cd /root/ogg/ogg/dirprm

[root@RHEL44223 dirprm]# cat rekafka.prm

REPLICAT rekafka

sourcedefs /root/ogg/ogg/dirdef/test_kingle.oggtest

TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props

REPORTCOUNT EVERY 1 MINUTES,RATE

GROUPTRANSOPS 10000

MAP test_kingle.oggtest,TARGET test_kingle.oggtest;

MAP test_ogg.test_ogg,TARGET test_ogg.test_ogg;

[root@RHEL44223 dirprm]# cat custom_kafka_producer.properties

bootstrap.servers=10.118.193.223:9092

acks=1

compression.type=gzip

reconnect.backoff.ms=1000

value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer

key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer

batch.size=102400

linger.ms=10000

[root@RHEL44223 dirprm]#、

06) 、创建kafka主题

查看主题有哪些

kafka-topics.sh --list --zookeeper localhost:2181

创建主题testogg

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testogg

再次查看是否存在

kafka-topics.sh --list --zookeeper localhost:2181

07、26同步221进程启动配置

     01)、源库26 ogg 操作

       通过上面编辑的配置文件添加进程,配置操作都是是使用的相对路径,注意自己的环境是不是一直。

Cd /home/oracle/app/ogg/

GGSCI (hso32-db-test) 1> dblogin userid ogg password ogg;

Successfully logged into database.

GSCI (hso32-db-test as ogg@hso32) 41> add extract extkafka,tranlog,begin now

EXTRACT added.

GGSCI (hso32-db-test as ogg@hso32) 42> add exttrail ./dirdat/to,extract extkafka

EXTTRAIL added.

GGSCI (hso32-db-test as ogg@hso32) 43> edit param pukafka

GGSCI (hso32-db-test as ogg@hso32) 44> add extract pukafka,exttrailsource ./dirdat/to

EXTRACT added.

GGSCI (hso32-db-test as ogg@hso32) 45> add rmttrail ./dirdat/to,extract pukafka

RMTTRAIL added.

     02)、目标库221 添加进程

       通过刚刚编辑的配置文件配置进程

GGSCI (RHEL44223) 5> add replicat rekafka exttrail ./dirdat/to,checkpointtable test_kingle.checkpoint

       所有配置完成后,进程启动

     03)、启动同步进程

       进程启动注意事项,一定要遵守启动顺序,方式获取不到数据

启动1:源库mgr 启动

 Start mgr

启动2:目标库mgr 启动

Start mgr

启动3:源库ext和pu 进程

Start extkafka

Start pukafka

启动4:目标库

Start REKAFKA
Info all

查看启动进程状态

等待启动成功后查看kafka消息队列

[root@RHEL44223 ogg]# kafka-console-consumer.sh --bootstrap-server 10.118.193.223:9092  --topic testogg --from-beginning

{"table":"TEST_OGG.TEST_OGG","op_type":"I","op_ts":"2021-07-29 09:15:58.595966","current_ts":"2021-07-29T10:18:15.963000","pos":"00000000020000002057","after":{"ID":1,"NAME":"1"}}

{"table":"TEST_OGG.TEST_OGG","op_type":"I","op_ts":"2021-07-29 09:15:58.595966","current_ts":"2021-07-29T10:18:16.295000","pos":"00000000020000002191","after":{"ID":2,"NAME":"1"}}

 

 

源库模拟测试插入的时候看是否会有数据出来,如果没有出现可以查看相应日志文件

Ogg 日志文件 在ogg目录下ggserrot.log

或者命令行查看

View report rekafka

后面跟随为进程名称 可以通过info all 打印出来 group 列就是了。

 


推荐阅读
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 在Kohana 3框架中,实现最优的即时消息显示方法是许多开发者关注的问题。本文将探讨如何高效、优雅地展示flash消息,包括最佳实践和技术细节,以提升用户体验和代码可维护性。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • 第六章:枚举类型与switch结构的应用分析
    第六章深入探讨了枚举类型与 `switch` 结构在编程中的应用。枚举类型(`enum`)是一种将一组相关常量组织在一起的数据类型,广泛存在于多种编程语言中。例如,在 Cocoa 框架中,处理文本对齐时常用 `NSTextAlignment` 枚举来表示不同的对齐方式。通过结合 `switch` 结构,可以更清晰、高效地实现基于枚举值的逻辑分支,提高代码的可读性和维护性。 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • 本文详细探讨了在ASP.NET环境中通过加密数据库连接字符串来提升数据安全性的方法。加密技术不仅能够有效防止敏感信息泄露,还能增强应用程序的整体安全性。文中介绍了多种加密手段及其实施步骤,帮助开发者在日常开发过程中更好地保护数据库连接信息,确保数据传输的安全可靠。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
author-avatar
吴小彬x
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有