编程爱好者programmer.wenlong@gmail.comOracle远程数据备份编程爱好者编程爱好者programmer.wenlong@gmail.com版本信息版本号发布人日期版本摘要V1.0Wenlong2011-3-14创建Copyright©2010WenlongAllRightsReserved编程爱好者programmer.wenlong@gmail.com目录1.备份数据库........................................................................-1-2.恢复数据库........................................................................-1-3.备份单表............................................................................-1-3.1.简单备份......................................................................................................-1-3.2.查询备份......................................................................................................-1-4.恢复单表............................................................................-2-4.1.恢复表结构..................................................................................................-2-4.2.恢复表数据..................................................................................................-2-5.关于表空间的问题..............................................................-2-Oracle远程备份恢复数据-1-1.备份数据库对整个数据库进行备份,参数设置为默认值expg3datatest/g3datatest@10.12.1.21file=d:/g3datatest.dmpdirect=y2.恢复数据库对整个数据库进行恢复,参数设置为默认值impg3datatest/g3datatest@10.12.1.21file=c:/Backup/drug.dmpfull=y3.备份单表3.1.简单备份只对数据库中的某一表进行备份expg3datatest/g3datatest@10.12.1.21file=c:/Backup/drug.dmptables=(TABLE_TEST)3.2.查询备份单表备份可以带查询条件expprogrammer/programmer@localhostfile=d:\user_test.dmptables=TABLE_TESTquery=\whereID='1001'\Oracle远程备份恢复数据-2-4.恢复单表4.1.恢复表结构对备份的表进行表结构恢复impg3datatest/g3datatest@10.12.1.21file=c:/Backup/drug.dmptables=(TABLE_TEST)rows=n4.2.恢复表数据对备份的表进行数据恢复impg3datatest/g3datatest@10.12.1.21file=c:/Backup/drug.dmptables=(TABLE_TEST)ignore=y5.关于表空间的问题在备份和恢复数据库的时候,如果是在同一个用户下进行操作,即把某一个用户的数据库进行还原,就不会出现表空间的问题。如果实在不同用户下进行操作,即把某一个用户的数据库备份后恢复到另外一个用户,此时就会出现表空间的问题。具体的表空间问题描述如下:假设现在有两个Oracle用户user1和user2,用户信息如下表用户名表空间临时表空间角色系统权限USER1USER1USER1_TEMPCONNECTDBARESOURCEADMINISTERRESOURCEMANAGERCREATEANYTABLEUNLIMITEDTABLESPACEUSER2USER2USER2_TEMP同上同上用户USER1的表USER_TEST信息如下--CreatetablecreatetableUSER_TEST(IDNUMBER(12)notnull,NAMEVARCHAR2(50))Oracle远程备份恢复数据-3-tablespaceUSER1pctfree10initrans1maxtrans255storage(initial64minextents1maxextentsunlimited);--Create/Recreateprimary,uniqueandforeignkeyconstraintsaltertableUSER_TESTaddprimarykey(ID)usingindextablespaceUSER1pctfree10initrans2maxtrans255storage(initial64Kminextents1maxextentsunlimited);在USER_TEST表中随便插入几条记录的数据。然后通过Oracle数据库的备份命令exp对表进行备份,备份完成以后再通过恢复命令imp将用户USER1的表USER_TEST恢复到用户USER2,包括表结构和数据。在所有操作完成之后,通过查看用户USER2的USER_TEST表的表结构,我们会发现用户USER2的表USER_TEST的表空间还是用户USER1的表空间USER1,而不是用户USER2的默认表空间USER2。虽然表是从用户USER1备份恢复到USER2了,但是表空间却没有转换,这样恢复的表和以前的表空间在物理上还是有牵连,不是我们期待的结果。对于此问题,解决的思路就是撤回目标用户的任意表空间权限,使导入表的表空间为目标用户默认的表空间。测试表的脚本如下:createtableuser_test(idnumber(12),namevarchar2(50),primarykey(id));insertintouser_test(id,name)values(1001,'Jack');insertintouser_test(id,name)Oracle远程备份恢复数据-4-values(1002,'Mary');解决表空间问题的详细步骤如下:D:\expprogrammer/programmer@localhostfile=d:\user_test.dmptables=user_testExport:Release10.2.0.1.0-Productionon星期一3月1410:50:262011Copyright(c)1982,2005,Oracle.Allrightsreserved.连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OLAPandDataMiningoptions已导出ZHS16GBK字符集和AL16UTF16NCHAR字符集即将导出指定的表通过常规路径.....正在导出表USER_TEST导出了2行成功终止导出,没有出现警告。D:\sqlplus/nologSQL*Plus:Release10.2.0.1.0-Productionon星期一3月1410:50:522011Copyright(c)1982,2005,Oracle.Allrightsreserved.SQLconn/assysdba已连接。SQLcreateuserORACLETESTidentifiedbyoracletestdefaulttablespaceORACLETESTtemporarytablespaceORACLETEST_TEMP;用户已创建。SQLgrantdba,connect,resourcetoORACLETEST;授权成功。SQLrevokeunlimitedtablespacefromORACLETEST;撤销成功。SQLalteruserORACLETESTquota0onUSERS;用户已更改。SQLalteruserORACLETESTquotaunlimitedonORACLETEST;Oracle远程备份恢复数据-5-用户已更改。SQLexit从OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OLAPandDataMiningoptions断开D:\impprogrammer/programmer@localhostfile=d:\user_test.dmpfromuser=programmertouser=oracletestgrants=nImport:Release10.2.0.1.0-Productionon星期一3月1411:00:012011Copyright(c)1982,2005,Oracle.Allrightsreserved.连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OLAPandDataMiningoptions经由常规路径由EXPORT:V10.02.01创建的导出文件已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入.正在将PROGRAMMER的对象导入到ORACLETEST..正在导入表USER_TEST导入了2行成功终止导入,没有出现警告。D:\sqlplusoracletest/oracletestSQL*Plus:Release10.2.0.1.0-Productionon星期一3月1411:02:212011Copyright(c)1982,2005,Oracle.Allrightsreserved.连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OLAPandDataMiningoptionsSQLselecttable_name,tablespace_namefromuser_tables;TABLE_NAMETABLESPACE_NAME------------------------------------------------------------USER_TESTORACLETESTSQL根据不同的情况,过程可能有所差别,选择性的执行其中的SQL语句就能够完成表空间的转换。