在上一篇文章 通过SQL查看alert_SID.log 中,使用了external table作为获取数据库服务器端文件的方法,这对于alert_sid.log来说问题不大,这个文件名是固定的,但如果需要查看trace文件,特别是event 10046的文件就很麻烦了,每个session都会生成一个不同名称的文件,需要每次都创建external table。这里考虑使用另外一种思路,通过java来获取文件,文件路径和名称由调用时传入:
首先创建一张表用于存储信息:
create table exec_result( output varchar2(4000));
创建一个数据库端的java类:
create or replace and compile java source named "Exec"
as
import java.io.*;
import java.sql.*;
public class Exec
{
public static void exec(String cmd) throws SQLException
{
try{
String[] cmdargs = cmd.split(" ");