>  기사  >  데이터 베이스  >  오라클의 스키마란 무엇입니까?

오라클의 스키마란 무엇입니까?

WBOY
WBOY원래의
2022-05-09 10:34:1810598검색

Oracle에서 스키마는 데이터베이스 개체의 집합이며 Oracle 사용자는 스키마에 해당하며 스키마는 사용자를 생성해야만 생성할 수 있습니다. name 은 사용자 이름과 일치합니다.

오라클의 스키마란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

oracle의 스키마란 무엇입니까

먼저 정의를 살펴보겠습니다.

스키마는 사용자가 사용하는 데이터베이스 개체의 모음입니다.

스키마 개체는 데이터베이스 개체를 직접 참조하는 논리적 구조입니다. 데이터베이스의 데이터입니다.

사용자는 개체에 연결하고 액세스할 수 있는 데이터베이스에 정의된 이름입니다.

스키마와 사용자는 데이터베이스 관리자가 데이터베이스 보안을 관리하는 데 도움이 됩니다.

정의에서 스키마는 개체의 모음임을 알 수 있습니다. 각 컬렉션을 구별하려면 이 컬렉션에 이름을 지정해야 합니다. 이러한 이름은 Enterprise Manager 솔루션에서 볼 수 있는 사용자 이름과 유사한 노드이며 실제로는 스키마에 다양한 개체가 포함되어 있습니다. 테이블, 뷰, 시퀀스, 저장 프로시저, 동의어, 인덱스, 클러스터, 데이터베이스 링크 등이 있습니다.

사용자는 일반적으로 스키마에 해당합니다. 사용자의 스키마 이름은 사용자 이름과 동일하며 사용자의 기본 스키마 역할을 합니다. 이것이 바로 스키마 이름이 Enterprise Manager 체계에 따른 모든 데이터베이스 사용자 이름임을 알 수 있는 이유입니다. Oracle 데이터베이스에서는 새 스키마를 생성할 수 없습니다. 스키마를 생성하려면 사용자를 생성해야만 해결할 수 있습니다. (오라클에는 스키마 생성 문이 있지만 사용자 생성 시에는 사용되지 않습니다.) 동시에 이 사용자에 대해 사용자 이름과 동일한 이름을 가진 스키마가 생성되어 사용자의 기본 스키마로 사용됩니다. 즉, 스키마의 개수와 사용자의 개수가 같고, 스키마 이름이 사용자 이름과 일대일로 대응하여 동일하기 때문에 스키마를 사용자의 별칭이라고 부를 수는 있습니다. 정확하지는 않지만 이해하기 쉽습니다.

사용자에게는 기본 스키마가 있으며 해당 스키마 이름은 사용자 이름과 동일합니다. 물론 사용자는 다른 스키마를 사용할 수도 있습니다. 테이블이 속한 스키마를 지정하지 않고 테이블에 액세스하면 시스템은 자동으로 기본 sheman 이름을 테이블에 추가합니다. 예를 들어, 데이터베이스에 액세스할 때 select * from emp를 통해 scott 사용자 아래의 emp 테이블에 액세스합니다. 실제로 이 SQL 문을 작성하는 완전한 방법은 select * from scott.emp입니다. 데이터베이스에 있는 개체의 전체 이름은 user.object가 아니라 Schema.object입니다. 객체를 생성할 때 객체의 스키마를 지정하지 않으면 객체의 스키마가 사용자의 기본 스키마가 되는 것과 유사합니다. 이는 사용자가 기본 테이블스페이스를 갖는 것과 같지만 사용자가 다른 테이블스페이스를 사용할 수도 있습니다. 객체를 생성할 때 테이블스페이스를 지정하지 않으면 객체를 원할 경우 해당 객체가 기본 테이블스페이스에 저장됩니다. 다른 테이블스페이스에 저장하려면 객체 생성 시 해당 객체의 테이블스페이스를 지정해야 합니다.

에헴, 말이 너무 많아서 예를 하나 들어보겠습니다. 그렇지 않으면 모든 것이 지루할 것입니다!

SQL> Gruant dba to scott
SQL> create table test(name char(10));
Table created.
SQL> create table system.test(name char(10));
Table created.
SQL> insert into test values('scott'); 
1 row created.
SQL> insert into system.test values('system');
1 row created.
SQL> commit;
Commit complete.
SQL> conn system/manager
Connected.
SQL> select * from test;
NAME
----------
system
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
Session altered.
SQL> select * from test;
NAME
----------
scott
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
OWNER TABLE_NAME
------------------------------ ------------------------------
SCOTT TEST
SYSTEM TEST

--위 쿼리는 스키마를 사용자 별칭으로 사용하는 기초입니다. 실제로 shcema는 user와 완전히 동일하며, 스키마 이름이 나타나는 곳에 사용자 이름도 나타날 수 있습니다.

추천 튜토리얼: "Oracle Video Tutorial"

위 내용은 오라클의 스키마란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.