⑴ 如何查看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 版本?
你的操作系统是?浏览器版本是?
我需要先知道以上信息才能帮你分析原因