Oracle 게시자 문제 해결Troubleshooting Oracle Publishers

이 항목에서는 Oracle 게시자를 구성 및 사용할 때 발생할 수 있는 여러 가지 문제를 나열합니다.This topic lists a number of issues that might arise when configuring and using an Oracle Publisher.

Oracle 클라이언트 및 네트워킹 소프트웨어와 관련된 오류가 발생했습니다.An Error Is Raised Regarding Oracle Client and Networking Software

MicrosoftMicrosoft SQL ServerSQL Server 가 배포자에서 실행되는 계정에는 Oracle 클라이언트 네트워킹 소프트웨어가 설치된 디렉터리 및 모든 하위 디렉터리에 대한 읽기 및 실행 권한이 부여되어야 합니다.The account under which MicrosoftMicrosoft SQL ServerSQL Server runs on the Distributor must be granted read and execute permissions for the directory (and all subdirectories) in which the Oracle client networking software is installed. 사용 권한이 부여되지 않거나 Oracle 클라이언트 구성 요소가 제대로 설치되지 않으면 다음과 같은 오류 메시지가 표시됩니다.If the permissions are not granted or the Oracle client components are not installed properly, you will receive the following error message:

"[Microsoft OLE DB Provider for Oracle]로 서버에 연결하지 못했습니다."Connection to server failed with [Microsoft OLE DB Provider for Oracle]. Oracle 클라이언트 및 네트워킹 구성 요소를 찾을 수 없습니다.Oracle client and networking components were not found. 이러한 구성 요소는 Oracle 버전 7.3.3 이상의 클라이언트 소프트웨어 설치의 일부로 Oracle사에서 제공합니다.These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation. 이러한 구성 요소를 설치해야 공급자를 사용할 수 있습니다."Provider is unable to function until these components are installed."

해당 Oracle 클라이언트가 배포자에 설치된 경우 클라이언트 설치가 완료된 후에 SQL ServerSQL Server 가 중지되었다가 다시 시작되었는지 확인합니다.If an appropriate Oracle client has been installed at the Distributor, ensure that SQL ServerSQL Server was stopped and then restarted after the client installation completed. 이렇게 해야 SQL ServerSQL Server 가 클라이언트 구성 요소를 인식할 수 있습니다.This is required in order for SQL ServerSQL Server to recognize the client components.

권한을 부여하고 구성 요소를 올바르게 설치한 다음에도 이 오류가 계속 발생하면 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI의 레지스트리 설정이 올바른지 확인하십시오.If you have verified that permissions are granted and that components are installed correctly, but this error persists, verify that the registry settings at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI are correct:

  • Oracle 10g의 경우 올바른 설정은 다음과 같습니다.For Oracle 10g, the correct settings are

    • OracleOciLib = oci.dllOracleOciLib = oci.dll

    • OracleSqlLib = orasql10.dllOracleSqlLib = orasql10.dll

    • OracleXaLib = oraclient10.dllOracleXaLib = oraclient10.dll

  • Oracle 9i의 경우 올바른 설정은 다음과 같습니다.For Oracle 9i, the correct settings are

    • OracleOciLib = oci.dllOracleOciLib = oci.dll

    • OracleSqlLib = orasql9.dllOracleSqlLib = orasql9.dll

    • OracleXaLib = oraclient9.dllOracleXaLib = oraclient9.dll

SQL Server 배포자가 Oracle 데이터베이스 인스턴스에 연결할 수 없습니다.The SQL Server Distributor Cannot Connect to the Oracle Database Instance

SQL ServerSQL Server 배포자가 Oracle 게시자에 연결할 수 없는 경우 다음 사항을 확인하십시오.If the SQL ServerSQL Server Distributor cannot connect to the Oracle Publisher, ensure that:

  • 필요한 Oracle 소프트웨어가 배포자에 설치되어 있어야 합니다.The necessary Oracle software is installed on the Distributor.

  • Oracle 데이터베이스가 온라인 상태이고 SQLPlus와 같은 도구를 사용하여 이 데이터베이스에 연결할 수 있어야 합니다.The Oracle database is online and you can connect to it using a tool like SQLPlus.

  • 복제에서 Oracle 게시자 연결에 사용하는 로그인에 충분한 권한이 있어야 합니다.The login replication uses to connect to the Oracle Publisher has sufficient permissions. 자세한 내용은 Oracle 게시자 구성을 참조하세요.For more information, see Configure an Oracle Publisher.

  • Oracle 게시자를 구성하는 동안 정의된 TNS 이름이 tnsnames.ora 파일에 나열되어 있어야 합니다.The TNS names defined during configuration of the Oracle Publisher are listed in the tnsnames.ora file.

  • 올바른 Oracle 홈 및 경로를 사용해야 합니다.The correct Oracle Home and path are used. SQL ServerSQL Server 배포자에 하나의 Oracle 바이너리 집합만 설치한 경우에도 Oracle 홈과 관련된 환경 변수를 제대로 설정해야 합니다.Even if you have only one set of Oracle binaries installed on the SQL ServerSQL Server Distributor, ensure that the environment variables related to the Oracle Home are set properly. 환경 변수 값을 변경한 경우 SQL ServerSQL Server 를 중지하고 다시 시작하여 변경 내용을 적용해야 합니다.If you change environment variable values, you must stop and restart SQL ServerSQL Server for the change to take effect.

    연결을 구성 및 테스트하는 방법은 Oracle 게시자 구성의 " SQL ServerSQL Server 배포자에 Oracle 클라이언트 네트워킹 소프트웨어 설치 및 구성"을 참조하세요.For more information about configuring and testing connectivity, see "Installing and Configuring Oracle Client Networking Software on the SQL ServerSQL Server Distributor" in Configure an Oracle Publisher.

Oracle 게시자가 다른 배포자와 연결되어 있습니다.The Oracle Publisher Is Associated with Another Distributor

Oracle 게시자는 한 SQL ServerSQL Server 배포자에만 연결할 수 있습니다.An Oracle Publisher can only be associated with one SQL ServerSQL Server Distributor. Oracle 게시자에 배포자가 연결되어 있는 경우 다른 배포자를 사용하려면 먼저 기존 배포자를 삭제해야 합니다.If a different Distributor is associated with the Oracle Publisher, it must be dropped before another Distributor can be used. 기존 배포자를 먼저 삭제하지 않으면 다음 오류 메시지 중 하나가 표시됩니다.If the Distributor is not dropped first, you will receive one of the following error messages:

  • "Oracle 서버 인스턴스 '<OraclePublisherName'은 '<SQLServerDistributorName>'를 배포자로 사용하도록 이전에 구성되었습니다."Oracle server instance '<OraclePublisherName>' has been previously configured to use '<SQLServerDistributorName>' as its Distributor. '<NewSQLServerDistributorName>'을 배포자로 사용하려면 Oracle 서버 인스턴스의 현재 복제 구성을 제거하여 해당 서버 인스턴스의 모든 게시를 삭제해야 합니다."To begin using '<NewSQLServerDistributorName>' as its Distributor, you must remove the current replication configuration on the Oracle server instance, which will delete all publications on that server instance."

  • "Oracle 서버 '<OracleServerName>'는 배포자 '<SQLServerDistributorName>.<DistributionDatabaseName>'에 대한 게시자 '<OraclePublisherName>'으로 이미 정의되었습니다."Oracle server '<OracleServerName>' is already defined as publisher '<OraclePublisherName>' on distributor '<SQLServerDistributorName>.<DistributionDatabaseName>'. 게시자를 삭제하거나 공용 동의어 '<SynonymName>'을 삭제하고 다시 만드세요."Drop the publisher or drop the public synonym '<SynonymName>' to recreate."

    Oracle 게시자를 삭제하면 Oracle 데이터베이스의 복제 개체가 자동으로 정리됩니다.When an Oracle Publisher is dropped, the replication objects in the Oracle database are automatically cleaned up. 그러나 어떤 경우에는 Oracle 복제 개체를 수동으로 정리해야 합니다.However, manual cleanup of the Oracle replication objects is necessary in some cases. 복제에 의해 생성된 Oracle 복제 개체를 수동으로 정리하려면 다음을 수행하십시오.To manually clean up Oracle replication objects created by replication:

  1. DBA 권한으로 Oracle 게시자에 연결합니다.Connect to the Oracle publisher with DBA permissions.

  2. SQL 명령 DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;를 실행합니다.Issue the SQL command DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;.

  3. SQL 명령 DROP USER <replication_administrative_user_schema>``CASCADE;를 실행합니다.Issue the SQL command DROP USER <replication_administrative_user_schema>``CASCADE;.

PRIMARY KEY 부재와 관련된 SQL Server 오류 21663이 발생했습니다.SQL Server Error 21663 Is Raised Regarding the Lack of a Primary Key

트랜잭션 게시의 아티클에는 올바른 기본 키가 있어야 합니다.Articles in transactional publications must have a valid primary key. 아티클에 올바른 기본 키가 없으면 아티클을 추가할 때 다음 오류 메시지가 표시됩니다.If they do not have a valid primary key, you will receive the following error message when you attempt to add an article:

"원본 테이블 [<TableOwner>].[<TableName>]에 대해 올바른 기본 키를 찾을 수 없습니다.""No valid primary key found for source table [<TableOwner>].[<TableName>]"

기본 키 요구 사항에 대한 자세한 내용은 Design Considerations and Limitations for Oracle Publishers항목의 "고유 인덱스 및 UNIQUE 제약 조건" 섹션을 참조하십시오.For information about requirements for primary keys, see the section "Unique Indexes and Constraints" in the topic Design Considerations and Limitations for Oracle Publishers.

연결된 서버로의 중복 로그인과 관련된 SQL Server 오류 21642가 발생했습니다.SQL Server Error 21642 Is Raised Regarding a Duplicate Linked Server Login

Oracle 게시자를 처음 구성하면 게시자와 배포자 간 연결에 대해 연결된 서버 항목이 생성됩니다.When an Oracle Publisher is initially configured, a linked server entry is created for the connection between the Publisher and the Distributor. 연결된 서버의 이름은 Oracle TNS 서비스 이름과 동일합니다.The linked server has the same name as the Oracle TNS service name. 이름이 동일한 연결된 서버를 만들면 다음 오류 메시지가 표시됩니다.If you attempt to create a linked server with the same name, the following error message is shown:

"유형이 다른 게시자에는 연결된 서버가 필요합니다."Heterogeneous publishers require a linked server. 연결된 서버 '<LinkedServerName>'가 이미 있습니다.A linked server named '<LinkedServerName>' already exists. 연결된 서버를 제거하거나 다른 게시자 이름을 선택하십시오."Please remove linked server or choose a different publisher name."

이 오류는 연결된 서버를 직접 만들거나 이전에 삭제한 Oracle 게시자와 SQL ServerSQL Server 배포자 간 관계를 다시 구성하려고 하는 경우 발생할 수 있습니다.This error can occur if you attempt to create the linked server directly or if you have previously dropped the relationship between the Oracle Publisher and the SQL ServerSQL Server Distributor, and you are now attempting to reconfigure it. 게시자를 다시 구성하는 동안 이 오류가 표시되면 sp_dropserver(Transact-SQL)를 사용하여 연결된 서버를 삭제하세요.If you receive this error while attempting to reconfigure the Publisher, drop the linked server with sp_dropserver (Transact-SQL).

연결된 서버 연결을 통해 Oracle 게시자에 연결하려면 다른 TNS 서비스 이름을 만든 다음 이 이름을 사용하여 sp_addlinkedserver(Transact-SQL)를 호출합니다.If you need to connect to the Oracle Publisher over a linked server connection, create another TNS service name, and then use this name when calling sp_addlinkedserver (Transact-SQL). TNS 서비스 이름을 만드는 방법은 Oracle 설명서를 참조하십시오.For information about creating TNS service names, see the Oracle documentation.

SQL Server 오류 21617이 발생했습니다.SQL Server Error 21617 Is Raised

Oracle 게시는 Oracle 응용 프로그램 SQLPLUS를 사용하여 게시자 지원 코드 패키지를 Oracle 데이터베이스로 다운로드합니다.Oracle publishing uses the Oracle application SQLPLUS to download the package of Publisher support code to the Oracle database. SQL ServerSQL Server는 Oracle 게시자를 구성하기 전에 배포자에서 시스템 경로로 SQL*PLUS에 액세스할 수 있는지 확인합니다.Before attempting to configure the Oracle Publisher, SQL ServerSQL Server verifies that SQL*PLUS is accessible through the system path on the Distributor. SQL*PLUS를 로드할 수 없으면 다음 오류 메시지가 표시됩니다.If SQL*PLUS cannot be loaded, the following error message is shown:

"SQLPLUS를 실행할 수 없습니다."Unable to run SQLPLUS. 배포자에 최신 버전의 Oracle 클라이언트 코드가 설치되었는지 확인하십시오."Make certain that a current version of the Oracle client code is installed at the distributor."

배포자에서 SQL*PLUS를 찾으세요.Try to locate SQL*PLUS on the Distributor. Oracle 10g 클라이언트 설치의 경우 이 실행 파일의 이름은 sqlplus.exe입니다.For an Oracle 10g client install, the name of this executable is sqlplus.exe. 이 파일은 일반적으로 %ORACLE_HOME%/bin에 설치됩니다.It is typically installed in %ORACLE_HOME%/bin. SQL*PLUS의 경로가 시스템 경로에 표시되는지 확인하려면 시스템 변수 Path 값을 검사하세요.To verify that the path of SQL*PLUS appears in the system path, examine the value of the system variable Path:

  1. 내 컴퓨터를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.Right-click My Computer, and then click Properties.

  2. 고급 탭을 클릭한 다음 환경 변수를 클릭합니다.Click the Advanced tab, and then click Environment variables.

  3. 환경 변수 대화 상자의 시스템 변수 목록에서 Path 변수를 선택한 다음 편집을 클릭합니다.In the Environment Variables dialog box, in the System variables list, select the Path variable, and then click Edit.

  4. 시스템 변수 편집 대화 상자에서 sqlplus.exe가 들어 있는 폴더의 경로가 변수 값 입력란에 나타나지 않으면 해당 문자열을 편집하여 추가합니다.In the Edit System Variable dialog box: if the path to the folder that contains sqlplus.exe is not present in the Variable value text box, edit the string to include it.

  5. 열려 있는 각 대화 상자에서 확인 을 클릭하여 변경 내용을 저장하고 종료합니다.Click OK on each open dialog box to exit and save changes.

    배포자에서 sqlplus.exe를 찾을 수 없으면 배포자에 최신 버전의 Oracle 클라이언트 소프트웨어를 설치합니다.If you cannot locate sqlplus.exe on the Distributor, install a current version of the Oracle client software at the Distributor. 자세한 내용은 Oracle 게시자 구성을 참조하세요.For more information, see Configure an Oracle Publisher.

SQL Server 오류 21620이 발생했습니다.SQL Server Error 21620 Is Raised

Oracle 데이터베이스 8.1 이전 버전에 연결하는 경우 Oracle 게시를 위해 배포자에 설치된 Oracle 클라이언트 소프트웨어는 버전 9여야 합니다.If you are connecting to an Oracle database earlier than version 8.1, Oracle publishing requires that the Oracle client software installed on the Distributor be from version 9. Oracle 데이터베이스 8.1 이후 버전에 연결하는 경우에는 버전 10 이상의 Oracle 클라이언트 소프트웨어를 사용하는 것이 좋습니다.If you are connecting to an Oracle database that is version 8.1 or later, we recommend that the Oracle client software be version 10 or later.

Oracle 게시는 Oracle 게시자를 구성하기 전에 배포자에서 시스템 경로로 액세스할 수 있는 SQLPLUS가 버전 9 이상인지 확인합니다.Before attempting to configure the Oracle Publisher, Oracle publishing verifies that the version of SQLPLUS accessible through the system path on the Distributor is version 9 or later. 버전 9 이상이 아니면 다음 오류 메시지가 표시됩니다.If it is not, the following error message is shown:

"시스템 경로 변수로 액세스할 수 있는 SQLPLUS 버전이 최신 버전이 아니어서 Oracle 게시를 지원할 수 없습니다."The version of SQLPLUS that is accessible through the system Path variable is not current enough to support Oracle publishing. 배포자에 최신 버전의 Oracle 클라이언트 코드가 설치되었는지 확인하십시오."Make certain that a current version of the Oracle client code is installed at the distributor."

여러 버전의 Oracle 클라이언트 소프트웨어가 배포자에 설치되어 있을 경우 최신 버전이 버전 9 이상이며 시스템 경로 변수가 먼저 이 버전을 가리키는지 확인하십시오. 최신 버전이 먼저 표시되기만 하면 다른 버전에 대한 참조도 표시될 수 있습니다.If you have multiple versions of the Oracle client software installed on the Distributor, make sure that the most current version is at least version 9 and that the system path variable refers first to this version (references to other versions can appear as long as the most recent appears first). 시스템 경로 변수를 편집하는 방법은 이 항목의 앞부분에 있는 "SQL Server 오류 21617이 발생합니다" 섹션을 참조하십시오.For more information about editing the system path variable, see the section "SQL Server Error 21617 is Raised" earlier in this topic.

SQL Server 오류 21624 또는 오류 21629가 발생했습니다.SQL Server Error 21624 or Error 21629 Is Raised

64비트 배포자의 경우 Oracle 게시는 Oracle OLEDB 공급자(OraOLEDB.Oracle)를 사용합니다.For 64-bit Distributors, Oracle publishing uses the Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). 배포자에 Oracle OLEDB 공급자가 설치 및 등록되었는지 확인하십시오.Make sure that the Oracle OLEDB provider is installed and registered on the Distributor. 공급자가 설치 및 등록되어 있지 않으면 다음 오류 메시지 중 하나 또는 둘 다가 표시됩니다.If the provider is not installed and registered, one or both of the following error messages is shown:

  • "배포자 '%s'에서 Oracle OLEDB 공급자 OraOLEDB.Oracle을 찾을 수 없습니다."Unable to locate the registered Oracle OLEDB provider, OraOLEDB.Oracle, at distributor '%s'. 배포자에 최신 버전의 Oracle OLEDB 공급자가 설치 및 등록되었는지 확인하십시오."Make certain that a current version of the Oracle OLEDB provider is installed and registered at the distributor."

  • "Oracle OLEDB 공급자 OraOLEDB.Oracle이 등록되었음을 나타내는 CLSID 레지스트리 키가 배포자에 없습니다."The CLSID registry key indicating that the Oracle OLEDB Provider for Oracle, OraOLEDB.Oracle, has been registered is not present at the distributor. 배포자에 Oracle OLEDB 공급자가 설치 및 등록되었는지 확인하십시오."Make certain that the Oracle OLEDB provider is installed and registered at the distributor."

    Oracle 클라이언트 소프트웨어 버전 10g를 사용하는 경우 공급자는 OraOLEDB10.dll입니다. 버전 9i의 경우에는 OraOLEDB.dll입니다.If you are using Oracle client software version 10g, the provider is OraOLEDB10.dll; for version 9i, it is OraOLEDB.dll. 공급자는 %ORACLE_HOME%\BIN에 설치됩니다(예: C:\oracle\product\10.1.0\Client_1\bin).The provider is installed in %ORACLE_HOME%\BIN (for example, C:\oracle\product\10.1.0\Client_1\bin). 배포자에 Oracle OLEDB 공급자가 설치되어 있지 않으면 Oracle에서 제공한 Oracle 클라이언트 소프트웨어 설치 디스크에서 설치합니다.If you determine that the Oracle OLEDB provider is not installed on the Distributor, install it from the Oracle client software install disc provided by Oracle. 자세한 내용은 Oracle 게시자 구성을 참조하세요.For more information, see Configure an Oracle Publisher.

    Oracle OLEDB 공급자가 설치되어 있으면 등록되었는지 확인하십시오.If the Oracle OLEDB provider is installed, make sure that it is registered. 공급자 DLL을 등록하려면 DLL이 설치된 디렉터리에서 다음 명령을 실행한 다음 SQL ServerSQL Server 인스턴스를 중지했다가 다시 시작합니다.To register the provider DLL, execute the following command from the directory in which the DLL is installed, and then stop and restart the SQL ServerSQL Server instance:

  1. regsvr32 OraOLEDB10.dll 또는 regsvr32 OraOLEDB.dll입니다.regsvr32 OraOLEDB10.dll or regsvr32 OraOLEDB.dll.

SQL Server 오류 21626 또는 오류 21627이 발생했습니다.SQL Server Error 21626 or Error 21627 Is Raised

Oracle 게시 환경이 올바로 구성되었는지 확인하기 위해 SQL ServerSQL Server 는 구성 중에 지정한 로그인 자격 증명을 사용하여 Oracle 게시자에 연결합니다.To verify that the Oracle publishing environment is configured properly, SQL ServerSQL Server tries to connect to the Oracle Publisher with the login credentials you specified during configuration. SQL ServerSQL Server 배포자가 Oracle 게시자에 연결할 수 없는 경우 다음 오류 메시지가 표시됩니다.If the SQL ServerSQL Server Distributor cannot connect to the Oracle Publisher, the following error message is shown:

  • "Oracle OLEDB 공급자 OraOLEDB.Oracle을 사용하여 Oracle 데이터베이스 서버 '%s'에 연결할 수 없습니다.""Unable to connect to Oracle database server '%s' using the Oracle OLEDB provider OraOLEDB.Oracle."

    이 오류 메시지가 표시되면 Oracle 게시자 구성 중에 지정한 로그인 및 암호로 직접 SQLPLUS를 실행하여 Oracle 데이터베이스에 대한 연결을 확인합니다.If this error message is shown, verify connectivity to the Oracle database by running SQLPLUS directly using the same login and password specified during configuration of the Oracle Publisher. 자세한 내용은 이 항목의 앞부분에 있는 "SQL Server 배포자가 Oracle 데이터베이스 인스턴스에 연결할 수 없습니다" 섹션을 참조하십시오.For more information, see the section "The SQL Server Distributor Cannot Connect to the Oracle Database Instance" earlier in this topic.

SQL Server 오류 21628이 발생했습니다.SQL Server Error 21628 Is Raised

64비트 배포자의 경우 Oracle 게시는 Oracle OLEDB 공급자(OraOLEDB.Oracle)를 사용합니다.For 64-bit Distributors, Oracle publishing uses the Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). SQL ServerSQL Server 는 Oracle 공급자가 SQL ServerSQL Server프로세스에서 실행되도록 허용하기 위해 레지스트리 항목을 만듭니다.. 이 레지스트리 항목을 읽거나 쓰는 데 문제가 있으면 다음 오류 메시지가 표시됩니다.If there is a problem reading or writing this registry entry, the following error message is shown:

"Oracle OLEDB 공급자 OraOLEDB.Oracle이 SQL ServerSQL Server프로세스에서 실행되도록 허용하기 위해 배포자 '%s'의 레지스트리를 업데이트할 수 없습니다."Unable to update the registry of distributor '%s' to allow Oracle OLEDB provider OraOLEDB.Oracle to run in process with SQL ServerSQL Server. 현재 로그인에 SQL ServerSQL Server 소유 레지스트리 키를 수정할 권한이 부여되었는지 확인하십시오."Make certain that current login is authorized to modify SQL ServerSQL Server owned registry keys."

Oracle 게시는 레지스트리 항목이 있어야 하며 64비트 배포자의 경우 1 로 설정되어야 합니다.Oracle publishing requires the registry entry to exist and to be set to 1 for 64 bit Distributors. 항목이 없으면 SQL ServerSQL Server 에서 항목을 만듭니다.If the entry does not exist, SQL ServerSQL Server will attempt to create it. 항목이 있지만 0으로 설정된 경우에는 설정이 변경되지 않으며 Oracle 게시자 구성이 실패합니다.If the entry exists, but is set to 0, the setting will not be changed; the configuration of the Oracle Publisher will fail.

레지스트리 설정을 보고 수정하려면To view and modify the registry setting:

  1. 시작을 클릭한 다음 실행을 클릭합니다.Click Start, and then click Run.

  2. 실행 대화 상자에 regedit를 입력한 다음 확인을 클릭합니다.In the Run dialog box, type regedit, and then click OK.

  3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers로 이동합니다.Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.

    Providers 아래에는 OraOLEDB.Oracle 폴더가 있어야 하며Included under Providers should be a folder named OraOLEDB.Oracle. 이 폴더 내에 이름이 AllowInProcess이고 값이 1인 DWORD 값이 있어야 합니다.Within this folder should be the DWORD value name AllowInProcess, with a value of 1.

  4. AllowInProcess0으로 설정되어 있으면 레지스트리 항목을 1로 업데이트합니다.If you determine that AllowInProcess is set to 0, update the registry entry to 1:

    1. 항목을 마우스 오른쪽 단추로 클릭한 다음 수정을 클릭합니다.Right-click the entry, and then click Modify.

    2. 문자열 편집 대화 상자의 값 데이터 필드에 1 을 입력합니다.In the Edit String dialog box, type 1 in the Value data field.

SQL Server 오류 21684가 발생했습니다.SQL Server Error 21684 Is Raised

관리 사용자 계정에 충분한 권한이 없으면 다음 오류 메시지가 표시됩니다.If the administrative user account does not have sufficient privileges, the following error message is shown:

“Oracle 게시자 '%s'의 관리자 로그인과 연관된 사용 권한이 충분하지 않습니다.”"The permissions associated with the administrator login for Oracle publisher '%s' are not sufficient."

사용자에게 부여된 사용 권한을 확인하려면 SELECT * from session_privs쿼리를 실행합니다.To verify the permissions granted to the user, execute the following query: SELECT * from session_privs. 출력은 다음과 같은 형태가 됩니다.The output should be similar to the following:

PRIVILEGE

------------------

CREATE SESSION

CREATE TABLE

CREATE PUBLIC SYNONYM

DROP PUBLIC SYNONYM

CREATE VIEW

CREATE SEQUENCE

CREATE PROCEDURE

CREATE TRIGGER

복제 사용자 스키마에 대한 사용 권한 문제가 발생했습니다.You Encounter Permissions Issues for the Replication User Schema

복제 사용자 스키마에는 Oracle 게시자 구성의 "수동으로 사용자 스키마 만들기"에 설명된 권한이 있어야 합니다.The replication user schema must have the permissions described in "Creating the User Schema Manually" in Configure an Oracle Publisher.

Oracle 오류 ORA-01000Oracle Error ORA-01000

복제는 게시에 아티클을 추가할 때 Oracle 게시자에 커서를 사용합니다.Replication uses cursors on the Oracle Publisher during the process of adding articles to a publication. 이때 게시자에서 사용할 수 있는 최대 커서 수가 초과되어It is possible to exceed the maximum number of cursors available on the Publisher during this process. 다음 오류가 발생할 수 있습니다.If this occurs, the following error is raised:

"ORA-01000: maximum open cursors exceeded""ORA-01000: maximum open cursors exceeded"

이 문제를 방지하려면 Oracle 데이터베이스에서 max_open_cursors 설정을 충분히 높은 수(최소 1000)로 설정하십시오.To avoid this problem, ensure that the max_open_cursors setting in the Oracle databases is set to a sufficiently high number (at least 1000). 이 설정에 대한 자세한 내용은 Oracle 설명서를 참조하십시오.For more information about this setting, see the Oracle documentation.

Oracle 오류 ORA-01555Oracle Error ORA-01555

다음 Oracle 데이터베이스 오류는 스냅숏 복제와는 관계가 없으며 Oracle에서 일관된 읽기를 수행할 수 있는 데이터 뷰를 생성하는 방식과 관련되어 있습니다.The following Oracle database error is not related to snapshot replication; it is related to how Oracle constructs read-consistent views of data:

"ORA-01555: 너무 오래된 스냅숏""ORA-01555: Snapshot too old"

Oracle에서는 롤백 세그먼트라는 개체를 사용하여 SQL 문이 실행된 시점에서 일관된 읽기를 수행할 수 있는 데이터 뷰를 생성합니다.Using objects known as rollback segments, Oracle constructs read-consistent views of data as of the point in time a SQL statement is issued. 다른 동시 세션에서 롤백 정보를 덮어쓰는 경우 "snapshot too old" 오류가 발생할 수 있습니다.A "snapshot too old" error might occur when rollback information is overwritten by other concurrent sessions. Oracle 9i 이전에서는 이 오류의 발생 빈도를 줄이기 위해 롤백 세그먼트의 크기 및/또는 수를 늘리고 큰 트랜잭션을 특정 롤백 세그먼트에 할당하는 방법이 권장되었습니다.Prior to Oracle 9i, the recommended method of reducing the frequency of this error was to increase the size and/or number of rollback segments, and to assign large transactions to a specific rollback segment.

Oracle 9i에서는 롤백 세그먼트를 대체하는 UNDO 테이블스페이스 개념을 도입했습니다.In Oracle 9i, Oracle introduced the UNDO tablespace concept, which replaces the rollback segment. Oracle 9i에서 "snapshot too old" 오류를 방지하려면 다음을 수행하십시오.To prevent the "snapshot too old" error in Oracle 9i, it is recommended that you:

  • 사용 가능한 공간을 적절히 지정한 다음 UNDO 테이블스페이스를 만듭니다.Create an UNDO tablespace with an appropriate amount of free space.

  • 테이블스페이스에 보존이 보장되는 기간을 설정합니다(Oracle 10G 이상).Set the retention guarantee on the tablespace (Oracle 10G and greater).

  • Oracle 초기화 매개 변수인 UNDO_MANAGEMENT 및 UNDO_RETENTION을 구성합니다.Configure the Oracle initialization parameters UNDO_MANAGEMENT and UNDO_RETENTION.

    "snapshot too old" 오류 방지 방법에 대한 자세한 내용은 Oracle 설명서를 참조하십시오.For further details about avoiding the "snapshot too old" error, consult the Oracle documentation.

Oracle 오류 ORA-22285Oracle Error ORA-22285

테이블에 BFILE 열이 포함되어 있는 경우에는 이 열의 데이터가 파일 시스템에 저장됩니다.If a table includes a BFILE column, the data for the column is stored in the file system. 다음 구문을 사용하여 복제 관리 사용자 계정에 데이터가 저장되어 있는 디렉터리에 대한 액세스 권한을 부여해야 합니다.The replication administrative user account must be granted access to the directory in which the data is stored using the following syntax:

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

액세스 권한을 부여하지 않으면 로그 판독기 에이전트에서 다음 오류를 표시합니다.If access is not granted, the following error is raised by the Log Reader Agent:

"ORA-22285: non-existent directory or file for FILEOPEN operation""ORA-22285: non-existent directory or file for FILEOPEN operation"

게시자를 다시 구성해야 하는 변경 내용이 적용되었습니다.Changes Are Made That Require Reconfiguration of the Publisher

복제 메타데이터 테이블 또는 프로시저를 변경하면 게시자를 삭제하고 다시 구성해야 합니다.Changes to replication metadata tables or procedures require that you drop and reconfigure the Publisher. 게시자를 다시 구성하려면 게시자를 삭제하고 SQL Server Management StudioSQL Server Management Studio, Transact-SQL 또는 RMO를 사용하여 다시 구성해야 합니다.To reconfigure the Publisher, you must drop the Publisher and configure it again using SQL Server Management StudioSQL Server Management Studio, Transact-SQL, or RMO. 게시자 구성에 대한 자세한 내용은 Oracle 게시자 구성을 참조하세요.For information about configuring the Publisher, see Configure an Oracle Publisher.

Oracle 게시자를 삭제하려면(SQL Server Management Studio)To drop an Oracle Publisher (SQL Server Management Studio)

  1. SQL Server Management StudioSQL Server Management Studio 에서 Oracle 게시자에 대한 배포자에 연결한 다음 해당 서버 노드를 확장합니다.Connect to the Distributor for the Oracle Publisher in SQL Server Management StudioSQL Server Management Studio and expand the server node.

  2. 복제를 마우스 오른쪽 단추로 클릭한 다음 배포자 속성을 클릭합니다.Right-click Replication, and then click Distributor Properties.

  3. 배포자 속성 대화 상자의 게시자 페이지에서 Oracle 게시자에 대한 확인란의 선택을 취소합니다.On the Publishers page of the Distributor Properties dialog box, clear the check box for the Oracle Publisher.

  4. 확인을 클릭합니다.Click OK.

    Transact-SQL을 사용하여 Oracle 게시자를 삭제하려면To drop an Oracle Publisher (Transact-SQL)

참고 항목See Also

Oracle 게시자 구성 Configure an Oracle Publisher
Oracle Publishing Overview Oracle Publishing Overview