Liquibase generateChangeLog Failed: Java heap space

社会主义新天地 提交于 2019-12-12 12:02:03

问题


When I try to generate SQL data from a DB2 database, I am getting Java Heap space issue. There are around 25 tables with approx 1000 records.

I use the below scripts in generating the changeset data:

C:\liquibase-3.0.2-bin>liquibase --driver=com.ibm.db2.jcc.DB2Driver \
--classpath="C:\db2jcc.jar" \
--changeLogFile="C:\Liquibase Release\liqui_MYDB_MYSCHEMA_Data.xml" \
--url="jdbc:db2://__ip__here__:9008/MYDB" \
--username="user" \
--password="12345" \
--defaultSchemaName="MYSCHEMA" \
--diffTypes=data  \
generateChangeLog

I tried to increase the memory by setting JAVA_OPTS in liquibase.bat file, but this did not yield any solution:

  • set JAVA_OPTS="-XX:MaxPermSize=1024m"
  • set JAVA_OPTS="-Xms512m -Xmx1024m"

回答1:


You shouldn't be running into MaxPermSize, so just setting a larger Xmx flag should be all that is needed.

It may also help to add the --dataOutputDirectory=DIR_YOU_WANT flag. That will cause Liquibase to output the data in CSV files which will be less mmemory intensive to create. The resulting XML+CSV is usually more manageable than a huge XML file as well

Something like:

C:\liquibase-3.0.2-bin>liquibase \ 
--driver=com.ibm.db2.jcc.DB2Driver \ 
--classpat h="C:\db2jcc.jar" \ 
--changeLogFile="C:\Liquibase Release\liqui_MYDB_MYSCHEMA_Data.xml" \ 
--url="jdbc:db2://__ip__here__:9008/MYDB" \ 
--username="user" \ 
--password="12345" \ 
--defaultSchemaName="MYSCHEMA" \ 
--diffTypes=data \ 
--dataOutputDirectory=C:\Liquibase Release\liqui_MYDB_MYSCHEMA_Data.out \ 
generateChangeLog


来源:https://stackoverflow.com/questions/18664571/liquibase-generatechangelog-failed-java-heap-space

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!