Soy un iniciado en el mundo de las bases de datos Oracle. Estoy construyendo una serie de reports y necesito entender la relación entre base de datos, instancia y tablespace.
Te comento la relación estaré ellas desde el punto de vista de Oracle, no desde el punto de vista relacional (el concepto de base de datos relacionalmente es lo que en Oracle se conoce como esquema, más o menos). Bueno, tablespace es una asociación lógica (y esto es importante) de objetos en Oracle, estos objetos pueden ser tablas, vistas, indices, secuencias... etc. Todos los objetos en Oracle deben pertenecer a un tablespace. No me lo has preguntado pero aprovecho y te comento que un ts esta formado por uno o varios ficheros físicos (es decir, creas un ts con dos ficheros en una ruta y si vas a esa ruta a nivel de S.O. ahí están esos dos ficheros). Una base de datos en oracle es el conjunto de ficheros de datos, ficheros de control y ficheros de redo log (todos son ficheros físicos). Una instancia es un poco más compleja, es, por así decirlo, la parte de Memoria de Oracle, es decir, todo los buffer, la cache... etc. Cuando intentas levantar la instancia Oracle el lee el fichero init<sid>. Ora (sid=nombre de la instancia) y de allí lee los parámetros a ejecutar (número de procesos servidor, numero máximo de conexiones, numero de conexiones por defecto.. etc) y crea el proceso oracle.exe en memoria. Además lee los fiheros de control que tu le indicas y en estos esta la información de la base de datos, como los nombres de los ficheros, los tablespaces... etc. Entonces una instancia se asocia a una base de datos y solo a una. Una base de datos puede pertenecer a más de una instancia en entornos cluster, pero siempre que las maquinas compartan los ficheros. Espero que te haya quedado claro, sino, dime que y te lo intento explicar mejor.