hibernate (grails) mit Oracle-11g - Unzureichende Privilegien
Bin ich mit Grails 1.3.4, verwendet Hibernate, gegen eine Oracle 11g Datenbank. Meine Anwendung nicht auf Start, mit der folgenden Fehlermeldung:
2010-11-04 09:45:34,671 INFO [grails.spring.BeanBuilder] [RuntimeConfiguration] Configuring data source for environment: TEST
2010-11-04 09:45:36,812 ERROR [org.hibernate.util.JDBCExceptionReporter] ORA-01031: insufficient privileges
2010-11-04 09:45:36,812 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] could not complete schema update
org.hibernate.exception.SQLGrammarException: could not get table metadata: MY_TABLE
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
Wenn ich, fügen Sie den folgenden in Oracle, um meine Datenbank-Benutzer Rolle, es funktioniert. Aber, meine DBA-Staaten in der Produktion, er wird nicht gewähren, ALLES zu ANALYSIEREN, weil es nicht mehr gebraucht wird in 11G, und es vermasselt seinen Statistiken. Was ist die Auflösung?
GRANT ANALYZE ANY to APP_USER_ROLE;
Mehr setup info unter:
Grails-DataSource.groovy
dataSource {
driverClassName = "oracle.jdbc.driver.OracleDriver"
username = "APP_USER"
password = "APP_USER_PASS"
dbCreate = "update"
url = "jdbc:oracle:thin:@MY_servername:1521:MY_SCHEMANAME"
dialect="org.hibernate.dialect.Oracle10gDialect"
}
hibernate {
default_schema="WEBSYS"
}
Grails-domain-Objekt mit Hilfe der Tabelle:
static mapping = {
table 'MY_TABLE'
id generator:'sequence',params:[sequence:'MY_SEQ']
}
Oracle Benutzer und Rollen einrichten:
CREATE ROLE APP_USER_ROLE NOT IDENTIFIED;
GRANT QUERY REWRITE TO APP_USER_ROLE;
GRANT CREATE SESSION TO APP_USER_ROLE;
GRANT GLOBAL QUERY REWRITE TO APP_USER_ROLE;
GRANT APP_USER_ROLE TO APP_USER;
CREATE USER APP_USER
IDENTIFIED BY APP_USER_PASS
DEFAULT TABLESPACE APPL_DATA
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
GRANT APP_USER_ROLE TO APP_USER;
ALTER USER APP_USER DEFAULT ROLE ALL;
ALTER USER APP_USER QUOTA UNLIMITED ON APPL_DATA;
GRANT SELECT,UPDATE,DELETE,INSERT ON MYSCHEMA.MY_TABLE to APP_USER_ROLE;
GRANT SELECT ON MYSCHEMA.MY_SEQ to APP_USER_ROLE;
InformationsquelleAutor snowmanjack | 2010-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grails wahrscheinlich braucht diese Berechtigung, um zu bestimmen, ob änderungen vorgenommen wurden, um domain-Objekte, die nicht reflektiert in der schema.
Brauchen Sie grails update des production-Schemas automatisch? Wenn nicht, versuchen Sie es entfernen
dbCreate = "update"
für die Produktionsumgebung.InformationsquelleAutor ataylor