2014-04-03 1 views
3

SQL 서버와 오라클 용어 -SQL Server와 Oracle 용어

enter image description here

SQL 서버에서 enter image description here

나는이 응용 프로그램을 완전히 별도의 데이터베이스를 유지하려면, 단순히 하나를 만들 수 있습니다 따라서 각 응용 프로그램에 대한 데이터베이스는 결국 2 개의 데이터베이스로 끝납니다.

oracle에서 동일한 작업을 수행하려면 어떻게해야합니까? - 새로운 "데이터베이스"를 만드시겠습니까? 응용 프로그램마다 "인스턴스", "스키마"또는 "테이블 공간"? (참고,이 두 응용 프로그램은 데이터를 공유하지 않는 두 개의 서로 다른 회사에서 사용하는 것과 같은 응용 프로그램입니다!)

참조 : http://www.codeproject.com/Tips/492342/Concept-mapping-between-SQL-Server-and-Oracle

+1

oracle에서는 동일한 데이터베이스에 두 개의 스키마를 만들 수 있습니다 (각 응용 프로그램마다 하나씩). –

답변

-1

당신은 동일한 데이터베이스에 새로운 인스턴스 (스키마)를 생성한다 Oracle의 스키마는 SQL 서버 데이터베이스와 동일합니다.

+2

"스키마"와 "인스턴스"는 매우 다른 것들이므로 "새 인스턴스 (스키마)"가 올바르지 않습니다. 새 스키마를 만드는 것이 좋습니다. 새 데이터베이스를 만드는 것이 좋습니다. 새로운 인스턴스를 생성한다는 것은 노드를 RAC 클러스터에 추가하거나 비 RAC 데이터베이스를 2 노드 RAC 데이터베이스로 변환하는 것을 의미하며 새로운 애플리케이션을 추가하는 것과는 아무런 관련이 없습니다. –

+0

설명해 주셔서 감사합니다 – user2302449

3

멀티 테넌트 옵션과 함께 12.1 이상을 사용하는 경우 단일 컨테이너 데이터베이스에 별도의 플러그 가능한 데이터베이스를 생성 할 수 있습니다. 다른 옵션은 Oracle의 모든 버전에서 작동하며 별도의 스키마를 만드는 것입니다. 한 응용 프로그램이 다른 응용 프로그램에 영향을주지 않고 데이터베이스를 업그레이드하는 것과 같은 일을 특별히 수행해야하는 경우가 아니면 일반적으로 선호하는 방법이 아니지만 별도의 데이터베이스를 만드는 것도 가능합니다. 당신은 별도의 데이터베이스를 만드는 경우 데이터베이스

만들기

, 당신은 완전한 별도의 메모리 구조 (각 데이터베이스에 대해 즉 SGA와 PGA 별도의 것)뿐만 아니라 완전히 별도의 세트로 끝날 것 (각 데이터베이스에는 예를 들어 자체 로그 기록기 프로세스가 있습니다). 그것은 매우 무거운 옵션입니다 - RAM에 대한 많은 논쟁을 시작하기 전에 하나의 서버에 너무 많은 데이터베이스를 가질 수 없으며 모든 백그라운드 프로세스를 예약하는 등 여러 응용 프로그램 간의 최대 분리를 제공합니다 - 각 데이터베이스는 다른 초기화 매개 변수 세트를 사용하여 다른 버전의 Oracle을 실행할 수 있습니다. 그러나 이는 또한 환경 관리의 복잡성을 증가시키는 경향이 있습니다. 이것은 일반적으로 특정 버전의 데이터베이스 또는 특정 초기화 매개 변수 세트가 필요한 타사 응용 프로그램이있는 경우에만 의미가 있습니다.

스키마

만들기 별도의 스키마를 작성하는 경우, 당신은 여전히 ​​두 스키마가 (같은 메모리 구조를 공유하는 SGA의 버퍼 캐시의 공간을 서로 경쟁 있도록 하나의 데이터베이스가 예를 들어) 초기화 매개 변수 등 두 가지가 서로 방해하지 않도록 계획을 세 심하게해야합니다. 아마도 nether 응용 프로그램이 공개 동의어를 만들거나 적어도 다른 응용 프로그램과 동일한 공용 동의어를 만들지는 않을 것입니다. 그러나 이것은 일반적으로 매우 사소합니다.

플러그 데이터베이스를 12.1 만 당신은 멀티 테넌트 옵션이 경우

이 유일한 작품 만들기. 이것은 각 응용 프로그램에 대해 새 데이터베이스를 만드는 SQL Server 개념과 가장 비슷합니다.

+0

스키마에 테이블 스페이스가 있습니까? 정확하게 테이블 공간은 무엇입니까? – 001

+0

@ 001 - 스키마와 테이블 스페이스는 직교 개념입니다. 테이블 공간은 데이터 파일의 모음입니다. 컨벤션 문제로 각 애플리케이션에 대해 별도의 테이블 스페이스를 작성할 수 있습니다. 또는 모든 응용 프로그램에 대해 단일 테이블 공간 (또는 테이블 공간 집합)을 사용할 수 있습니다. 별도의 테이블 공간은 다른 애플리케이션에 영향을 미치지 않고 특정 애플리케이션을 특정 시점으로 복원하거나 테이블 공간의 데이터 파일이 유실되거나 손상되어 복구해야하는 경우 데이터베이스 실행을 계속 허용 할 수있는 경우에 유용 할 수 있습니다. –

4

과거에 SQL Server를 많이 사용 해본 결과, 오라클이 동일한 작업을 수행함에 따라 오라클이 구성하는 방식을 파악하는 데 동감했습니다. 아래의 내 의견은 SQL Server 2000 및 2003에서 발생하므로 사안이 변경되면 용서해주십시오.

이전의 응답자가 도움이되었습니다. 여기에 하나의 문제가있는 가정은 SQL Server와 Oracle간에 정확한 '수준'동등성이 있다는 것입니다. 제가 "레벨"이란 의미는 위에서 다이어그램으로 작성한 계층 구조에서 동일한 공간을 차지하는 것입니다 (그리고 btw는 시작하기에 좋은 장소라고 생각하지만 몇 곳에서 약간의 편집이 필요할 수도 있습니다. 예를 들어 오라클 계층 구조에서 "사용자"와 "스키마"를 어떻게 다이어그램으로 만들었습니까? 필자는 이러한 개념을 "DB 플랫폼"과 정확히 일치시키지 않습니다.

Oracle의 스키마는 SQL Server의 별도 데이터베이스와 다소 비슷하지만 완전히는 아닙니다.

"벽"- 정확한 기술 용어는 아니지만 SQL 서버의 데이터베이스 사이는 오라클의 스키마 간 "벽"보다 약간 높습니다. 다른 사람들은 동의하지 않을 수 있지만 여기에는 내 추론이 있습니다.

a. Oracle의 스키마는 순전히 논리적 인 구조입니다. 그것은 누가 객체의 소유권을 가지고 있는지 나타냅니다. 객체의 물리적 위치 또는 레이아웃과는 아무런 관련이 없습니다. 이전 포스터에서 설명한 것처럼 테이블 공간 (직사각형 개념)은 실제 개체의 위치를 ​​나타냅니다. 테이블 공간은 여러 스키마에있는 오브젝트를 보유 할 수 있으며 그 반대의 경우도 가능합니다. SQL Server에서 이러한 두 가지 개념은 일종의 병합입니다. 데이터베이스는 SQL Server의 DB 내에서 어떤면에서 다양한 개체 소유권을 가진 여러 가지 소유자가 있지만 테이블 스페이스와 스키마 둘 다 더 많거나 적습니다. NT 인증을 사용하지 않는다면 (몇 년이 지났음) 사용자가 서버 수준에서 정의 된 다음 개별 DB의 사용자와 "연결"해야한다는 것을 기억하기 때문에 다소 혼란 스러울 수 있습니다.

b. SQL Server에서 두 개의 개별 DB를 사용하는 사용자가 Oracle에서 찾은 것보다 상대적인 다른 사용자의 DB에 액세스 할 수 없다는 것을 확신하는 것이 더 쉽거나 더 간단하다는 것을 기억합니다.

c. SQL Server의 DB는 물리적 저장소와 논리적 소유권을 모두 나타 내기 때문에 DB를 분리하고 다른 SQL Server 인스턴스로 이동하여 연결할 수 있습니다. 오라클의 스키마에서는이를 수행 할 수 없습니다. 내 말은, 당신은 데이터를 백업하거나 다른 서버와 다른 스키마로 데이터를 백업하거나 백업 할 수 있지만, 적어도 모든 스크립팅은 물론 적어도 Enterprise Manager에서의 클릭의 정도는 중요합니다. 한 번 클릭으로 SQL Server에있는 "Detach DB"옵션을 제공하지 않으므로 SQL Server 데이터베이스가 더 많이 또는 덜 이동할 수 있다는 생각을 쉽게 할 수 있습니다. 데이터베이스.

두 가지를 요약하면 어느 옵션이든 작동한다고 생각합니다. 즉, 1) 각 응용 프로그램마다 각 인스턴스에 하나의 스키마가있는 두 개의 Oracle 인스턴스를 작성하거나, 또는 2) 하나의 Oracle 인스턴스에 두 개의 개별 스키마를 작성하십시오.

각 옵션마다 장단점이 있습니다. 옵션 1은 설정 및 구성에 더 많은 노력을 기울일 것이지만 각 DB에 대해 분리, 독립성, 개별 하드웨어를 가질 수있는 능력 등을 제공합니다. 옵션 2는 훨씬 간단하지만 데이터와 구성상의 실수 또는 다른 스키마에 대한 사용자가 다른 스키마에 액세스 할 수있게하는 다른 위험 요소 사이의 구분을 덜어줍니다. 또한 한 스키마에서 데이터에 액세스하는 쿼리를 작성하는 사람이 모든 CPU 및 IO 리소스를 사용하지 않고 다른 스키마에서 사용자를 굶주 리지 않도록 조심해야한다는 것을 의미합니다.

또한 예, 12c에서 플러그 가능 데이터베이스를 사용할 수 있습니다.그러나 당신이이 질문을해야한다는 사실을 감안할 때 (당신이있는 곳을 지적하면서 부끄러움을 느끼지 않으면), 나는 더 복잡한 설정이 될 수있는 것을 추천하는 것을 주저하게 만듭니다.

TL; DR - SQL Server는 Oracle이 아니며 Oracle은 SQL Server가 아닙니다. 어느 것이 든 선택권이 작동하고 거기에 찬부 양론이 각각있다.