A SQL Server master gets to Oracle easily using linked servers:
Using the Oracle OLEDB provider results in an error when a query is executed unless ?Allow InProcess? is checked in the ?Oracle Provider for OLEDB? configuration setup from ?Provider Options?? button.
Oracle query syntax does not work for a linked server because SQL Server resolves the query. E.g. SQL Server has no idea what ROWNUM means in the following query:
SELECT PRV_NUM FROM ORCL..JOHN.MYTABLE WHERE ROWNUM < 21;
This query works fine because the query text is passed through to Oracle as is:
Note: Use of a variable in place of query string is NOT allowed(?!) (really sucks if you need to modify the query)
SELECT COL1 FROM OPENQUERY(ORCL,
'select NVL(COL1, ' ') as COL1 from JOHN.MYTABLE WHERE ROWNUM < 21')
******************
If Oracle is the master, getting to SQL Server using Oracle transparent gateway on Linux\Unix is not possible. What I've done is to load the SQL Server JDBC driver into Oracle and use Java stored procedures and/or functions. Definitely more work, but does the trick.