How to create oracle linked server in oracle server itself?
The concept you are looking for on the Oracle side is a Database Link.  See this introductory information in the Concepts Guide.  Then follow the link at the end of the section to the Administrators Guide where you can learn more about it.  You will also want to look at the Database Gateway documentation for the OS you are on, specifically the section on Configuring Oracle Database Gateway for ODBC which will explain steps need to prepare the system for non-Oracle Database Links.

To answer your concerns...


Read only access is fine as long as you don't want to change the remote database.
Not being able to create remote views or stored procedures won't be a problem.  If you create Materialized Views then a remote Materialized View Log may be useful, but not necessary.
Using database links on the Oracle side you can create views of remote tables or even join local data with remote data.  Yes, the speed is comparable. It won't be as fast since the data has to flow over the network, and sometimes the query plan won't be ideal, but these may not be issues depending on your situation. 


Here are the steps you will need to perform:


Create a system DSN.
Create an appropriate ORACLE_HOME\hs\admin\ .ora file.
Add an appropriate ORACLE_HOME\network\admin\listener.ora entry.
Add an appropriate ORACLE\network\admin\tnsnames.ora entry.
Reload the listener.
Create the database link.