Proveedor Oracle para OLE DB

El proveedor Oracle para OLE DB (8.1.7.3.0) permite la utilización de consultas distribuidas en datos de bases de datos Oracle. La compatibilidad del proveedor Oracle para OLE DB se aplica de la forma siguiente:

Oracle 32 bits

Sólo fuera de proceso

Oracle 64 bits

Ninguna

Para crear un servidor vinculado que tenga acceso a una instancia de base de datos Oracle

  1. Asegúrese de que el software de cliente Oracle del servidor que ejecuta Microsoft SQL Server es el que necesita el proveedor. El proveedor Oracle para OLE DB (8.1.7.3.0) requiere el cliente de Oracle 8.1.7.0.

  2. Cree un nombre de alias en el servidor que ejecute SQL Server que apunte a una instancia de una base de datos Oracle. Para obtener más información, vea la documentación de Oracle.

  3. Ejecute sp_addlinkedserver para crear el servidor vinculado; para ello, especifique OraOLEDB.Oracle como provider_name y el alias de la base de datos de Oracle como data_source.

    En el ejemplo siguiente se supone que el alias se ha definido como DQORA8:

    exec sp_addlinkedserver @server='OrclDB', 
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='DQORA8'
    
    Nota de seguridadNota de seguridad

    En este ejemplo no se utiliza la autenticación de Windows. Las contraseñas se transmiten sin cifrar. Las contraseñas se pueden ver en secuencias de comandos y definiciones de origen de datos guardadas en disco, en copias de seguridad y en archivos de registro. No utilice nunca una contraseña de administrador en este tipo de conexión. Solicite a su administrador de red directrices de seguridad específicas para este entorno.

  4. Utilice sp_addlinkedsrvlogin para crear asignaciones de inicios de sesión de SQL Server a inicios de sesión de Oracle.

    En el ejemplo siguiente se asigna el inicio de sesión de SQL ServerJoe al servidor vinculado definido en el paso 3 mediante el inicio de sesión y la contraseña de Oracle OrclUsr y OrclPwd:

    sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', 
       @useself = 'false', 
       @locallogin = 'Joe', 
       @rmtuser = 'OrclUsr', 
       @rmtpassword = 'OrclPwd'
    

Aplique las reglas siguientes cuando haga referencia a las tablas de un servidor vinculado Oracle:

  • Si los nombres de tabla y de columna fueron creados en Oracle sin identificadores entre comillas, use nombres en mayúsculas.

  • Si los nombres de tabla y de columna fueron creados en Oracle con identificadores entre comillas, use los nombres con las mismas letras en minúsculas o en mayúsculas que se usaron cuando se crearon en Oracle.

  • Las instrucciones INSERT deben suministrar valores para todas las columnas de una tabla aunque determinadas columnas puedan ser NULL o tener valores predeterminados.

  • Este proveedor no admite el envío directo de literales datetime como argumentos en el formato siguiente:

    EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
    

    Por ejemplo, no se admite la siguiente utilización del literal datetime'14-sep-94':

    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
    

    En su lugar, cree una variable datetime, asígnele el valor literal y llame a EXEC con la variable como argumento:

    DECLARE @v1 datetime
    SET @v1 = CONVERT(datetime,'14-sep-94')
    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
    

Restricciones

SQL Server no admite la utilización de la función de agregado AVG en tablas Oracle porque el proveedor Oracle devuelve el tipo de OLE DB DBTYPE_VARNUMERIC. SQL Server no admite DBTYPE_VARNUMERIC. Por ejemplo, el código siguiente genera un error:

SELECT AVG(QTY)
FROM ORA..RPUBS.SALES

Para evitar el error, use OPENQUERY. Por ejemplo:

SELECT *
FROM OPENQUERY(ORA,
   'SELECT CAST (AVG(QTY) AS numeric)
   FROM ORA..RPUBS.SALES')

Entradas del registro

Para que el proveedor OLE DB para Oracle funcione con el software de cliente Oracle, se debe modificar el registro del cliente. Para ello, es necesario ejecutar un archivo de registro desde una línea de comandos. Se recomienda no ejecutar simultáneamente varias instancias del software de cliente. Los archivos, que se enumeran en la tabla siguiente, están situados en la misma estructura de directorios que contiene la instalación de Microsoft Data Access Components (MDAC). Normalmente, la estructura es C:\Archivos de programa\Archivos comunes\System Files\OLE DB.

Cliente Oracle

Windows NT o 9x

Windows 2000

7.x

mtxoci7x_winnt.reg

mtxoci7x_win2k.reg

8.0

mtxoci80_winnt.reg

mtxoci80_win2k.reg

8.1

mtxoci81_winnt.reg

mtxoci81_win2k.reg