简体   繁体   English

如何使用java备份oracle数据库?

[英]How to back up oracle database using java?

I'm currently using Oracle 11g R2 express edition. 我目前正在使用Oracle 11g R2 express版。 How can I back up my database using java application? 如何使用java应用程序备份数据库? Is it possible? 可能吗?

It depends on what you mean with "backup". 这取决于你对“备份”的意思。 If you want to create a dump of the database, you can do that using the dbms_datapump package. 如果要创建数据库转储,可以使用dbms_datapump包执行此操作。

As it is a regular PL/SQL package it can easily be called through JDBC. 由于它是一个常规的PL / SQL包,因此可以通过JDBC轻松调用它。 The easiest thing is probably to send an anonymous PL/SQL block as a single statement. 最简单的事情可能是将匿名PL / SQL块作为单个语句发送。

Something like this: 像这样的东西:

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);

Note that I left out any error handling. 请注意,我遗漏了任何错误处理。 Alternatively you can call each dbms_datapump procedure individually (using a CallableStatement ) 或者,您可以单独调用每个dbms_datapump过程(使用CallableStatement

The dump will will be written on the server, not on the client! 转储将写在服务器上,而不是客户端!

For more details please refer to the manual: 有关详细信息,请参阅手册:
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_datpmp.htm http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_datpmp.htm

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM