Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Questo articolo elenca una serie di problemi che potrebbero sorgere quando si configura e si utilizza un Oracle Publisher.
Viene generato un errore relativo al software di rete e client Oracle
Devi concedere all'account sotto cui Microsoft SQL Server gira sul Distributore i permessi di lettura ed esecuzione per la directory e tutte le sottodirectory in cui è installato il software di rete client Oracle. Se non concedi i permessi o se i componenti client Oracle non sono installati correttamente, ricevi il seguente messaggio di errore:
Connessione al server non riuscita con [Microsoft OLE DB Provider for Oracle]. Impossibile trovare il client e i componenti di rete Oracle. Tali componenti vengono forniti da Oracle Corporation e fanno parte dell'installazione del software client Oracle versione 7.3.3 o successive. Se non si installano tali componenti, non sarà possibile utilizzare questo provider."
Se installi un client Oracle appropriato presso il distributore, assicurati di fermare e poi riavviare SQL Server dopo la fine dell'installazione del client. Questo passaggio è necessario affinché SQL Server riconosca i componenti client.
Se concedi i permessi e installi correttamente i componenti ma l'errore persiste, verifica che le impostazioni del registro siano HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI corrette:
Per Oracle 10g, le impostazioni corrette sono:
OracleOciLib = oci.dll
OracleSqlLib = orasql10.dll
OracleXaLib = oraclient10.dll
Per Oracle 9i, le impostazioni corrette sono:
OracleOciLib = oci.dll
OracleSqlLib = orasql9.dll
OracleXaLib = oraclient9.dll
Il SQL Server Distributor non può connettersi all'istanza del database Oracle
Se il SQL Server Distributor non riesce a connettersi all'Oracle Publisher, assicurati che:
Nel server di distribuzione è installato il software Oracle necessario.
Il database Oracle è online e puoi connetterti usando uno strumento come SQL*Plus.
Le credenziali di accesso che la replica utilizza per connettersi al Publisher Oracle dispongono di autorizzazioni sufficienti. Per altre informazioni, vedere Configurare un server di pubblicazione Oracle.
Il file tnsnames.ora elenca i nomi TNS che hai definito durante la configurazione di Oracle Publisher.
Stai utilizzando l'Oracle Home corretto e il percorso corretto. Anche in caso di installazione di un solo set di file binari Oracle nel server di distribuzione SQL Server, assicurarsi che le variabili di ambiente relative a Oracle Home siano state impostate correttamente. Se le variabili di ambiente vengono modificate, per rendere effettiva la modifica è necessario arrestare e riavviare SQL Server.
Per altre informazioni sulla configurazione e sul test della connettività, vedere la sezione relativa all'installazione e alla configurazione del software di rete client Oracle nel server di distribuzione SQL Server in Configurare un server di pubblicazione Oracle.
L'Oracle Publisher è associato a un altro Distributore
Un server di pubblicazione Oracle può essere associato soltanto a un server di distribuzione SQL Server. Se un diverso Distributore è associato all'Oracle Publisher, lascialo prima di usare un altro Distributore. Se non lasci prima il Distributore, ricevi uno dei seguenti messaggi di errore:
L'istanza del server Oracle '<NomeServerPublisherOracle>' è stata precedentemente configurata per usare '<NomeDistributoreSQLServer>' come Distributore. Per iniziare a usare '<NewSQLServerDistributorName>' come Distributore, è necessario rimuovere la configurazione di replica corrente nell'istanza del server Oracle, operazione che eliminerà tutte le pubblicazioni in tale istanza del server.
Il server Oracle '<OracleServerName>' è già definito come server di pubblicazione '<OraclePublisherName>' nel server di distribuzione '<SQLServerDistributorName>.<DistributionDatabaseName>'. Eliminare il publisher oppure eliminare il sinonimo pubblico '<SynonymName>' per ricrearlo.
Quando si elimina un Oracle Publisher, gli oggetti di replica nel database Oracle vengono automaticamente puliti. Tuttavia, in alcuni casi devi pulire manualmente gli oggetti di replica dell'Oracle. Per rimuovere manualmente gli oggetti di replica Oracle creati con la replica:
Connettersi al server di pubblicazione Oracle con autorizzazioni DBA.
Eseguire il comando SQL
DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;.Eseguire il comando SQL
DROP USER <replication_administrative_user_schema>``CASCADE;.
L'errore SQL Server 21663 viene segnalato per la mancanza di una chiave primaria
Gli articoli delle pubblicazioni transazionali devono disporre di una chiave primaria valida. Se non hanno una chiave primaria valida, ricevi il seguente messaggio di errore quando tenti di aggiungere un articolo:
"Impossibile trovare una chiave primaria valida per la tabella di origine [<ProprietarioTabella>].[<NomeTabella>]"
Per informazioni sui requisiti per le chiavi primarie, consulta la sezione "Indici e vincoli unici" nell'articolo Considerazioni e limitazioni di progettazione per gli editori Oracle.
L'errore SQL Server 21642 viene riportato riguardo a un login duplicato del server collegato
Quando configuri inizialmente un Oracle Publisher, il processo crea una voce server collegata per la connessione tra Publisher e Distributore. Il nome del server collegato corrisponde al nome del servizio TNS Oracle. Se provi a creare un server collegato con lo stesso nome, vedi il seguente messaggio di errore:
'Per i server di pubblicazione eterogenei è necessario un server collegato. Esiste già un server collegato denominato '<NomeServerCollegato>'. Rimuovere il server collegato o scegliere un nome di server di pubblicazione diverso'.
Questo errore può verificarsi se tenti di creare direttamente il server collegato o se in precedenza hai perso la relazione tra Oracle Publisher e SQL Server Distributor, e ora stai cercando di riconfigurarlo. Se questo errore viene visualizzato durante un tentativo di riconfigurazione del server di pubblicazione, eliminare il server collegato con sp_dropserver (Transact-SQL).
Se è necessario connettersi a Oracle Publisher tramite una connessione a un server collegato, creare un altro nome di servizio TNS e quindi usare questo nome quando si chiama sp_addlinkedserver (Transact-SQL). Per informazioni sulla creazione di nomi di servizio TNS, vedere la documentazione Oracle.
Si verifica l'errore 21617 di SQL Server
La pubblicazione in Oracle utilizza l'applicazione Oracle SQL*Plus per scaricare nel database Oracle il pacchetto del codice di supporto di Publisher. Prima di tentare di configurare il Publisher Oracle, SQL Server verifica che SQL*PLUS sia accessibile nel percorso di sistema del server di distribuzione. Se non è possibile caricare SQL*PLUS, verrà visualizzato il messaggio di errore seguente:
"Impossibile eseguire SQL*PLUS. Verificare che nel server di distribuzione sia installata una versione corrente del codice client Oracle."
Prova a localizzare SQLPLUS sul Distributore. Per un'installazione client Oracle 10g, il nome di questo eseguibile è sqlplus.exe. Di solito viene installato in %ORACLE_HOME%/bin. Per verificare che il percorso di SQLPLUS appaia nel percorso di sistema, esamina il valore della variabile di sistema Path:
Fare clic con il pulsante destro del mouse su Risorse del computere quindi scegliere Proprietà.
Selezionare la scheda Avanzate e quindi fare clic sul pulsante Variabili d'ambiente.
Nella finestra di dialogo Variabili d'ambiente selezionare la variabile Path nell'elenco Variabili di sistema e quindi fare clic su Modifica.
Nella finestra di dialogo Modifica Variabile di Sistema : se il percorso verso la cartella che contiene sqlplus.exe non è presente nella finestra di testo Valore variabile , modifica la stringa per includerla.
Fare clic su OK in ogni finestra di dialogo aperta per chiuderla e salvare le modifiche.
Se non riesci a trovare sqlplus.exe sul Distributore, installa una versione aggiornata del software client Oracle presso il Distributore. Per altre informazioni, vedere Configurare un server di pubblicazione Oracle.
Si verifica l'errore 21620 di SQL Server
Se ti connetti a un database Oracle prima della versione 8.1, Oracle Publishing richiede che il software client Oracle installato sul Distributore sia della versione 9. Se ti connetti a un database Oracle versione 8.1 o successiva, usa il client Oracle versione 10 o successiva.
Prima di tentare di configurare Oracle Publisher, la funzionalità di pubblicazione Oracle verifica che la versione di SQL*PLUS accessibile nel PATH di sistema nel server di distribuzione sia la versione 9 o una versione successiva. Se non lo è, viene mostrato il seguente messaggio di errore:
"La versione di SQL*PLUS accessibile tramite la variabile di sistema Path non è aggiornata e non supporta la pubblicazione Oracle. Verificare che nel server di distribuzione sia installata una versione corrente del codice client Oracle."
Se hai più versioni del software client Oracle installate sul Distributore, assicurati che la versione più recente sia almeno la versione 9 e che la variabile path di sistema si riferisca prima a questa versione (i riferimenti ad altre versioni possono apparire purché la più recente appaia prima). Per maggiori informazioni sulla modifica della variabile path di sistema, consulta la sezione "SQL Server is Raised" precedente in questo articolo.
Viene generato l'errore SQL Server 21624 o 21629
Per i distributori a 64 bit, la pubblicazione Oracle utilizza Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). Assicurati che il provider Oracle OLEDB sia installato e registrato sul Distributore. Se il provider non è installato e registrato, vedrai uno o entrambi i seguenti messaggi di errore:
"Impossibile trovare il provider OLEDB Oracle registrato, OraOLEDB.Oracle, nel server di distribuzione '%s'. Verificare che nel server di distribuzione sia installata e registrata una versione corrente del provider Oracle OLEDB."
La chiave CLSID del Registro di sistema che indica che il provider Oracle OLEDB per Oracle, OraOLEDB.Oracle, è stato registrato non è presente nel server di distribuzione. Verificare che il provider Oracle OLEDB sia installato e registrato nel server di distribuzione."
Se stai usando Oracle client versione 10g, il provider è OraOLEDB10.dll; per la versione 9i, è OraOLEDB.dll. Il provider viene installato in %ORACLE_HOME%\BIN (ad esempio, C:\oracle\product\10.1.0\Client_1\bin). Se determini che il provider Oracle OLEDB non è installato sul Distributore, installalo dal disco di installazione del software client Oracle fornito da Oracle. Per altre informazioni, vedere Configurare un server di pubblicazione Oracle.
Se il provider Oracle OLEDB è installato, assicurati che sia registrato. Per registrare la DLL provider, esegui il seguente comando dalla directory dove è installata la DLL, poi ferma e riavvia l'istanza di SQL Server:
-
regsvr32 OraOLEDB10.dlloregsvr32 OraOLEDB.dll.
Si verifica l'errore di SQL Server 21626 o l'errore 21627
Per verificare che l'ambiente di pubblicazione Oracle sia configurato correttamente, SQL Server cerca di connettersi a Oracle Publisher utilizzando le credenziali di accesso specificate durante la configurazione. Se il SQL Server Distributor non riesce a connettersi all'Oracle Publisher, si vede il seguente messaggio di errore:
- "Impossibile connettersi al server di database Oracle '%s' utilizzando il provider Oracle OLEDB OraOLEDB.Oracle".
Se vedi questo messaggio di errore, verifica la connettività con il database Oracle eseguendo direttamente SQL*PLUS usando lo stesso login e password specificati durante la configurazione di Oracle Publisher. Per ulteriori informazioni, consulta la sezione "Il distributore di SQL Server non può connettersi all'Oracle Database Instance" precedente in questo articolo.
Viene generato l'errore 21628 di SQL Server
Per i distributori a 64 bit, la pubblicazione Oracle utilizza Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). SQL Server consente di creare una voce nel Registro di sistema che permette l'esecuzione in-process del provider Oracle con SQL Server. Se c'è un problema nella lettura o scrittura di questa voce del registro, appare il seguente messaggio di errore:
"Impossibile aggiornare il Registro di sistema del server di distribuzione '%s' per consentire l'esecuzione in-process del provider Oracle OLEDB OraOLEDB.Oracle con SQL Server. Assicurarsi che l'accesso corrente sia autorizzato a modificare le chiavi del Registro di sistema di proprietà di SQL Server.
La pubblicazione Oracle richiede che la chiave del Registro esista e sia impostata a 1 per i Distributori a 64 bit. Se la voce non esiste, SQL Server tenta di crearla. Se la voce esiste ma è impostata a 0, l'impostazione non cambia e la configurazione di Oracle Publisher fallisce.
Per visualizzare e modificare l'impostazione nel Registro di sistema:
Selezionare Start e quindi Esegui.
Nella finestra di dialogo Esegui, digita regedit e poi seleziona OK.
Passare a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.
Sotto Provider, trova una cartella chiamata
OraOLEDB.Oracle. All'interno di questa cartella, trova il nome del valore DWORD AllowInProcess con valore 1.Se noti che AllowInProcess è impostato a 0, aggiorna la voce del registro a 1:
Clicca con il tasto destro sull'iscrizione, poi seleziona Modifica.
Nella finestra di dialogo Modifica stringa immettere 1 nel campo Dati valore .
Viene generato l'errore 21684 di SQL Server
Se l'account utente amministrativo non ha privilegi sufficienti, si vede il seguente messaggio di errore:
"Le autorizzazioni associate all'account di accesso di amministratore per il server di pubblicazione Oracle '%s' non sono sufficienti."
Per verificare i permessi concessi all'utente, esegui la seguente interrogazione: SELECT * from session_privs. L'output avrà un aspetto analogo al seguente:
PRIVILEGE
------------------
CREATE SESSION
CREATE TABLE
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
Incontri problemi di permessi per lo schema utente di replicazione
Lo schema utente di replica deve disporre delle autorizzazioni descritte nella sezione relativa alla creazione manuale dello schema utente in Configurare un server di pubblicazione Oracle.
Errore Oracle ORA-01000
Durante il processo di aggiunta di articoli a una pubblicazione, nella replica vengono utilizzati cursori sul server di pubblicazione Oracle. Durante questo processo, è possibile superare il numero massimo di cursori disponibili nel Publisher. In questo caso, viene generato l'errore seguente:
ORA-01000: numero massimo di cursori aperti superato
Per evitare questo problema, verificare che l'impostazione max_open_cursors dei database Oracle sia impostata su un numero sufficientemente elevato (almeno 1000). Per ulteriori informazioni su questa impostazione, vedere la documentazione Oracle.
Errore Oracle ORA-01555
Il seguente errore del database Oracle non è correlato alla replicazione snapshot; è invece correlato al modo in cui Oracle costruisce viste coerenti dei dati in lettura:
"ORA-01555: Istantaneo troppo vecchio"
Utilizzando oggetti noti come segmenti di rollback, Oracle costruisce viste di dati con consistenza in lettura relativamente al momento in cui è stata eseguita un'istruzione SQL. L'errore "snapshot too old" può verificarsi in caso di sovrascrittura delle informazioni di rollback da parte di altre sessioni simultanee. Nelle versioni precedenti a Oracle 9i, il metodo consigliato per ridurre la frequenza di questo errore consiste nell'incrementare le dimensioni e/o il numero dei segmenti di rollback e assegnare transazioni estese a uno specifico segmento di rollback.
Con Oracle 9i, Oracle ha introdotto il concetto di tablespace UNDO, che sostituisce il segmento di rollback. Per evitare l'errore "snapshot too old" in Oracle 9i, è consigliabile:
Creare uno spazio di tabella UNDO con una quantità appropriata di spazio disponibile.
Impostare la garanzia di memorizzazione per lo spazio di tabella (Oracle 10G e versioni successive).
Configurare i parametri di inizializzazione Oracle UNDO_MANAGEMENT e UNDO_RETENTION.
Per informazioni dettagliate su come evitare l'errore "snapshot too old", vedere la documentazione Oracle.
Errore oracolo ORA-22285
Se in una tabella è inclusa una colonna BFILE, i dati per la colonna vengono archiviati nel file system. Devi concedere all'account utente amministrativo della replica l'accesso alla directory dove sono memorizzati i dati utilizzando la seguente sintassi:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Se non concedi l'accesso, l'Agente del Lettore di Log genera il seguente errore:
ORA-22285: directory o file non esistente per l'operazione FILEOPEN
Modifiche che richiedono una riconfigurazione del Publisher
Se apporti modifiche alle tabelle o procedure dei metadati di replicazione, devi rimuovere e riconfigurare lo Publisher. Per riconfigurare il Publisher, devi rilasciare il Publisher e configurarlo di nuovo utilizzando SQL Server Management Studio, Transact-SQL o RMO. Per maggiori informazioni sulla configurazione del Publisher, vedi Configura un Oracle Publisher.
Eliminare un Oracle Publisher (SQL Server Management Studio)
Connettersi al Distributore del Publisher Oracle in SQL Server Management Studio ed espandere il nodo del server.
Fare clic con il pulsante destro del mouse su Replicae quindi scegliere Proprietà server di distribuzione.
Nella pagina Server di pubblicazione della finestra di dialogo Proprietà server di distribuzione deselezionare la casella di controllo per il server di pubblicazione Oracle.
Fare clic su OK.
Per eliminare un server di pubblicazione Oracle (Transact-SQL)
- Eseguire sp_dropdistpublisher. Per altre informazioni, vedere sp_dropdistpublisher (Transact-SQL).