⑴ 如何查看linux下的oracle存儲過程
步驟:
1) 在Linux系統中創建一個目錄用來存放本操作需要用到的文件:
[root@dbserv ~]# mkdir /sunjava
2) 在Linux系統中將Java程序的ExcelOperate.class文件、.jar、ojdbc.jar放到sunjava目錄下:
[root@dbserv ~]# cp /home/oracle/ExcelOperate.class /sunjava
[root@dbserv ~]# cp /home/oracle/poi.jar /sunjava
[root@dbserv ~]# cp /home/oracle/jdbc.jar /sunjava
3) 在Linux系統中配置Java相關環境變數:
用gedit 打開配置文件profile文件:
[root@dbserv ~]# gedit /etc/profile
在配置文件的最後添加(或者存在的情況下修改)如下代碼:
export JAVA_HOME=/usr/java/ jdk1.6.0_32
exprot JAVA_BIN=/usr/java/ jdk1.6.0_32 /bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/sunjava/poi.jar:/sunjava/jdbc.jar/:/sunjava/
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME JAVA_BIN CLASSPATH PATH
說明:在CLASSPATH增加了外部包所在的位置;最好將.class文件所在的路徑也添加進去。
4)將引用的外部包jar文件復制到Oracle
的"$ORACLE_HOME/sqlj/lib"目錄中:
[root@dbserv sunjava] cp
poi.jar $ORACLE_HOME/sqlj/lib
[root@dbserv sunjava] cp jdbc.jar $ORACLE_HOME/sqlj/lib
4)進入Oracle的"$ORACLE_HOME/sqlj/lib"目錄中,通過 loadjava命令,將調用的外部包放到Oracle資料庫中:
# 10gR2
loadjava -u sys/password -r -v -f -genmissing -s -grant public demo1.jar demo2.jar
# 11g
loadjava -u sys/password -r -v -f -genmissing -s -grant public demo1.jar demo2.jar
[root@dbserv lib] loadjava -u apps/apps -r -v -f -genmissing -s -grant public poi.jar jdbc.jar
5)在Oracle資料庫中:
--創建資料庫中的目錄(將.class文件所在的物理目錄映射到資料庫中的目錄)
CREATE OR REPLACE DIRECTORY test_dir AS '/sunjava';
--
創建資料庫中的Java class
(將需要調用的Java class文件映射到資料庫中的Java Class)
CREATE OR REPLACE JAVA CLASS USING BFILE(test_dir,'ExcelOperate.class');
--檢查是否創建成功
SELECT a.OBJECT_NAME, a.OBJECT_TYPE,a.status FROM user_objects a WHERE a.OBJECT_NAME LIKE '%ExcelOperate%';
--創建調用Java程序的存儲過程
CREATE OR REPLACE PROCEDURE test_java AS LANGUAGE JAVA
NAME 'ExcelOperate.main(java.lang.String[])';
--設置輸出
SET SERVEROUTPUT ON SIZE 5000;
CALL DBMS_JAVA.SET_OUTPUT(5000);
--執行存儲過程
EXECUTE test_java;
⑵ 如何oracle數據更新時觸發java代碼
oracle數據更新時觸發java代碼的步驟如下:
1。編寫JAVA程序
publicclassMain{
publicstaticvoidmodify(StringstatTime)
{
Stringdatas="/var/spool/cron/oracle";
Filedata=newFile(datas);
StringBufferbackup=null;
try{
StringBuffercontent=newStringBuffer();
backup=newStringBuffer();
BufferedReadersan=newBufferedReader(newFileReader(data));
Stringline=null;
while((line=san.readLine())!=null)
{
backup.append(line);
backup.append("/n");
}
content.append("15");
content.append(statTime.trim());
content.append("***/home/oracle/task.sh");
content.append("/n");
content.append("13");
content.append(statTime.trim());
content.append("***/home/oracle/tj_task/task2.sh");
content.append("/n");
FileWriterwriter=newFileWriter(data,false);
writer.write(content.toString());
writer.flush();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
try
{
FileWriterwriter=newFileWriter(data,false);
writer.write(backup.toString());
writer.flush();
}catch(Exceptionex)
{
ex.printStackTrace();
}
}
}
}
注意,這里寫JAVA程序不需要遵循標準的JAVA程序,一定要有main入口函數,相反,這里的函數一般不要取名為main,除非格式是標準的main 函數格式
2。把JAVA程序LOAD進oracle
在$ORACLE_HOME/bin目錄下有個LOADJAVA命令,使用這個命令將剛寫好的JAVA程序LOAD進資料庫。
loadjava -usertest/test@test-o -v -f -r Main.java
如果成功的話,會列印出來信息提示成功,若程序有編譯錯誤的話,也會提示錯誤的地方。
3。修改許可權
首先以管理員身份登錄進資料庫
sqlplus / as sysdba
然後執行
begin
dbms_java.grant_permission('TEST','SYS:java.io.FilePermission','/var/spool/cron/oracle','read,write,execute,delete');
end;
/
執行完畢後,在資料庫里執行上述JAVA程序時,就擁有讀寫該文件的許可權了。
4。創建存儲過程
進入到資料庫,在SQLPLUS命令行
create or replace procere Modify(name varchar2) as language java name 'Main.modify(java.lang.String)';
/
會提示創建存儲過程成功。
5。增加trigger
TOAD里直接針對某個表增加trigger,所以關鍵部分的代碼
begin
if :old.name = 'time' then
Modify(:new.value);
end if;
end;
⑶ 我下載了java和oracle,不過在oracle那一按就顯示無法載入java runtime environment,求解答,無限感激
請按照如下步驟檢查:
開始->運行->CMD,打開命令行,輸入java,確認JAVA 安裝成功;
看看你安裝的java runtime environment 版本?
你的操作系統是?瀏覽器版本是?
我需要先知道以上信息才能幫你分析原因