Hi,
I’m experimenting with using liquibase on the command line in conjunction with oracle 10 on RHEL5 linux. I have a largish database (3Gb) from which I’m trying to export the data as below. Liquibase runs out of heap space. The first time I tried it I saw java using 8Gb in top. Even if set the max heap sapce to 20Gb it still complains and the output file remains empty. Is this a bug? If not, Is there a way to tell it not to keep everything in memory?
Regards,
Bruce.
export CLASSPATH=/opt/instantclient_10_2/ojdbc14.jar:/opt/instantclient_10_2/classes12.jar:$CLASSPATH
export JAVA=/usr/java/jdk1.6.0_10/bin/java
export JAVAOPTS="-Xms1024m -Xmx20000m"
/usr/bin/time -p sh ./liquibase <br> --username=xxxxx --password=xxxxx <br> --url=jdbc:oracle:thin:@ <br> --classpath=$CLASSPATH <br> --driver=oracle.jdbc.OracleDriver <br> --changeLogFile=comtel2data.xml <br> --diffTypes=“data” <br> generateChangelog <br>
INFO 4/18/11 11:47 AM:liquibase: Reading tables for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: Reading views for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: Reading foreign keys for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: Reading primary keys for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: Reading columns for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: Reading unique constraints for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: Reading indexes for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: Reading sequences for BRUCEA @ jdbc:oracle:thin:@uktnswg-comtel-test01:1521:COMTEL2 …
INFO 4/18/11 11:47 AM:liquibase: comtel2data.xml does not exist, creating
Liquibase Update Failed: Java heap space
SEVERE 4/18/11 11:52 AM:liquibase: Java heap space
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3209)
at java.lang.String.(String.java:216)
at oracle.jdbc.driver.CharCommonAccessor.getString(CharCommonAccessor.java:385)
at oracle.jdbc.driver.T4CVarcharAccessor.getString(T4CVarcharAccessor.java:416)
at oracle.jdbc.driver.CharCommonAccessor.getObject(CharCommonAccessor.java:688)
at oracle.jdbc.driver.T4CVarcharAccessor.getObject(T4CVarcharAccessor.java:430)
at oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java:921)
at liquibase.util.JdbcUtils.getResultSetValue(JdbcUtils.java:79)
at liquibase.executor.jvm.ColumnMapRowMapper.getColumnValue(ColumnMapRowMapper.java:70)
at liquibase.executor.jvm.ColumnMapRowMapper.mapRow(ColumnMapRowMapper.java:32)
at liquibase.executor.jvm.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:71)
at liquibase.executor.jvm.JdbcExecutor$1QueryStatementCallback.doInStatement(JdbcExecutor.java:131)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)
at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:143)
at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:151)
at liquibase.executor.jvm.JdbcExecutor.queryForList(JdbcExecutor.java:203)
at liquibase.executor.jvm.JdbcExecutor.queryForList(JdbcExecutor.java:198)
at liquibase.diff.DiffResult.addInsertDataChanges(DiffResult.java:998)
at liquibase.diff.DiffResult.printChangeLog(DiffResult.java:494)
at liquibase.diff.DiffResult.printChangeLog(DiffResult.java:421)
at liquibase.diff.DiffResult.printChangeLog(DiffResult.java:406)
at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:151)
at liquibase.integration.commandline.Main.doMigration(Main.java:624)
at liquibase.integration.commandline.Main.main(Main.java:116)