Cuándo calificar el nombre del esquema de un objeto en Oracle -- sql campo con oracle campo con schema camp Relacionados El problema

When to qualify the schema name of an object in Oracle


5
vote

problema

Español

¿Qué determina si se requiere un objeto Oracle (tabla, vista, etc.) para que esté calificado con un nombre de esquema (por ejemplo, schema.table_name, o schema.view_name, etc.)? A veces, puedo acceder a un objeto remoto (a través de un enlace DB) sin tener que calificar el esquema, pero otras veces, recibo un error que indica que la "tabla o vista no existe", y para corregir esto, i debe calificar el nombre del esquema.

Soy consciente de que es una mejor práctica para calificar siempre un nombre de esquema, pero solo soy curioso por qué puedo acceder a ciertos objetos remotos sin un esquema calificado, y otros solo con un esquema calificado.

Original en ingles

What determines whether an Oracle object (table, view, etc.) is required to be qualified with a schema name (for example, schema.table_name, or schema.view_name, etc.)? At times I am able to access a remote objects (via a DB link) without having to qualify the schema, but other times, I receive an error stating that the "table or view doesn't exist", and to correct this, I must qualify the schema name.

I am aware that it is a best practice to always qualify a schema name, but I am just curious why I am able to access certain remote objects without a qualified schema, and others only with a qualified schema.

        
 
 

Lista de respuestas

11
 
vote

de la documentación de Oracle: http://download.oracle.com/docs/cd /B14117_01/server.101/b10759/sql_elements009.htm

El siguiente ejemplo ilustra cómo Oracle resuelve las referencias a los objetos dentro de las declaraciones SQL. Considere esta declaración que agregue una fila de datos a una tabla identificada por los departamentos de nombre:

  INSERT INTO departments  VALUES  (  280,   'ENTERTAINMENT_CLERK',   206,   1700);   

Basado en el contexto de la declaración, Oracle determina que los departamentos pueden ser:

  • una tabla en su propio esquema
  • una vista en su propio esquema
  • Un sinónimo privado para una mesa o vista
  • Un sinónimo público

Oracle siempre intenta resolver una referencia de objeto dentro de los espacios de nombres en su propio esquema antes de considerar los espacios de nombres fuera de su esquema. En este ejemplo, Oracle intenta resolver los departamentos de nombres de la siguiente manera:

  1. Primero, Oracle intenta localizar el objeto en el espacio de nombres en su propio esquema que contiene tablas, vistas y sinónimos privados. Si el objeto es un sinónimo privado, luego Oracle localiza el objeto para el que se encuentra el sinónimo. Este objeto podría estar en su propio esquema, otro esquema o en otra base de datos. El objeto también podría ser otro sinónimo, en cuyo caso Oracle localiza el objeto para el que se encuentra este sinónimo.

  2. Si el objeto está en el espacio de nombres, entonces Oracle intenta realizar la declaración en el objeto. En este ejemplo, Oracle intenta agregar la fila de datos a los departamentos. Si el objeto no es del tipo correcto para la declaración, Oracle devuelve un error. En este ejemplo, los departamentos deben ser una tabla, vista o un sinónimo privado que se resuelva a una tabla o vista. Si los departamentos son una secuencia, entonces Oracle devuelve un error.

  3. Si el objeto no está en ningún espacio de nombres buscado hasta ahora, entonces Oracle busca en el espacio de nombres que contiene sinónimos públicos. Si el objeto está en ese espacio de nombres, entonces Oracle intenta realizar la declaración en ella. Si el objeto no es del tipo correcto para la declaración, Oracle devuelve un error. En este ejemplo, si los departamentos son un sinónimo público para una secuencia, entonces Oracle devuelve un error.

Lo que está diciendo es que Oracle revisará localmente los objetos que llama antes de expandir su búsqueda hacia afuera. Bien puede ser que haya un sinónimos público (o su propio privado) en algunos de sus objetos remotos que le permiten hacer referencia directamente, mientras que los sinónimos tendrás que calificar completamente.

 

From the Oracle documentation: http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/sql_elements009.htm

The following example illustrates how Oracle resolves references to objects within SQL statements. Consider this statement that adds a row of data to a table identified by the name departments:

INSERT INTO departments  VALUES  (  280,   'ENTERTAINMENT_CLERK',   206,   1700); 

Based on the context of the statement, Oracle determines that departments can be:

  • A table in your own schema
  • A view in your own schema
  • A private synonym for a table or view
  • A public synonym

Oracle always attempts to resolve an object reference within the namespaces in your own schema before considering namespaces outside your schema. In this example, Oracle attempts to resolve the name departments as follows:

  1. First, Oracle attempts to locate the object in the namespace in your own schema containing tables, views, and private synonyms. If the object is a private synonym, then Oracle locates the object for which the synonym stands. This object could be in your own schema, another schema, or on another database. The object could also be another synonym, in which case Oracle locates the object for which this synonym stands.

  2. If the object is in the namespace, then Oracle attempts to perform the statement on the object. In this example, Oracle attempts to add the row of data to departments. If the object is not of the correct type for the statement, then Oracle returns an error. In this example, departments must be a table, view, or a private synonym resolving to a table or view. If departments is a sequence, then Oracle returns an error.

  3. If the object is not in any namespace searched in thus far, then Oracle searches the namespace containing public synonyms. If the object is in that namespace, then Oracle attempts to perform the statement on it. If the object is not of the correct type for the statement, then Oracle returns an error. In this example, if departments is a public synonym for a sequence, then Oracle returns an error.

What it's saying is that Oracle will check locally for objects you call before expanding its search outwards. It may well be that there are public (or your own private) synonyms on some of your remote objects allowing you to reference them directly whereas those without the synonyms you'll have to fully qualify.

 
 
   
   
0
 
vote

Depende de qué nombre de usuario ha utilizado cuando inició sesión. O qué nombre de usuario se usó cuando se creó / configuró el enlace de la base de datos.

ver, para cada esquema, hay un usuario. Si inicia sesión como usuario "XYZ", entonces no necesita calificar el objeto dentro del esquema "XYZ".

 

It depends on what username have you used when you logged in. Or what username was used when the database link was created/configured.

See, for each schema, there is a user. If you logged in as a user "XYZ", then you do not need to qualify object within the "XYZ" schema.

 
 

Relacionados problema

1  Mejores prácticas para uso mixto de RDBMS y archivos en sistema de archivos  ( Best practices for mixed usage of rdbms and files on filesystem ) 
En una de las tablas en el esquema en el que estoy trabajando, necesito lidiar con un par de miles de miles de "hojas de datos", que en su mayoría documentos ...

3  La mejor manera de fusionar y deshacerse de los objetos sin perder datos  ( Best way to merge and unmerge objects without losing data ) 
Di que tengo dos tablas (estoy usando Django, pero esta pregunta es en su mayoría agnóstico del idioma): Organization(models.Model): name = models.Char...

7  ¿Alguna buena herramienta de comparación de esquemas de bases de datos SQL en cualquier lugar?  ( Any good sql anywhere database schema comparison tools ) 
¿Hay herramientas de comparación de esquemas de buena base de datos que admiten Sybase SQL en cualquier lugar de la versión 10? He visto una letanía de ellos ...

3  No se puede encontrar la Declaración de 'Asignaciones' del elemento  ( Cannot find the declaration of element assignments ) 
Así que estoy comenzando con XML y Schemas y corrí a través de esto hoy y no he podido resolverlo. Estoy recibiendo y error que dice, ln 5 col 2: no pued...

1  Generando las migraciones de las actualizaciones de esquema de rieles, en lugar de al revés  ( Generating migrations from rails schema updates instead of the other way around ) 
Odio la escritura de migraciones, pero es importante que los esquemas se mantengan en sincronización. Lo que prefiero hacer es actualizar mi schema.rb y ten...

4  Mondrian no puede encontrar esquema en VFS cuando se usa en una aplicación webApple  ( Mondrian cant find schema in vfs when used in a webapp ) 
Tengo una aplicación web que estoy tratando de usar Mondrian dentro. Y estoy obteniendo la siguiente excepción cuando intento abrir una conexión: Caused by...

32  Normalización de los colores de la piel humana para la interacción del usuario  ( Normalizing human skin colors for user interaction ) 
Hace un tiempo me encontré con esta respuesta < / a> que me presentó al oscurecido (al menos para mí) ISO 5218 : un estándar para representar sexos humanos...

0  Simplificación de los inicios de sesión / propietarios / esquemas / esquemas / roles / directores, etc  ( Simplifying sql servers logins owners schemas roles principals etc ) 
Con frecuencia desarrollo pequeñas aplicaciones de Internet usando ASP.NET y SQL Server 2005. Mis bases de datos siempre se accede solo por una aplicación a t...

1  ¿Cómo uso los fragmentos de código PostgreSQL?  ( How do i use postgresql code snippets ) 
Estoy tratando de encontrar una manera de copiar un esquema bajo un nombre diferente. Hay muchos para hacer esto. Una forma es trabajar en la línea de com...

9  Cómo comparar los esquemas de la base de datos MySQL [CERRADO]  ( How to compare mysql database schemas ) 
cerrado. Esta pregunta es off-topic . Actualmente no está aceptando respuestas. ¿Quieres ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos