sql >> Databasteknik >  >> RDS >> Oracle

Viloläge Oracle Tablespace-anteckning

Nej, det finns inget sätt att göra det ur lådan. Jag har kommit runt det tidigare med följande - ganska involverade - tillvägagångssätt:

  1. Skapa din egen kommentar, @TableSpec som har tabellutrymme och andra nödvändiga attribut.
  2. Utöka org.hibernate.cfg.Configuration och åsidosätt getTableMappings() för att returnera dekorerat Table objekt (se nedan).
  3. Utöka org.hibernate.mapping.Table och åsidosätt sqlCreateString() och / eller sqlAlterStrings() för att lägga till tabellutrymmesspecifikation (och ytterligare inställningar om några).
  4. Istället för att använda hbm2ddl-verktyget (eller myruppgift) skriv din egen som skapar din Configuration objekt, bearbeta alla dina klassfiler och samla in och tolka din @TableSpec anteckningar och anropa Configuration.generateSchemaCreationScript() eller generateSchemaUpdateScript() för att generera faktisk DDL.

Som jag sa, ganska involverad :-) Som ett alternativ, om ALLA dina mappade tabeller använder samma tabellutrymme, kan du utöka Oracle-dialekten du använder och åsidosätta getTableTypeString() för att returnera din tablespace spec. Även om detta är ett fult hack (eftersom tableTypeStrings ursprungliga syfte är att tillhandahålla MySQL-motortyp), fungerar det och är säkerligen mycket snabbare och enklare än ovanstående tillvägagångssätt.




  1. Finns det en motsvarighet till sp_getapplock, sp_releaseapplock i oracle

  2. #1139 - Fick felet 'repetition-operator operand invalid' från regexp

  3. SQL-sats för att visa nummer i ord utan att använda någon direkt funktion (oracle)

  4. SQL-prestanda söker efter långa strängar