使用ORACLE提供的EXPORT、IMPORT工具进行数据的逻辑备份与恢复,相信很多的ORACLE数据库爱好者都不会感到陌生。但是,如果数据库的应用比较简单只是进行数据备份或者迁移的话,还有另外一种比较简单快速的解决办法,那就是对数据库表空间的迁移。原理并不复杂,操作也比较简单,只是有一些小的地方开始也许不会注意到,因此在这里特别指出来。以下是我个人在工作中总结的一个基本操作步骤,在ORACLE8.1.5版本数据库WIN2000系统平台上测试过的,希望对大家的数据库维护工作有所帮助,当然,有不对的地方也欢迎大家批评指正,我的E-MAIL:SYSDBA@SINA.COM。 首先是注意事项:待迁移的表空间必须自包含,EXP、IMP工具版本必须与ORACLE数据库版本一致(不是相同),其次是要严格按照如下操作步骤进行,并请留意提示内容。 以下是操作步骤,1~5步操作在源数据库表空间操作完成,6、7、8步在目的数据库表空间操作完成。 1.用数据库管理员(INTERNAL)身份登录ORACLE,(CONNECT INTERNAL/******)。 2.将源tablsspace_name表空间置为READ ONLY,使得表空间下的数据文件置为READ ONLY状态,可以进行操作系统级的拷贝,(ALTER TABLESPACE tablsspace_name READ ONLY)。如果是生产系统请注意选择好进行此操作的时间。 3.利用EXP工具进行数据库表空间的迁移,(EXP INTERNAL/****** FILE=filename.DMP LOG=logname.LOG TRANSPORT_TABLESPACE=Y TABLESPACES=tablsspace_name BUFFER=1024000 )。 4.将待迁移的表空间下的所有数据文件进行操作系统级的拷贝,复制到目的数据库操作系统硬盘下。 5.将源tablsspace_name表空间置为READ WRITE,使得表空间下的数据文件置为READ WRITE状态,(ALTER TABLESPACE tablsspace_name READ WRITE)。 6.在目的数据库上建立相应的用户user_name并赋予CREATE SESSION权限。 7.在目的数据库上利用IMP工具进行数据库表空间的迁移,(IMP INTERNAL/****** FILE=filename.DMP LOG=logname.LOG TRANSPORT_TABLESPACE=Y TABLESPACES=tablsspace_name DATAFILES=datafile_name1,datafile_name2)。 8.在目的数据库上将目的tablsspace_name表空间置为READ WRITE,使得表空间下的数据文件置为READ WRITE状态,(ALTER TABLESPACE tablsspace_name READ WRITE)。 附加ORACLE文档中的相关提示内容,供参考。 1 .Do not transport the system tablespace or the temporary tablespace (You can't)! 2 .When Error ORA-06512 is occured , you should execute script of racle\RDBMS\DBMSPLTS.SQL. 3 .You must connect to database using user of 'SYS' to execute thie script also to run import! 4 .The parameter of db_block_size of destination database must be equal to the source database's!