返回

浅谈Oracle数据库搬家那些事儿

开发工具

Oracle数据库搬家牵扯出的一些知识点记录

从开发到测试到生产,Oracle数据库经常会伴随着项目的不同阶段进行“搬家”,搬家工作看起来比较简单,但真正实施起来也有不少值得注意的细节,包括后续的恢复工作,如果掉以轻心或者方案设计的不够合理,很容易造成“损失”。

搬家工作看似简单,除了将数据库文件拷贝到新机器中,还包括迁移系统服务和数据,是整个项目的重中之重,需要深入的系统知识。平时如果对Oracle系统的接触少,很容易因为一些常识性错误导致搬家失败。以下是本人在搬家过程中所遇到的坑和解决办法。

一、备份恢复

首要任务是备份,备份方式有多种,可以是逻辑备份也可以是物理备份,常用的是物理备份,也就是EXPORT和IMPORT,这种方式的优点是可以指定空间、时间等,缺点就是备份时必须停止业务,占用资源,并且恢复时也必须停止业务,不适合用于生产环境。

EXPORT:把数据从数据库服务器导出到操作系统文件,得到转储文件。

  exp [<username>/<password>@]<db_link> [schemas=<schemas>] [tables=<tables>] [file=<dumpfile>]  
  [compress=y/n] [direct=y/n] [consistent=y/n] [full=y/n] [rows=y/n] [owner=<username>]

IMPORT:从操作系统文件导入数据到数据库服务器。

imp [<username>/<password>@]<db_link> [file=<dumpfile>] [fromuser=<from_user>]  
[touser=<to_user>] [ignore=y/n] [commit=<commit_count>] [full=y/n] [buffer=<buffer_size>]

RMAN备份则是较好的一个选择,使用RMAN备份/恢复不需要停止服务,且恢复速度也很快。

RMAN备份分为三种:增量备份、差异备份和完全备份。其中增量备份包含自上次备份以来发生的所有更改,差异备份包含自上次完全备份以来发生的所有更改,完全备份包含整个数据库的副本。

RMAN恢复分为两种:完全恢复和不完全恢复。完全恢复是指将数据库恢复到特定的时间点或SCN,不完全恢复是指将数据库恢复到最近一次备份。

需要注意的是,RMAN备份需要额外的存储空间,并且需要定期进行备份,以确保数据的安全性。

二、重建索引

完成数据恢复后,需要重建索引。索引可以提高数据库的查询性能,但也会占用额外的存储空间。重建索引可以优化数据库的性能,但也会消耗大量的系统资源。

重建索引的命令如下:

ALTER INDEX <index_name> REBUILD;

三、收集统计信息

完成索引重建后,需要收集统计信息。统计信息可以帮助优化器选择正确的执行计划,从而提高查询性能。收集统计信息可以消耗大量的系统资源,因此建议在非高峰时段进行。

收集统计信息的命令如下:

GATHER STATS

四、启动服务

完成上述步骤后,就可以启动数据库服务了。启动数据库服务后,需要检查数据库的状态,以确保数据库运行正常。

启动数据库服务的命令如下:

STARTUP;

五、注意事项

搬家时需要注意以下几点:

  • 备份和恢复操作必须由具有足够权限的用户执行。
  • 备份和恢复操作必须在不影响生产环境的情况下进行。
  • 备份文件必须存储在安全的地方。
  • 定期测试备份和恢复操作,以确保其有效性。
  • 确保数据库服务器上的操作系统和数据库软件版本与源数据库服务器上的版本相同。
  • 确保数据库服务器上的数据库实例名称与源数据库服务器上的实例名称相同。
  • 确保数据库服务器上的数据文件和日志文件目录与源数据库服务器上的目录相同。
  • 确保数据库服务器上的TNSNAMES.ORA文件与源数据库服务器上的TNSNAMES.ORA文件相同。
  • 确保数据库服务器上的ORACLE_SID环境变量与源数据库服务器上的ORACLE_SID环境变量相同。

通过本文,希望对准备做Oracle数据库搬家的朋友们有所帮助。