監聽配置細節引數詳解兩則
-
Listener.ora中的ADR_BASE_LISTENER引數是什麼意思?
ADR_BASE_LISTENER=/u01/app用來指定監聽的log和trace放在哪裡。
Purpose
To specify the base directory in to which tracing and logging incidents are stored when ADR is enabled.
Default
The default is ORACLE_BASE, or ORACLE_HOME/log if ORACLE_BASE is not defined.
Values
Any valid directory path to a directory with write permission. -
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))是什麼意思?
在程式設計過程中,我們可能會發現有些功能透過PL/SQL完成會很麻煩,而透過C/C++語言程式設計則會容易很多。因此,Oracle提供了在PL/SQL程式裡直接呼叫外部函式(包括C函式或Java方法)的功能。呼叫外部函式的過程如下:
——使用者程式執行PL/SQL程式。
——在執行的PL/SQL程式過程中,呼叫了一個C/C++語言寫的函式:c_func。這裡需要藉助別名庫(Alias Library)。別命苦是資料庫裡的一個物件,用來描述一個外部函式所在的動態連結庫的路徑和名稱。透過別名庫,從而可以知道呼叫的外部函式在哪個檔案裡。
——PL/SQL將對外部函式的呼叫請求發給監聽器。
——監聽器生成一個extproc程式,該程式專門用來處理對外部函式的呼叫。每個session都會生成一個屬於該session的extproc程式,並且在整個session生命週期裡,extproc程式會一直存在。
——Extproc程式負責將別名庫所指定的動態連結庫檔案載入到記憶體。
——Extproc程式執行指定的外部函式,並將結果返回給伺服器程式,進而返回給使用者程式。
需要對監聽器進行配置(在listener.ora檔案中配置),從而啟動extproc程式。其中“(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))”說明監聽extproc程式請求的地址;而SID_DESC部分則說明extproc程式的連線資訊。
然後我們還要配置tnsnames.ora檔案,注意,該檔案也必須位於資料庫伺服器端(應該是說,tnsname.ora檔案的以下內容屬於資料庫客戶端的)。我們需要新增如下內容:
EXTPROC_CONNECTION_DATA=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))
)
(CONNECT_DATA=
(SID=PLSExtProc)
)
)
配置完畢以後,可以嘗試tnsping 連線字串名稱,如果成功,則說明監聽沒有問題。
[oracle@book admin]$ tnsping EXTPROC_CONNECTION_DATA下面用例子說明上面內容。
接下來,我們建立一個C語言編寫的函式,如下:
[oracle@book ~]$ vi calc_tax.c
calc_tax(n)
int n;
{
int tax;
tax=(n*15)/100;
return(tax);
}
該函式完成的功能非常簡單,計算傳入引數的15%,並作為稅額返回給呼叫者。
將calc_tax.c檔案編譯成動態連結庫,並將生成的庫檔案複製到$ORACLE_HOME/bin目錄下:
[oracle@book ~]$ cc -shared -o calc_tax.so calc_tax.c
[oracle@book ~]$ cp calc_tax.so $ORACLE_HOME/bin
然後,我們建立一個別名庫,用來說明將要呼叫的C函式所在的庫檔案,並將使用c_code別名庫的許可權賦給HR使用者:
SQL> connect / as sysdba
SQL> create or replace library c_code as '$ORACLE_HOME/bin/calc_tax.so';
2 /
SQL> grant execute on c_code to hr;
要使用這個calc_tax函式,還需要在資料庫裡建立一個呼叫宣告。如下所示:
SQL> connect hr/hr
SQL> create or replace function call_c
2 (x binary_integer)
3 return binary_integer
4 as language c
5 library sys.c_code
6 name "calc_tax";
7 /
在呼叫宣告裡定義了calc_tax函式的傳入傳出引數、所在的別名庫名稱(library sys.c_code 部分)以及在動態連結庫中的函式名(name "calc_tax")等。
現在,我們就可以透過呼叫call_c,進而呼叫calc_tax函式了。如下所示:
SQL> set serveroutput on
SQL> var v_salary number;
SQL> var v_tax number;
SQL> exec :v_salary := 10000;
SQL> exec :v_tax := call_c(:v_salary);
SQL> print v_tax;
V_TAX
-----------
1500
從返回結果可以看到,我們成功呼叫了C函式calc_tax。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994536/viewspace-2764312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 監聽配置詳解
- UDEV規則引數詳細解釋使用dev
- Oracle 監聽配置詳解Oracle
- DataGuard引數配置詳解
- struts配置引數詳解
- Oracle LISTENER監聽檔案引數詳解及Lsnrctl命令綜述Oracle
- 函式解構引數小細節函式
- tnsnames.ora監聽配置檔案詳解
- 【監聽】配置服務端靜態(動態)監聽/修改監聽埠及引數local_listener作用服務端
- Mysql配置引數詳解(一)MySql
- Prometheus hashmod 配置引數詳解Prometheus
- oracle RMAN引數配置詳解Oracle
- Webpack(含 4)配置詳解——關注細節Web
- MySQL relay log 詳細引數解釋MySql
- mysqldump匯出引數詳細解釋MySql
- Nginx 配置檔案引數詳解Nginx
- redis配置檔案引數詳解Redis
- 兩數之和詳細解答
- 蘋果iPhone XS配置引數與圖賞 帶你瞭解iPhone XS的細節蘋果iPhone
- compose配置檔案引數詳解
- sap入門--sap配置引數詳解
- Redis 主從配置和引數詳解Redis
- ansible.cfg 配置引數詳解
- ES6中rest引數詳細講解REST
- 【監聽】兩庫互配靜態監聽
- mysqldump引數詳細說明MySql
- MongoDB啟動檔案配置引數詳解MongoDB
- MySQL8.0新增配置引數詳解MySql
- consul配置引數大全、詳解、總結
- redis配置檔案中各引數詳解Redis
- AIX maxperm引數導致監聽問題AI
- 引數session_cached_cursors的詳細解釋(zt)Session
- MongoDB啟動命令mongod引數的詳細解釋MongoDB
- 三星Note7引數配置、效能詳細評測
- Linux網路卡配置檔案 引數詳解Linux
- MySQL配置檔案mysql.ini引數詳解MySql
- Android 解除安裝監聽詳解Android
- Oracle 靜態監聽註冊詳解Oracle