Liquibase generateChangeLog Failed: Java heap space



当我尝试从 DB2 数据库生成 SQL 数据时,遇到了 Java 堆空间问题。大约有 25 张表,大约有 1000 条记录。

我使用以下脚本生成变更集数据:

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

我试图通过在 liquibase .bat 文件中设置JAVA_OPTS来增加内存,但这并没有产生任何解决方案:

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

你不应该遇到MaxPermSize,所以只需要设置一个更大的Xmx标志。

添加 --dataOutputDirectory=DIR_YOU_WANT 标志也可能有所帮助。这将导致Liquibase以CSV文件的形式输出数据,这将减少创建mmemory密集型。生成的 XML+CSV 通常也比大型 XML 文件更易于管理

像这样:

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

此外,您可以直接调用 jar 文件,在这种情况下,您只需添加 -Xmx2g 属性即可。 -Xmx2g - 2千兆字节内存

换句话说:

C:liquibase-3.0.2-bin>java -Xmx2g -jar liquibase.jar  
--classpath h="C:db2jcc.jar"  
--changeLogFile="C:Liquibase Releaseliqui_MYDB_MYSCHEMA_Data.xml"  
--url="jdbc:db2://__ip__here__:9008/MYDB"  
--username="user"  
--password="12345"  
--defaultSchemaName="MYSCHEMA"  
--diffTypes=data  
--dataOutputDirectory=C:Liquibase Releaseliqui_MYDB_MYSCHEMA_Data.out  
generateChangeLog

此外,您可能会收到有关数据库驱动程序的错误,因此您应该添加类似 --driver=com.ibm.db2.jcc.DB2Driver (用于 oracle)

相关内容

  • 没有找到相关文章

最新更新