목적
사용하는CREATE
SYNONYM
문 동의어를 만들은 다른 이름을 위한 테이블,뷰 시퀀스,절차,저장 기능,패키지,구체화 보기,Java 클래스키체,사용자 정의 개체 유형,또는 다른 동의어.
동의어는 데이터 독립성과 위치 투명성을 모두 제공합니다. 동의어는 허가 응용 프로그램 기능을 수정없이 사용자와 관계없이 소유한 테이블이나 보고에 관계없이 데이터베이스를 보유하고 테이블이나 보기입니다. 그러나 동의어는 데이터베이스 개체에 대한 권한을 대신 할 수 없습니다. 사용자가 동의어를 사용하기 전에 사용자에게 적절한 권한이 부여되어야 합니다.
참조할 수 있습니다 동의어로서 다음과 같은 DML 문SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
,andLOCK
TABLE
.
다음 DDL 문에서 동의어를 참조 할 수 있습니다: AUDIT
NOAUDIT
GRANT
REVOKE
COMMENT
.
see
Oracle 데이터베이스의 개념에 대한 일반적인 내용에 동의어
전제조건
를 만드는 개인의 동의어에 당신의 자신의 스키마에,당신은 당신이 있어야CREATE
SYNONYM
시스템 권한이 있습니다.
를 만드는 개인의 동의어로서 다른 사용자 스키마에,당신은 당신이 있어야CREATE
ANY
SYNONYM
시스템 권한이 있습니다.
만들기PUBLIC
CREATE
PUBLIC
SYNONYM
시스템 권한이 있습니다.
Syntax
create_synonym::=
설명을 따릅니다.gif
의미론
하거나 교체
지정한OR
REPLACE
을 다시 만들어 동의어가면 그것은 이미 있습니다. 이 절을 사용하여 기존 동의어의 정의를 먼저 삭제하지 않고 변경하십시오.
제한 사항 교체에 동의어를 사용할 수 없습니다OR
REPLACE
절 형식에 대한 동의어가 있는 어떤 종속 테이블 또는 의존하는 유효한 사용자 정의체 형식입니다.
PUBLIC
public 동의어를 만들려면PUBLIC
를 지정하십시오. 공개 동의어는 모든 사용자가 액세스 할 수 있습니다. 그러나 각 사용자는 동의어를 사용하기 위해 기본 개체에 대한 적절한 권한을 가져야합니다.
에 대한 참조를 확인할 때는 객체,Oracle 데이터베이스를 사용하여 동의어가 공용하는 경우에만 개체하지 않으로 시작하키고 따르지 않으로 데이터베이스 링크가 있습니다.
이 절을 생략하면 동의어는 비공개이며 해당 스키마 내에서만 액세스 할 수 있습니다. 개인 동의어 이름은 해당 스키마에서 고유해야 합니다.
공용 동의어에 대한 참고 사항 다음 메모가 공용 동의어에 적용됩니다:
-
을 만들 경우 공용 동의어와 그 이후에 의존하는 테이블 또는 의존하는 유효한 사용자 정의 개체 유형을 다음를 만들 수 없습니다 다른 데이터베이스의 목적과 이름이 같은 동과 동일한 스키마에 종속 개체입니다.
-
기존 스키마와 같은 이름의 공용 동의어를 만들지 않도록주의하십시오. 그렇게하면 해당 이름을 사용하는 모든 PL/SQL 단위가 무효화됩니다.
스키마
동의어를 포함 할 스키마를 지정합니다. schema
를 생략하면 Oracle Database 가 자체 스키마에 동의어를 만듭니다. PUBLIC
를 지정한 경우 동의어에 스키마를 지정할 수 없습니다.
동의어
만들 동의어의 이름을 지정합니다.
참고:
30 바이트보다 긴 동의어를 만들고 삭제할 수 있습니다. 그러나 Java 이름을 나타내지 않는 한 다른 SQL 명령에서는 작동하지 않습니다. 30 바이트보다 긴 이름은 데이터 사전에 저장하기위한 모호한 짧은 문자열로 변환됩니다.
참조:
“동의어 만들기: 예제”및”동의어의 Oracle 데이터베이스 확인:예제”
For Class
는 동의어가 생성되는 객체를 지정합니다. 동의어를 만드는 스키마 개체는 다음 유형일 수 있습니다:
-
테이블 또는 개체의 표
-
보거나 객체보기
-
Sequence
-
저장되는 절차,기능, 또는 패키지
-
구체화 보기
-
Java 클래스키체
-
사용자 정의 개체형
-
Synonym
스키마가 객체가 필요없는 현재 존재하고 당신이 필요하지할 수 있는 권한을 가지고 있습니다.
For 절에 대한 제한 스키마 객체는 패키지에 포함될 수 없습니다.
스키마 객체가 상주하는 스키마를 지정합니다. schema
로 개체를 자격을 부여하지 않으면 데이터베이스에서 스키마 개체가 자체 스키마에 있다고 가정합니다.
경우를 만들에 대한 동의어 절차 또는 기능을 원격에서 데이터베이스를 지정해야 합schema
CREATE
문입니다. 또는 개체가 상주하는 데이터베이스에 로컬 공용 동의어를 만들 수 있습니다. 그러나 데이터베이스 링크는 프로 시저 또는 함수에 대한 모든 후속 호출에 포함되어야합니다.
dblink 지정할 수 있는 부분적 또는 완전한 데이터베이스에 대한 링크를 만들에 대한 동의어 스키마에서 객체는 원격 데이터베이스 객체가 있다. 을 지정하는 경우dblink
schema
후 동의어내는 개체에서 스키마에 의해 지정된 데이터베이스 링크가 있습니다. 오라클은 원격 데이터베이스에 개체가 포함 된 스키마를 지정할 것을 권장합니다.
dblink
를 생략하면 Oracle Database 는 객체가 로컬 데이터베이스에 있다고 가정합니다.
제한 데이터베이스 링크에서 Java 클래스 동의어에 대해dblink
를 지정할 수 없습니다.
see
-
“을 참조하면 개체 원격지에서는”데이터베이스에 대한 자세한 내용을 참조 데이터베이스 링크
-
데이터베이스 작성의 링크 만들기에 대한 자세한 정보를 데이터베이스 링크
예
CREATE SYNONYM: 예를 정의 동의어offices
locations
hr
,다음 문을 실행합니다:
CREATE SYNONYM offices FOR hr.locations;
만들기PUBLIC
employees
hr
remote
데이터베이스에,당신은 수 있는 다음 문을 실행합니다.
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
동의어 같은 이름을 가질 수 있습니다 기본 개체를 제공하는 기본 개체에 포함된 또 다른 스키마.
동의어의 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;
경우에는 사용자sh
sh.customers
:
SELECT COUNT(*) FROM customers;
을 검색하의 개수에서 행oe.customers
sh
customers
sh
oe.customers
에 대한 선택 권한이 있어야 합니다.)
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;