programing

Oracle Text는 NVARCHAR2에서 작동하지 않습니다.그 밖에 어떤 것을 사용할 수 없습니까?

newstyles 2023. 6. 13. 22:03

Oracle Text는 NVARCHAR2에서 작동하지 않습니다.그 밖에 어떤 것을 사용할 수 없습니까?

유니코드를 지원하도록 애플리케이션을 마이그레이션하고 전체 데이터베이스에 대한 유니코드 문자 집합 또는 N[VAR]CHAR2에 저장된 유니코드 열 중에서 선택해야 합니다.

NVARCHAR2를 선택하면 Oracle Text는 CAR 유형을 기준으로 열을 인덱싱할 수 있기 때문에 Oracle Text로 열 내용을 인덱싱할 수 없습니다.

그 외에도 Oracle 가능성에서 수확할 때 다른 주요 차이점이 발생할 가능성이 있습니까?

또한 최신 버전의 Oracle에서 일부 새로운 기능이 추가되었지만 CHAR 열 또는 NCAR 열만 지원하고 둘 다 지원하지는 않습니까?

답변 감사합니다.

Justin의 답변에 따른 참고 사항:

답변 감사합니다.우리의 경우에 적용되는 당신의 요점에 대해 논의하겠습니다.

NAT 애플리케이션은 대개 Oracle 데이터베이스에 단독으로 존재하며 데이터 자체를 처리합니다.데이터베이스에 연결되는 다른 소프트웨어는 Toad, Tora 또는 SQL 개발자로 제한됩니다.

또한 SQL*Loader 및 SQL*Plus를 사용하여 데이터베이스와 통신하여 기본 문을 작성하거나 제품 버전 간에 업그레이드합니다.우리는 NVARCHAR2와 관련된 모든 소프트웨어에 대한 구체적인 문제에 대해 듣지 못했습니다.

또한 고객 중 데이터베이스 관리자가 NVARCHAR2의 데이터를 지원할 수 없는 데이터베이스의 다른 툴을 사용하기를 원한다는 사실도 모르고 있으며, 이들의 툴이 업무에 능숙하고 필요한 경우 다른 툴을 찾을 수도 있기 때문에 중단될 수도 있습니다.

당신의 마지막 두 가지 요점은 우리의 경우에 더 통찰력이 있습니다.Oracle의 기본 제공 패키지를 많이 사용하지는 않지만 여전히 사용되고 있습니다.우리는 그 문제를 탐구할 것입니다.

Visual C++로 C로 컴파일됨)에서 Visual C++를 사용하는 할 수 ?wchar_tUTF-16을 저장하려면 처리된 모든 데이터에 대해 인코딩 변환을 수행해야 합니까?

선택사항과 유사한 항목이 있는 경우, 전체 데이터베이스에 대해 유니코드 문자 집합을 사용합니다.일반적으로 삶이 그렇게 하는 것은 눈이 멀 정도로 더 쉽습니다.

  • 단순히 NCAR/NVARCHAR2 열을 지원하지 않거나 NCAR/NVARCHAR2 열로 작업할 수 없는 타사 유틸리티 및 라이브러리가 많이 있습니다.예를 들어, 반짝반짝 빛나는 새 보고 도구가 NVARCHAR2 데이터에 대해 보고할 수 없는 경우에는 매우 짜증이 납니다.
  • 사용자 지정 애플리케이션의 경우 NCAR/NVARCHAR2 열로 작업하려면 CHAR/VARCHAR2 유니코드로 인코딩된 열로 작업할 수 없는 일부 후프를 건너뛰어야 합니다.예를 들어 JDBC 코드에서는 계속해서 선언문을 호출합니다.setFormOfUse 메서드를 지정합니다.다른 언어와 프레임워크에는 다른 gotch가 있을 것입니다. 일부는 비교적 잘 문서화되어 있고 일부는 비교적 모호할 것입니다.
  • 대부분의 기본 제공 패키지는 NVARCHAR2가 아닌 VARCHAR2만 허용(또는 반환)합니다.암시적 변환으로 인해 계속 호출할 수 있지만 문자 집합 변환 문제가 발생할 수 있습니다.
  • 일반적으로 데이터베이스 내에서 문자 집합 변환 문제를 피할 수 있고 이러한 문제를 데이터베이스가 실제로 클라이언트로부터 데이터를 보내거나 받는 가장자리로 좌천시키면 응용프로그램 개발 작업이 훨씬 쉬워집니다.네트워크 전송에서 발생하는 문자 집합 변환 문제를 디버깅하는 것만으로도 충분합니다. 저장 프로시저가 VARCHAR2와 NVARCHAR2의 데이터를 연결하고 결과를 네트워크를 통해 전송하기 전에 VARCHAR2에 저장할 때 일부 데이터가 손상되었음을 파악하는 것은 어려운 작업입니다.

오라클은 유니코드를 사용하는 새 애플리케이션과 동일한 데이터베이스에서 유니코드를 지원하지 않는 레거시 애플리케이션을 지원하려는 경우와 일부 유니코드 데이터를 다른 인코딩(예: 다른 인코딩)으로 저장하는 것이 유리한 경우를 위해 NCAR/NVARCHAR2 데이터 유형을 설계했습니다.UTF-8 인코딩 대신 NVARCHAR2에 UTF-16 인코딩을 사용하여 저장하려는 일본어 데이터가 대량으로 있습니다.만약 당신이 그 두 가지 상황 중 하나가 아니라면, 그리고 당신이 그런 것처럼 들리지 않는다면, 나는 무슨 수를 써서라도 NCAR/NVARCHAR2를 피할 것입니다.

확인할 메일에 응답

NAT 애플리케이션은 대개 Oracle 데이터베이스에 단독으로 존재하며 데이터 자체를 처리합니다.데이터베이스에 연결되는 다른 소프트웨어는 Toad, Tora 또는 SQL 개발자로 제한됩니다.

"데이터 자체를 관리한다"는 것은 무슨 뜻입니까?Oracle의 문자 집합 변환 루틴을 우회하도록 응용 프로그램을 구성했으며 모든 문자 집합 변환을 사용자가 직접 수행한다는 것이 아니길 바랍니다.

저는 또한 당신이 OCI일지라도 데이터베이스에 접근하기 위해 일종의 API/라이브러리를 사용하고 있다고 가정합니다.NCAR/NVARCHAR2를 지원하기 위해 애플리케이션을 변경해야 하는 사항과 사용 중인 API가 NCAR/NVARCHAR2를 지원하는지 확인해 보셨습니까?유니코드 데이터를 C++로 가져온다고 해서 NCAR/NVARCHAR2 열을 지원하기 위해 (잠재적으로 중요한) 변경을 할 필요가 없다는 것은 아닙니다.

또한 SQL*Loader 및 SQL*Plus를 사용하여 데이터베이스와 통신하여 기본 문을 작성하거나 제품 버전 간에 업그레이드합니다.우리는 NVARCHAR2와 관련된 모든 소프트웨어에 대한 구체적인 문제에 대해 듣지 못했습니다.

이러한 애플리케이션은 모두 NCAR/NVARCHAR2와 함께 작동합니다.특히 데이터베이스 문자 집합에 표시되지 않는 문자열 상수를 인코딩하려는 경우 NCAR/NVARCHAR2는 스크립트에 몇 가지 추가적인 복잡성을 가져옵니다.하지만 당신은 확실히 그 문제들을 해결할 수 있습니다.

또한 고객 중 데이터베이스 관리자가 NVARCHAR2의 데이터를 지원할 수 없는 데이터베이스의 다른 툴을 사용하기를 원한다는 사실도 모르고 있으며, 이들의 툴이 업무에 능숙하고 필요한 경우 다른 툴을 찾을 수도 있기 때문에 중단될 수도 있습니다.

고객이 데이터를 사용하여 작업할 수 있는 다른 방법을 찾을 수 있다고 확신하지만, 애플리케이션이 엔터프라이즈 보고 툴이나 엔터프라이즈 ETL 툴 또는 사용 중인 데스크톱 툴을 제대로 사용하지 못할 경우 고객이 툴이 아닌 애플리케이션을 비난할 가능성이 매우 높습니다.그것은 아마도 쇼 스토퍼는 아닐 것이지만, 불필요하게 고객의 슬픔을 야기하는 것에 대한 이점도 없습니다.이는 경쟁사 제품을 사용하도록 유도하지는 못할지도 모르지만, 여러분의 제품을 기꺼이 받아들이도록 만들지는 않을 것입니다.

UTF-16을 저장하기 위해 wchar_t를 사용하는 애플리케이션(Visual C++로 컴파일됨)이 처리된 모든 데이터에 대해 인코딩 변환을 수행해야 하는 경우에도 성능 저하를 예상할 수 있습니까?

무슨 "대화"를 말씀하시는 건지 잘 모르겠습니다.이것은 Oracle의 NLS 계층을 바이패스하여 문자 집합 변환을 직접 수행하고 있는지 여부에 대한 첫 번째 질문으로 되돌아갈 수 있습니다.

하지만 제 요점은 당신이 설명하는 것을 고려할 때 NCAR/NVARCHAR2를 사용하는 것에 대한 이점이 전혀 없다는 것입니다.그것들을 사용하는 것에는 많은 잠재적인 단점들이 있습니다.그러나 특정 요구 사항과 무관하다고 해서 99%의 단점을 제거할 수 있다고 해도, 두 가지 접근 방식 사이에서 기껏해야 하나의 문제일 뿐인 상황에 직면해 있습니다.따라서 유연성을 극대화하는 접근 방식을 택하고 싶습니다. 전체 데이터베이스를 유니코드(AL32UTF8로 추정)로 변환하고 이를 사용하는 것입니다.

언급URL : https://stackoverflow.com/questions/4401043/oracle-text-will-not-work-with-nvarchar2-what-else-might-be-unavailable