4

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

4

2 回答 2

3

这取决于您对“备份”的含义。如果要创建数据库的转储,可以使用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过程(使用 a CallableStatement

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

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

于 2013-03-28T19:20:04.320 回答
0

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

于 2013-03-28T18:20:25.380 回答