我的问题是:数据库ASA存在于远程机子上运行,而进行数据库备份的操作控制台在本地运行.如何将数据库的备份文件取回到本地来.还有如果在asa创建event来执行数据库备份时,那又如何处理,才能将数据库备份文件取回到本地来. 注意控制台程序是用java swing编写的.  
   哪位高手指点一下!谢谢!
    

解决方案 »

  1.   

    用C/S结构的通讯程序实现如何,这里有代码:
    1.文件服务端
    import java.io.*;
    import java.net.*;public class RemoteFileServer {
    int listenPort;
    public RemoteFileServer(int listenPort) {
    this.listenPort=listenPort;
    }
    //允许客户机连接到服务器,等待客户机请求
    public void acceptConnections() {
    try {
    ServerSocket server = new ServerSocket(listenPort);
    Socket incomingConnection = null;
    while(true) {
    incomingConnection = server.accept();
    handleConnection(incomingConnection);
    }
    }
    catch(BindException e) {
    System.out.println("Unable to bind to port "+listenPort);
    }
    catch(IOException e) {
    System.out.println("Unable to instantiate a ServerSocket on port: "+listenPort);
    }
    }
    //与客户机Socket交互以将客户机所请求的文件的内容发送到客户机
    public void handleConnection(Socket incomingConnection) {
    try {
    InputStream inputFromSocket = incomingConnection.getInputStream();
    OutputStream outputToSocket = incomingConnection.getOutputStream();

    InputStreamReader inputFromStream = new InputStreamReader(inputFromSocket);
    BufferedReader bufferedStreamReader = new BufferedReader(inputFromStream);
    String fileName = bufferedStreamReader.readLine();
    System.out.println("请求文件:"+fileName);
    File file = new File(fileName);
    FileReader fileReader = new FileReader(file);
    BufferedReader bufferedFileReader = new BufferedReader(fileReader);
    PrintWriter streamWriter = new PrintWriter(outputToSocket); String line = null;
    while((line=bufferedFileReader.readLine())!=null) {
    streamWriter.println(line);
    }

    fileReader.close();
    streamWriter.close();
    bufferedStreamReader.close();
    System.out.println("完成文件:"+fileName);
    }
    catch(Exception e) {
    System.out.println("Error handling a client: "+e);
    e.printStackTrace();
    }
    }
    public static void main(String args[]) {
    System.out.println("FileServer");
    RemoteFileServer server = new RemoteFileServer(1001);
    server.acceptConnections();
    }
    }
    2.文件请求端
    import java.io.*;
    import java.net.*;public class RemoteFileClient {
    protected BufferedReader socketReader;
    protected PrintWriter socketWriter;
    protected String hostIp;
    protected int hostPort;
    public static boolean bConnected;
    //构造方法
    public RemoteFileClient(String hostIp, int hostPort) {
    this.hostIp = hostIp;
    this.hostPort=hostPort;
    bConnected=false;
    }
    //连接到远程服务器
    public void setUpConnection() {
    try {
    Socket client = new Socket(hostIp, hostPort);
    socketReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
    socketWriter = new PrintWriter(client.getOutputStream());
    bConnected=true;
    } catch(UnknownHostException e) {
    System.out.println("Error1 setting up socket connection: unknown host at "+hostIp+":"+hostPort);
    bConnected=false;
    } catch(IOException e) {
    System.out.println("Error2 setting up socket connection: "+e);
    bConnected=false;
    }
    }
    //断开远程服务器
    public void tearDownConnection() {
    try {
    socketWriter.close();
    socketReader.close();
    bConnected=false;
    } catch(IOException e) {
    System.out.println("Error tearing down socket connection: "+e);
    }
    }
    //向服务器请求文件的内容
    public String getFile(String fileNameToGet) {
    StringBuffer fileLines = new StringBuffer();
    try {
    socketWriter.println(fileNameToGet);
    socketWriter.flush();
    String line = null;
    while((line=socketReader.readLine())!=null)
    fileLines.append(line+"\n");
    } catch(IOException e) {
    System.out.println("Error reading from file: "+fileNameToGet);
    }
    return fileLines.toString();
    }
    public static void main(String args[]) throws Exception {
         while(true) {
         BufferedReader fin=new BufferedReader(new InputStreamReader(System.in));
         String fileName=null;
            System.out.println("输入请求传输的文件名称");
        fileName=fin.readLine();
        if(fileName=="\n")
         break;
    RemoteFileClient remoteFileClient = new RemoteFileClient("127.0.0.1",1001);
    remoteFileClient.setUpConnection();
    if(bConnected) {
    StringBuffer fileContents = new StringBuffer();
    fileContents.append(remoteFileClient.getFile(fileName));
    //System.out.println(fileContents);
    System.out.println("OK");
    remoteFileClient.tearDownConnection();
    }
         }
    }
    }
      

  2.   

    Oracle数据库都有命令直接可以实现的.
      

  3.   

    推荐 www.fmq.com.cn 用数据交换中间件~~ 
    第一步:远程机器将生成的文件写入fmq队列,交换平台会把它发送到本地
    第二步:你这边编写的程序通过java api 或其他接口从交换平台取出处理既可立刻解决问题~~~
      

  4.   

    再次说明一下,请支持国产中间件,fmq中间件是免费的~~~