Objetivo
Use CREATE
SYNONYM
instrução para criar um sinônimo, que é um nome alternativo para uma tabela, modo de exibição, sequência de procedimento armazenado função, pacote, materializado ver, Java esquema de classe de objeto definido pelo usuário, tipo de objeto, ou outro sinônimo.os sinónimos fornecem a independência dos dados e a transparência da localização. Sinónimos permitem que as aplicações funcionem sem modificação, independentemente do usuário que possui a tabela ou vista e independentemente do banco de dados que contém a tabela ou vista. No entanto, sinônimos não são um substituto para privilégios em objetos de banco de dados. Privilégios apropriados devem ser concedidos a um usuário antes que o usuário possa usar o sinônimo.
Você pode consultar os sinônimos nas seguintes instruções DML: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
e LOCK
TABLE
.
pode referir-se a sinónimos nas seguintes declarações DDL: AUDIT
NOAUDIT
GRANT
REVOKE
e COMMENT
.
Ver também:
conceitos de Base de Dados Oracle para informação geral sobre sinónimos
pré-requisitos
para criar um sinónimo privado no seu próprio esquema, deve ter oCREATE
SYNONYM
privilégio do sistema.
para criar um sinónimo privado no esquema de outro utilizador, deve ter o CREATE
ANY
SYNONYM
privilégio do sistema.
Para criar uma PUBLIC
sinônimo, você deve ter o CREATE
PUBLIC
SYNONYM
sistema de privilégio.
a Sintaxe
create_synonym::=
Descrição da ilustração create_synonym.gif
semântica
ou substituir
especificar REPLACE
para recriar o sinónimo se já existir. Use esta cláusula para alterar a definição de um sinônimo existente sem primeiro abandoná-lo.
Restrição na substituição de um sinónimo não pode usar a cláusula REPLACE
para um tipo de sinónimo que tenha quaisquer tabelas dependentes ou tipos de objectos válidos e dependentes definidos pelo utilizador.
público
especificarPUBLIC
para criar um sinónimo público. Sinónimos públicos são acessíveis a todos os usuários. No entanto, cada usuário deve ter privilégios adequados sobre o objeto subjacente, a fim de usar o sinônimo.
ao resolver referências a um objeto, a base de Dados Oracle usa um sinônimo público somente se o objeto não é prefaciado por um esquema e não é seguido por um link de banco de dados.
se omitir esta cláusula, então o sinónimo é privado e está acessível apenas dentro do seu esquema. Um nome de sinônimo privado deve ser único em seu esquema.Notas sobre sinónimos públicos as seguintes notas aplicam-se aos sinónimos públicos:
-
se criar um sinónimo público e este tiver posteriormente tabelas dependentes ou tipos de objectos válidos e definidos pelo utilizador, então não poderá criar outro objecto de base de dados com o mesmo nome que o sinónimo no mesmo esquema que os objectos dependentes.
-
tome cuidado para não criar um sinónimo público com o mesmo nome que um esquema existente. Se você fizer isso, então todas as unidades PL / SQL que usam esse nome serão invalidadas.
schema
especifique o esquema para conter o sinónimo. Se omitir schema
, então a base de Dados Oracle cria o sinónimo no seu próprio esquema. Não é possível indicar um esquema para o sinónimo se tiver indicado PUBLIC
.
sinónimo
indique o nome do sinónimo a criar.
Nota: os sinónimos com mais de 30 bytes podem ser criados e largados. No entanto, a menos que representem um nome Java, eles não trabalharão em nenhum outro comando SQL. Nomes com mais de 30 bytes são transformados em uma string Obscura mais curta para armazenamento no dicionário de dados.
Ver também:
“criar sinónimo: Examples ” and “Oracle Database Resolution of Synonyms: Example”
FOR Clause
Specify the object for which the synonym is created. O objecto schema para o qual está a criar o sinónimo pode ser dos seguintes tipos::
-
Tabela ou objeto de tabela
-
modo de Exibição ou um objeto de exibição
-
na Sequência
-
procedimento Armazenado, função, ou pacote
-
Materialized view
-
classe Java objeto de esquema
-
objeto definido pelo Usuário digitar
-
Sinônimo
O esquema do objeto não precisa de atualmente existir e você não precisa ter privilégios para acessar o objeto.
Restrição na cláusula FOR o objeto schema não pode ser contido em um pacote.
schema especifique o esquema em que o objeto reside. Se você não qualificar objeto com schema
, então a base de dados assume que o objeto schema está em seu próprio esquema.
Se você está criando um sinônimo para um procedimento ou função em uma base de dados remota, então você deve especificar schema
nesta Declaração CREATE
. Alternativamente, você pode criar um sinônimo público local na base de dados onde o objeto reside. No entanto, o link da base de dados deve então ser incluído em todas as chamadas subsequentes para o procedimento ou função.
dblink poderá indicar uma ligação completa ou parcial à base de dados para criar um sinónimo de um objecto schema numa base de dados remota onde o objecto está localizado. Se especificar dblink
e omit schema
, então o sinónimo refere-se a um objecto no esquema especificado pela ligação à base de dados. A Oracle recomenda que você especifique o esquema que contém o objeto na base de dados remota.
se omitir dblink
, então a base de Dados Oracle assume que o objeto está localizado na base de dados local.
restrição nas ligações de bases de dados você não pode especificar dblink
para um sinónimo de classe Java.
Veja Também:
-
“, Referindo-se a Objetos em Bancos de dados Remotos” para obter mais informações sobre referindo-se a links de banco de dados
-
CREATE DATABASE LINK para obter mais informações sobre como criar links de banco de dados
Exemplos
CRIAR SINÔNIMO: Exemplos Para definir o sinônimo offices
para a tabela locations
no esquema hr
, emita a seguinte instrução:
CREATE SYNONYM offices FOR hr.locations;
Para criar uma PUBLIC
sinônimo para o employees
tabela no esquema hr
no remote
banco de dados, você pode emitir a seguinte declaração:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
Um sinônimo podem ter o mesmo nome que o objeto subjacente, desde que o objeto está contido em outro esquema.resolução de sinónimos na Base de Dados Oracle: Example Oracle Database attempts to resolve references to objects at the schema level before resolving them at the PUBLIC
synonym level. For example, the schemas oe
and sh
both contain tables named customers
. In the next example, user SYSTEM
creates a PUBLIC
synonym named customers
for oe.customers
:
CREATE PUBLIC SYNONYM customers FOR oe.customers;
Se o usuário sh
, em seguida, emite a seguinte declaração, em seguida, o banco de dados retorna o número de linhas a partir de sh.customers
:
SELECT COUNT(*) FROM customers;
Para obter a contagem de linhas de oe.customers
, o usuário sh
deve prefácio customers
com o nome do esquema. (The user sh
must have select permission on oe.customers
as well.)
SELECT COUNT(*) FROM oe.customers;
If the user hr
‘s schema does not contain an object named customers
, and if hr
has select permission on oe.customers
, then hr
can access the customers
table in oe
‘s schema by using the public synonym customers
:
SELECT COUNT(*) FROM customers;