實現Oracle對ldap資料的各類操作
在Oracle下實現對ldap資料的操作
當然,大前提是ldap和資料庫之間的網路是要通的。
Oracle連線ldap的步驟:
首先用dbms_ldap.init(host, port)進行初始化。
該函式返回一個dbms_ldap.session型別的控制程式碼。
初始化後開始用使用者名稱和密碼去登入ldap:dbms_ldap.simple_bind_s(session, user, password);
這個函式中的session即前面init函式返回的值。
simple_bind_s這個函式又返回一個狀態碼,如果成功就返回0.
到這裡,ldap的連線已經完成。
下面就是對ldap資料的操作了。
首先是新增:dbms_ldap.add_s();
Oracle對ldap資料的新增過程如下:
1、定義一個要新增的資料集
l_array dbms_ldap.mod_array;
l_array := dbms_ldap.create_mod_array(5);--5是指陣列個數
2、指定要增加的屬性及屬性的值
l_add_vals dbms_ldap.string_collection;
產品屬性
l_add_vals(1) := '2009-01-01';
dbms_ldap.populate_mod_array(l_array, dbms_ldap.mod_add, 'activedate', l_add_vals);
l_add_vals(1) := '2019-01-01';
dbms_ldap.populate_mod_array(l_array, dbms_ldap.mod_add, 'inactivedate', l_add_vals);
公共屬性
l_add_vals(1) := 'top';
l_add_vals(2) := 'subproduct';
dbms_ldap.populate_mod_array(l_array, dbms_ldap.MOD_ADD, 'objectclass', l_add_vals);
相當於把所有的這些值都push到l_array這個堆疊裡面去了,最後再統一地對堆疊裡面的資料進行一次性處理:
dbms_ldap.add_s(l_session, l_userdn, l_array);
l_userdn是指定要新增的節點dn。
我們要在“11040320102052544C21B7F8”這個機頂盒下,增加82303601這個產品,則就應該如下:
'productid=82303601, stbid=11040320102052544C21B7F8,cn=Subscriber, l=ipauth,dc=iptv,dc=com'
這樣,如果之前ldap中沒有這個節點的話就會增加這麼一條,如果已經存在,則會報“already exist”這樣的資訊。
最後一步,斷開與ldap的連線
dbms_ldap.unbind_s(l_session);
詳細的操作過程
create or replace procedure w_proc_ldapadd(ldap_host varchar2,
ldap_port varchar2 default '389',
ldap_user varchar2 default 'cn=manager',
ldap_passwd varchar2 default 'onewaveinc',
ldap_userdn varchar2, --指定要增加的節點
active_date date ,
inactive_date date
) as
/*Created by
* 注意:該儲存過程對ldap操作的許可權很大,需要謹慎操作
*/
l_ldap_host varchar2(256) := ldap_host;
l_ldap_port varchar2(256) := ldap_port;
l_ldap_user varchar2(256) := ldap_user;
l_ldap_passwd varchar2(256) := ldap_passwd;
l_retval pls_integer;
l_session dbms_ldap.session;
l_add_vals dbms_ldap.string_collection;
v_inactivedate varchar2(14) := to_char(inactive_date, 'yyyymmddhh24mi');
v_activedate varchar2(14) := to_char(active_date, 'yyyymmddhh24mi');
l_array dbms_ldap.MOD_ARRAY;
begin
dbms_ldap.use_exception := true;
begin-- 連線ldap伺服器
l_session := dbms_ldap.init(l_ldap_host, l_ldap_port);
l_retval := dbms_ldap.simple_bind_s(l_session, l_ldap_user, l_ldap_passwd);
exception when others then
dbms_output.put_line('coerr');
return;
end;
--增加資料
l_array := dbms_ldap.create_mod_array(5);
l_add_vals(1) := v_inactivedate;
dbms_ldap.populate_mod_array(l_array, dbms_ldap.MOD_ADD, 'inactivedate', l_add_vals);
l_add_vals(1) := v_activedate;
dbms_ldap.populate_mod_array(l_array, dbms_ldap.MOD_ADD, 'activedate', l_add_vals);
l_add_vals(1) := 'top';
l_add_vals(2) := 'subproduct';
dbms_ldap.populate_mod_array(l_array, dbms_ldap.MOD_ADD, 'objectclass', l_add_vals);
l_retval := dbms_ldap.add_s(l_session, ldap_userdn, l_array);
dbms_ldap.free_mod_array(l_array); --釋放陣列
dbms_output.put_line(l_retval);
-- 斷開與ldap的連線
l_retval := dbms_ldap.unbind_s(l_session);
end w_proc_ldapadd;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-566581/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用DBMS_LDAP實現LDAP與ORACLE的資料同步LDAOracle
- dbms_ldap實現ldap資料修改LDA
- 用Asp實現對ORACLE資料庫的操作Oracle資料庫
- PHP常用操作類實現——資料庫操作類PHP資料庫
- 使用GoldenGate 實現Oracle for Oracle 單向資料同步(實現表的DML操作同步)GoOracle
- Oracle在各類操作上LOCK_SGA的設定Oracle
- Oracle資料庫中對BLOB資料的操作問題Oracle資料庫
- 對 oracle 資料庫日期格式,以及對日期操作的理解Oracle資料庫
- JSP實現servlet對資料庫的增刪查改操作JSServlet資料庫
- Java中各Set實現類的效能分析Java
- 水煮oracle29----oracle中對資料的批量操作測試Oracle
- 資料庫工具類實現資料庫
- MySql 資料操作類MySql
- 各類排序演算法的c++實現排序演算法C++
- 各類垃圾車的免徵操作流程
- hibernate及SpringBoot整合Jpa實現對資料庫操作Spring Boot資料庫
- Oracle和MySQL資料庫CTAS等操作對比OracleMySql資料庫
- 【資料結構】 各種排序演算法的實現資料結構排序演算法
- 對類物件的方法操作物件
- 使用java登入遠端LINUX並對服務實現各種操作JavaLinux
- Oracle實驗6--掌握Oracle資料庫的日誌操作Oracle資料庫
- Oracle 跨使用者表間資料操作(觸發器實現)Oracle觸發器
- c# 對檔案的各種操作C#
- ORACLE中各類NAME的簡介Oracle
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- 自寫的使用PDO對mysql資料庫的增刪改查操作類MySql資料庫
- Python實戰之Oracle資料庫操作PythonOracle資料庫
- Oracle的4類資料字典Oracle
- SQLAIchemy對資料基本操作SQLAI
- 使用GraphQL對資料模型和訊息格式實現類似XML的DTD驗證模型XML
- 在.net中用資料工廠實現多資料庫的操作方案資料庫
- oracle對BLOB型別資料的操作與效能問題(轉載)Oracle型別
- Java對各種檔案的操作詳解Java
- ORACLE資料庫各個版本PATCHOracle資料庫
- LDAP啟動TLS 完整操作流程LDATLS
- Mysql資料庫亂碼出現的各個階段以及對應方法MySql資料庫
- 資料分析 | Numpy實戰(三) - 分析各類使用者佔比
- 怎麼實現File類的相關操作啊?