Home > Software design >  liquibase.exception.DatabaseException: ORA-01950: no privileges on tablespace 'VMSS_TBS'
liquibase.exception.DatabaseException: ORA-01950: no privileges on tablespace 'VMSS_TBS'

Time:05-21

Initially I was getting this exception while starting my service

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration.liquibase(LiquibaseAutoConfiguration.java:105)

The following method did not exist:

    liquibase.integration.spring.SpringLiquibase.setLiquibaseSchema(Ljava/lang/String;)V

The method's class, liquibase.integration.spring.SpringLiquibase, is available from the following locations:

    jar:file:/C:/Users/ashish/.gradle/caches/modules-2/files-2.1/org.liquibase/liquibase-core/3.5.5/c65051f327382018bd09c30380f25eac96f210da/liquibase-core-3.5.5.jar!/liquibase/integration/spring/SpringLiquibase.class

It was loaded from the following location:

    file:/C:/Users/ashish/.gradle/caches/modules-2/files-2.1/org.liquibase/liquibase-core/3.5.5/c65051f327382018bd09c30380f25eac96f210da/liquibase-core-3.5.5.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of liquibase.integration.spring.SpringLiquibase


My dependencies

buildscript {
dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
    classpath "com.oracle.database.jdbc:ojdbc8:$oracleVersion"
    classpath ("org.liquibase:liquibase-gradle-plugin:1.2.4") 
  }

}

dependencies {
  compile "org.springframework.cloud:spring-cloud-starter-netflix-eureka-client"
  compile "org.springframework.cloud:spring-cloud-starter-netflix-hystrix"
  compile 'org.springframework.boot:spring-boot-configuration-processor'
  compile "org.springframework.boot:spring-boot-starter-validation"
  compile "org.springframework.boot:spring-boot-starter-data-jpa"
  compile "org.liquibase:liquibase-core:3.5.5"
}

I was able to fix this by removing liquibase-core version , like this

compile ("org.liquibase:liquibase-core")

Now when I run my service, this time I am facing privileges issue and not able to figure it out


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is 

liquibase.exception.LockException: liquibase.exception.DatabaseException: ORA-01950: no privileges on tablespace 'VMSS_TBS'
 [Failed SQL: INSERT INTO VMSSTXN.DATABASECHANGELOGLOCK (ID, LOCKED) VALUES (1, 0)]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean

I tried setting grants but that didn't worked for me. Can someone please help me here ?

CodePudding user response:

In the Oracle Docs, this error says:

ORA-01950: no privileges on tablespace 'string'

Cause: User does not have privileges to allocate an extent in the specified tablespace.

Action: Grant the user the appropriate system privileges or grant the user space resource on the tablespace.

According to dba-oracle.com you can solve ORA-01950 by either:

ALTER USER <username> QUOTA 100M ON <tablespace name>

or

GRANT UNLIMITED TABLESPACE TO <username>

And make sure you have been granted Connect, Resources roles because you'll need Create table privileges.

  • Related