我目前正在使用Oracle 11g R2 express版。如何使用java应用程序备份数据库?有可能吗?
答案 0 :(得分: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
程序(使用CallableStatement
)
转储将写在服务器上,而不是客户端上!
有关详细信息,请参阅手册:
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_datpmp.htm
答案 1 :(得分:0)
嗯,通常你可以,因为你可以提取数据并存储SQL结构(表,约束,索引等) 您可能会发现有用this 您还可以使用YAML格式存储数据。