با اومدن ورژن 11g، اوراکل محصول جدیدی رو به عنوان Database Gateway معرفی کرد که میتوان از آن برای اتصال به MSSQL و دیتابیسهای مختلف دیگه استفاده کرد.
Database Gateway با ورژنهای 10.1.0.5، 10.2.0.3 بعد از اعمال patchهای امنیتی سازگاره همچنین به طور مستقیم با ورژنهای 10.2.0.4، 10.2.0.5، 11.1 و 11.2 مشکلی نداره
مراحل زیر رو دنبال کنید و یادتون باشه این مراحل روی پلتفرمهای Linux/Unix کار میکنه البته برای باقی سیستمعاملها هم مراحل شبیه همین مراحلاند:
- اگه قبلاً Oracle Database Gateways رو دانلود نکردید تو قدم اول باید دانلود رو انجام بدید.
- Oracle Database Gateway رو برای Microsoft SQL Server نصب کنید.
- Database Gateway رو برای اتصال به Microsoft SQL Server کانفیگ کنید (DG4MSQL).
دانلود نرمافزار
Oracle Database Gateways رو از Oracle eDelivery یا Metalink دانلود کنید.
نصب Oracle Database Gateway for Microsoft SQL Server
فایلهای دانلود شده رو Unzip کنید بعد از اون یک دایرکتوری به نام gateway میبینید.
نام دایرکتوری رو به نام gateways تغییر بدید و installer رو اجرا کنید.
-bash-3.00$ cd /software/11gR2-Gateways/gateways/
-bash-3.00$ ./runInstaller
روی Next کلیک کنید:
تو این قسمت یک نام برای Oracle Home قرار بدید همچنین path باید به مسیر Oracle Home اشاره کند که به طور پیشفرض شناسایی میکند.
تو این پنجره Oracle Database Gateway for Microsoft SQL Server رو تیکدار کنید و روی Next کلیک کنید:
مشخصات Microsoft SQL Server که میخواین بهش وصل بشید رو وارد کنید. البته در حقیقت این تنظیمات چک نمیشوند و فقط در فایل کانفیگ ذخیره میشوند پس شما میتونید بعداً اینها رو تغییر بدید.
روی دکمهی Nextکلیک کنید:
روی Install کلیک کنید:
وقتی به این پنجره میرسید باید یک شل با کاربر root باز کنید و اسکریپت رو اجرا کنید (چون خود نصاب نمیتونه با کاربر root اسکریپت رو اجرا کنه)
root@host # /app/oracle/product/11.2.0/dbhome_1/root.sh
Running Oracle 11g root.sh script…
The following environment variables are set as:
ORACLE_OWNER = ora11g
ORACLE_HOME = /app/oracle/product/11.2.0/dbhome_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file “dbhome” already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y
Copying dbhome to /usr/local/bin …
The file “oraenv” already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y
Copying oraenv to /usr/local/bin …
The file “coraenv” already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y
Copying coraenv to /usr/local/bin …
Entries will be added to the /var/opt/oracle/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
حال روی دکمهی Exit کلیک کنید.
کانفیگ Oracle Database Gateway for Microsoft SQL Server
مطمئن بشید که مشخصات اتصال به MS SQL در dg4msql parameter file درست باشه.
-bash-3.00$ more $ORACLE_HOME/dg4msql/admin/initdg4msql.ora
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=[SERVER127]:4076//NewCDP16
# alternate connect format is hostname/serverinstance/databasename
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
-bash-3.00$ cd $ORACLE_HOME/network/admin
Append following in existing listener.ora. Change the name, path and port as required.
LISTENER_dg4mssql=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = <oracle host or IP>) (PORT = <any unused port>))
)
)
)
SID_LIST_LISTENER_dg4mssql=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=/app/oracle/product/11.2.0/dbhome_1)
(ENV=”LD_LIBRARY_PATH=/app/oracle/product/11.2.0/dbhome_1/dg4msql/driver/lib:/app/oracle/product/11.2.0/dbhome_1/lib”)
(PROGRAM=dg4msql)
)
)
listener جدید رو استارت کنید
-bash-3.00$ lsnrctl start LISTENER_dg4mssql
مطمئن بشید که سرویس listener کار میکنه
-bash-3.00$ lsnrctl status LISTENER_dg4mssql
…
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<oracle hostname or IP>)(PORT=1551)))
Services Summary…
Service “dg4msql” has 1 instance(s).
Instance “dg4msql”, status UNKNOWN, has 1 handler(s) for this service…
The command completed successfully
خطوط زیر رو به فایل tnsnames.ora اضافه کنید
dg4msql =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=< oracle hostname or IP >)(PORT=1551))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)
-bash-3.00$ tnsping dg4msql
TNS Ping Utility for Solaris: Version 11.2.0.1.0 – Production on 07-JAN-2014 12:30:08
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Used parameter files:
/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=<host>)(PORT=1551)) (CONNECT_DATA=(SID=dg4msql)) (HS=OK))
OK (0 msec)
ساخت database link
در آخر هم کافیه فقط یک database link بسازید و نامکاربری و پسورد رو بدید. یادتون باشه نامکاربری از قبل باید در MS SQL ساخته شده باشه
SQL> CREATE DATABASE LINK sqlserver CONNECT TO “SQLUser” IDENTIFIED BY “SQLPass” USING ‘dg4msql';
Database link created.
SQL> select count(1) from “SQLView”@sqlserver;
COUNT(1)
———-
24592
تبریک حالا شما میتونید اطلاعات جداول MS SQL به وسیلهی Oracle بخونید
نکات
یادتون باشه که oracle_home رو در نصب gateway یک چیز دیگه از مسیر موجود بدید. مثلا مسیر دیتابیس اینه:
/u01/app/oracle/product/11.2.0/dbhome_1
و شما باید یه نام دیگه و مسیر زیر رو مثلا در نرم افزار بذارید:
/u01/app/oracle/product/11.2.0/dbhome_2
بعد از نصب نرم افزار نوبت به listener.ora و tnsname.ora میرسه.
از مسیر /u01/app/oracle/product/11.2.0/dbhome_2/dg4msql/admin ، listener.ora.sample و tnsname رو مقادیرش رو ببر در فایل های اصلی خودتون در مسیر network/admin
اینجوری نیازی به تعریف listener جدید نیست.
بعد از این کار listener را reload کنید و dblink رو بسازید.