我目前正在使用 Oracle 11g R2 速成版。如何使用 java 应用程序备份我的数据库?可能吗?
问问题
4554 次
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 回答