(一)
Oracle 資料庫有其它資料庫所沒有的 Schema,亦即某個使用者 user1 建立的 table,專屬於該使用者的 Schema。別的使用者要存取,必須在 table 前面加上「建立的使用者名稱稱」,如:
select * from user1.table1;
若要讓 ASP.NET 能順利聯機,最簡單的方式,就是建立 table、聯機帳號,都用同一個 Oracle 的使用者。如此一來,SQL 陳述式的每個 table 前面,即不用再加上「建立的使用者名稱稱」,如:
select * from table1;
即使最高許可權的 System, Sys 使用者,要讀取一般使用者建的 table 亦然。
另外一種解決方式,就是授予該 table 一個所有人可共用的「synonym (同義字;別名)」,如:
create public synonym 別名名稱 for 建立表的使用者.表名稱;
drop public synonym 別名名稱;
(二)
設定讓某個 Oracle 的使用者,具有存取某個或全部 table 的許可權:
grant select any table to 使用者;
grant select on 建立表的使用者.表名稱 to 使用者名稱稱;
grant all on 表名稱 to public;
但這和之前 (一) 的 Schema 無關。亦即在 Oracle 中,某個使用者建立的表,別的使用者即使有許可權讀取,仍要在表的前面加上「建立的使用者名稱稱」,如:
select * from user1.table1;
(三)
Web.config 可用的 Oracle 聯機設定:
(1) Visual Studio 內建的 OracleClient、OleDb:
<add name="ConnString_OleDb_MS" connectionString="Provider=MSDAORA;Data Source=192.168.0.1:1521/orcl;User ID=使用者;Password=密碼;Unicode=True;Connection Timeout=60"
providerName="System.Data.OleDb" />
<add name="ConnString_OracleClient" connectionString="Data Source=192.168.0.1:1521/orcl;User Id=使用者;Password=密碼;Integrated Security=no;Unicode=True"
providerName="System.Data.OracleClient" />
(2) 要另外從 Oracle 網站下載的:
<add name="ConnString_OleDb_Oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=192.168.0.1:1521/orcl;User Id=使用者;Password=密碼;Unicode=True;" providerName="System.Data.OleDb" />
但要注意,Visual Studio 2005 / ADO.NET 2.0 內建的 OleDb for Oracle 無法正確顯示、寫入特殊字元和他國文字,必須改用 OracleClient,或用 Oracle 官方提供的 OleDb 才能處理 Unicode 中的特殊字元。