2013-07-16 1 views
2

저는 MySQL의 강력한 경험을 토대로 오라클을 시작합니다. 그러나 오라클에 데이터베이스가 무엇인지 이해하는 것은 어렵습니다. 그들이 차별화하기 위해 고심하고있는 유사한 개념을 사용한다는 점을 고려하면. MySQL의에서 모두 (사용자 woprkspace 논리적 TABLESPACES으로 나눈 값) MySQLer 용 Oracle 11g, 데이터베이스 개념

  • TNS 및 SID/서비스 개념
  • 연결 개념 "데이터베이스"의 간단한 개념 대신

    • SCHEMA 개념의 혼합물 (이 ODBC 정의 및 SQLDeveloper)

    나는 아직도 읽고있는 그대로 순수한 정의를 묻지 않겠지 만 가장 가까운 오라클 개념에서 mysql 데이터베이스를 매핑하는 방법에 대한 지침을 제공합니다.

  • 답변

    1

    개발자의 관점에서 내가 제공 할 수있는 정보입니다. 필자는 오라클에 대한 엄청난 양을 알지 못하지만, 현재 생산중인 일부 애플리케이션을 위해 오라클에 배치하는 데 상당히 중요한 작업을 수행했습니다.

    일반적으로 데이터베이스은 설치의 일부로 설정됩니다. 내 경험상 대부분의 서버에는 하나의 데이터베이스 만 있습니다.

    스키마은 데이터베이스 내의 일반적인 논리적 구분입니다. 동일한 스키마 인스턴스에 여러 스키마가 쉽게 존재할 수 있습니다. 오라클에서는 MySQL 데이터베이스와 마찬가지로 스키마를 사용합니다. 따라서 MySQL에서 5 개의 데이터베이스를 생성 할 때 Oracle에서 5 개의 스키마를 생성하여 동일한 작업을 수행 할 수 있습니다. 또한 스키마는 사용자입니다. 오라클은이 두 개념을 하나의 엔티티로 결합합니다.

    테이블 공간은 데이터 및 메타 데이터 (테이블 정의 등)가 들어있는 파일 세트입니다. 단일 데이터베이스는 여러 테이블 스페이스를 사용할 수 있으며 스키마 내의 다른 오브젝트는 다른 테이블 스페이스에있을 수 있습니다. 오브젝트를 작성할 때 테이블 공간이 지정되지 않은 경우, 각 스키마에는 오브젝트에 대한 기본 테이블 공간이 있습니다. 기본 구성을 사용하면 명확한 기본 테이블 공간없이 작성된 스키마/사용자는 USERS 테이블 공간을 사용합니다.

    내 경험에 비추어 볼 때 TNS은 "이름"을 일부 서버 연결 데이터에 매핑하는 일반 텍스트 파일 일 뿐이라고합니다. TNS 파일은 서버가 아닌 클라이언트 컴퓨터에 있습니다. mydatabase(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myoracleserver)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SID=orcl)))에 해당하도록 구성 할 수 있습니다. (HOST은 물론 서버가 실행되는 컴퓨터입니다.) 제 경험으로 볼 때 대부분의 경우 실제로 TNS로 인해 발생하는 번거 로움을 완전히 피하고 연결 데이터를 직접 사용할 수 있습니다.

    다시 경험해 보니 SID 또는 서비스 이름은 실제로 이름입니다. 나는 그것들의 중요성을 정말로 잘 알고 있다고 말할 수는 없지만 같은 서버에서 여러 개의 데이터베이스를 실행하는 경우에 문제가있는 것으로 생각됩니다. 그래도 나를 붙 잡지 마라. 실용적인 목적을 위해, 나는 일반적으로 그들 중 하나를 알고 연결할 필요가 있습니다. SID와 서비스 이름은 다른 것이며 동일한 데이터베이스에 대해 서로 다른 값을 가질 수 있습니다. 나는 그들 사이의 차이점이 무엇인지 정확히 알지 못하지만, 실제로 그것이 일어난 정보의 조각이 아닌 특별한 이유 때문에 하나를 선택하지 않아도됩니다.

    연결을 염두에두면 조금 더 간단 해집니다. 개념적으로 다른 데이터베이스와 거의 같습니다. 이들에 대해 혼란 스러울 수있는 점은 스키마으로 연결한다는 것입니다. 오라클은 스키마와 사용자를 결합하기 때문입니다. "username"은 스키마 이름이고 스키마는 암호 또는 이와 관련된 다른 형태의 인증을 가질 수 있습니다. 연결 문자열은 다른 데이터베이스와 마찬가지로 클라이언트 소프트웨어에 따라 다릅니다. SQL * Plus (오라클의 명령 행 클라이언트)의 경우 연결 문자열은 다음과 같습니다 : [USERNAME]/[PASSWORD]@[TNS Name OR Connection info]. 사용자가 MY_SCHEMA 경우, 암호가 PASS이며, 서버가 위처럼 그래서, 그것은 .NET 응용 프로그램에 대한

    MY_SCHEMA/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myoracleserver)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SID=orcl))) 
    

    처럼 보일 수 있습니다, 그것은 꽤되는

    Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myoracleserver)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SID=orcl)));User Id=MY_SCHEMA;Password=PASS 
    

    처럼 보일 수 있습니다 다른 데이터베이스와 유사합니다. 아무리 이상한 서버 정보가 보이면 TNS 이름으로 대체 할 수 있습니다.

    SQL Developer와 관련하여 "연결"은 실제로 저장된 연결 문자열입니다. ODBC는 다른 데이터베이스와 마찬가지로 연결합니다. 당신은 바로 연결 문자열과 드라이버가 필요합니다.

    드라이버는 언어에 따라 Oracle에서 문제가 될 수 있습니다. 필자는 Java에 알맞은 독립 클라이언트가 있다고 생각하지만 다른 언어는 일반적으로 바이너리 버전에 의존합니다. 이진 버전에는 설치 프로그램이 있고 PATH에 바이너리를 저장하지만 설치 프로그램은 사용하기가 어렵습니다. 가능한 경우 클라이언트 설치를 피하고 "인스턴트 클라이언트"를 사용합니다. 보통, 앱이 그들을 찾을 수있는 장소에서 인스턴트 클라이언트 바이너리를 얻을 수 있다면, 그들은 단지 작동합니다. (.NET을 사용하여 개발하는 경우 오라클의 ODP.NET 공급자를 사용하고 ASP.NET 웹 응용 프로그램의 bin 디렉토리에 바이너리를 찾을 수있는 바이너리에 대한 정적 바인딩이 있습니다.)

    짧은 그래서

    :

    • 데이터베이스는 설정 한 서버의 일부입니다
    • 스키마 인 사용자 모두 당신은 테이블 스페이스는 데이터베이스를 보유하고있는 실제 파일입니다 데이터베이스
    • 를 분할하는 방법
    • TNS는 명명 편의성에 불과합니다. 클라이언트 측
    • SID/서비스 이름에 나는이 배열은 좋은 일이라고 생각하지 결코

    을 연결할 때 사용하는 이름은,하지만 그게 오라클에있는 방법입니다.

    +0

    대단히 감사합니다. 전 오후 읽었으며 여전히 글로벌 수준에서이 모든 개념 (특히 TNS ans 인스턴스/데이터베이스)을 관련시켜 인형에 대해 설명하는 단일 리소스를 찾지 못했습니다. – Whimusical

    +0

    그건 파 내 경험으로 오라클과 함께하는 과정. 무엇이든 간단한 설명을 찾는 것은 거의 불가능합니다. 오라클과 함께 일하는 경우 인터넷 검색에 시간을 할애하고 많은 수의 쓸모없는 오류 메시지가 나타날 것으로 예상합니다. =/오, 오라클 지원 팀에 연락 할 수있는 게시물을 찾는 데는 거의 절반의 시간이 걸릴 것으로 예상됩니다. 나는 나보다 먼저이 길을 걷은 사람들과 일하는 이익으로 시작했다. – jpmc26

    +0

    하, 그들은 업계 표준으로 오라클을 위해 MySQL을 바꿀 수 있었고 이제는 그들 모두가 소유하고 있습니다.저의 경력은 많은 이익을 보게 될 것입니다 : p, 그리고 MySQL은 정말로 간단합니다. 모호한 에러와 무의미한 결과를 자주 보지 못합니다. – Whimusical