【问题标题】:How to back up oracle database using java?如何使用java备份oracle数据库?
【发布时间】:2014-09-20 21:11:24
【问题描述】:

我目前使用的是 Oracle 11g R2 速成版。如何使用 java 应用程序备份我的数据库?有可能吗?

【问题讨论】:

  • 如果您有该数据库的 jdbc 驱动程序,那么一切皆有可能。做一些研究然后回来。
  • 今天晚上之前研究失败了。我没有办法做到这一点。我该怎么做?我有 JDBC Oracle 驱动程序
  • 让我们先问一下为什么要从 java 做它?您是否有必要使用 jdbc,因为您可以从程序中运行一个简单的导出命令
  • 找出你必须发送到数据库的Oracle命令来备份它,然后用你的驱动程序执行这些命令。

标签: java oracle11g


【解决方案1】:

这取决于您对“备份”的含义。如果要创建数据库转储,可以使用 dbms_datapump 包来实现。

因为它是一个常规的 PL/SQL 包,它可以很容易地通过 JDBC 调用。最简单的事情可能是将匿名 PL/SQL 块作为单个语句发送。

类似这样的:

String sql = 
  "DECLARE \n" +
  "  handle NUMBER; \n" +
  "BEGIN \n" +
  "  handle := DBMS_DATAPUMP.OPEN(operation => 'EXPORT', job_mode => 'SCHEMA', job_name => USER||'_DUMP', version => 'COMPATIBLE'); \n" +
  "  dbms_datapump.add_file(handle => handle, filename => 'db_backup', directory => 'EXPDP_DIR'); \n" +
  "  dbms_datapump.metadata_filter(handle, 'SCHEMA_LIST', '''SCOTT'''); \n" +
  "  dbms_datapump.start_job(handle); \n" +
  "  dbms_datapump.detach(handle); \n" +
  "END;";
Statement stmt = connection.createStatement();
stmt.execute(sql);

请注意,我遗漏了任何错误处理。或者,您可以单独调用每个dbms_datapump 过程(使用CallableStatement

转储将被写入服务器,而不是客户端!

更多详情请参考手册:
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_datpmp.htm

【讨论】:

    【解决方案2】:

    嗯,通常可以,因为您可以提取数据并存储 SQL 结构(表、约束、索引等) 您可能会发现有用的this 您也可以使用 YAML 格式来存储数据。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2012-04-29
    • 2011-05-20
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    相关资源
    最近更新 更多