Oracle备份与恢复

Posted 一怒成仙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle备份与恢复相关的知识,希望对你有一定的参考价值。

步骤:(面试)

1,在新主机DBCA建库,实例名和原主机数据库名一致
2,在新主机创建用户
3,dbms_metadata.get_ddl导出表空间生成语句
4,在新主机创建表空间
5,exp导出原库全部数据
6,imp导入复制数据库

 Oracle备份与恢复系列 五 续 EXP/IMP迁移、复制数据库

详细步骤如下:

迁移数据库可以采用三种方式。首先可以采用操作系统的文件拷贝进行物理数据库的还原和恢复,并重新创建数据库控制文件。其次可以用Oracle Export和Import工具将原数据库逻辑还原到一个新的数据库。最后可以用Oracle恢复管理器RMAN进行数据文件和可控制文件的一个物理还原。
迁移数据库不像复制word文档那样简单。需要注意Oracle中三种类型的文件(数据文件、重做日志文件和控制文件)必须协调一致。

本次试验采用EXP/IMP的逻辑备份方式把Oracel 11g 11.2.0.3 RAC复制到Oracle 11g 11.2.0.3单实例数据库上。试验步骤如下

1,在新主机DBCA建库,实例名和原主机数据库名一致
2,在新主机创建用户
3,dbms_metadata.get_ddl导出表空间生成语句
4,在新主机创建表空间
5,exp导出原库全部数据
6,imp导入复制数据库

注意原库的字符集
[email protected] >select userenv(‘language‘) from dual;

USERENV(‘LANGUAGE‘)
--------------------------------------------------------------------------------
AMERICAN_AMERICA.WE8MSWIN1252


1,在新主机DBCA建库
步骤省略,注意实例名与原库数据库名一致,这里采用devdb

2,在新主机创建用户
查看原主机用户
[email protected] >select username from dba_users order by username;

在复制主机上创建原主机用户
SQL> create user TPCC identified by tpcc;
SQL> create user SNOW identified by snow;

3,dbms_metadata.get_ddl导出表空间生成语句
查看原主机表空间
[email protected] >select name from v$tablespace;

生成原主机表空间创建语句
[email protected] >set linesize 200
[email protected] >set long 999999
[email protected] >SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE‘, GOLDENGATE) FROM dba_tablespaces;

CREATE TABLESPACE "GOLDENGATE" DATAFILE
  ‘+DATA/devdb/datafile/goldengate.dbf‘ SIZE 104857600
  AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO

根据导出的创建表空间语句修改成我们需要的创建语句
CREATE TABLESPACE "GOLDENGATE" DATAFILE
  ‘/u01/app/oracle/oradata/devdb/goldengate.dbf‘ SIZE 104857600 AUTOEXTEND ON;

[email protected] >SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE‘,‘EXAMPLE‘) from dba_tablespaces;
CREATE TABLESPACE "EXAMPLE" DATAFILE
  SIZE 104857600
  AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M

  NOLOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO
   ALTER DATABASE DATAFILE
  ‘+DATA/devdb/datafile/example.264.853490879‘ RESIZE 32
8335360

根据导出的创建表空间语句修改成我们需要的创建语句
CREATE TABLESPACE "EXAMPLE" DATAFILE
  ‘/u01/app/oracle/oradata/devdb/example.dbf‘ SIZE 104857600 AUTOEXTEND ON;


[email protected] >SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE‘,‘TOOLS‘) from dual;

CREATE TABLESPACE "TOOLS" DATAFILE
  SIZE 20971520
  AUTOEXTEND ON NEXT 20971520 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO

根据导出的创建表空间语句修改成我们需要的创建语句
CREATE TABLESPACE TOOLS DATAFILE ‘/u01/app/oracle/oradata/devdb/tools01.dbf.dbf‘ SIZE 20971520 AUTOEXTEND ON;

[email protected] >SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE‘,‘INDX‘) from dual;

  CREATE TABLESPACE "INDX" DATAFILE
  SIZE 20971520
  AUTOEXTEND ON NEXT 20971520 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192

  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO

根据导出的创建表空间语句修改成我们需要的创建语句
CREATE TABLESPACE INDX DATAFILE ‘/u01/app/oracle/oradata/devdb/indx01.dbf.dbf‘ SIZE 20971520 AUTOEXTEND ON;
 
4,在新主机创建表空间
SQL> CREATE TABLESPACE "GOLDENGATE” DATAFILE ‘/u01/app/oracle/oradata/devdb/goldengate.dbf‘ SIZE 104857600 AUTOEXTEND ON;
SQL> CREATE TABLESPACE "EXAMPLE” DATAFILE ‘/u01/app/oracle/oradata/devdb/example.dbf‘ SIZE 104857600 AUTOEXTEND ON;
SQL> CREATE TABLESPACE TOOLS DATAFILE ‘/u01/app/oracle/oradata/devdb/tools01.dbf.dbf‘ SIZE 20971520 AUTOEXTEND ON;
SQL> CREATE TABLESPACE INDX DATAFILE ‘/u01/app/oracle/oradata/devdb/indx01.dbf.dbf‘ SIZE 20971520 AUTOEXTEND ON;
imp \‘sys/oracle as sysdba\‘ file=/home/oracle/full.dmp full=y

5,exp导出原库全部数据
[[email protected]~]$  exp \‘sys/oracle as sysdba\‘ file=/home/oracle/full.dmp full=y direct=y
将导出文件scp到复制主机
[[email protected] ~]$ scp full.dmp [email protected]:/home/oracle

6,imp导入原库全部数据
[[email protected] ~]$ imp \‘sys/oracle as sysdba\‘ file=/home/oracle/full.dmp full=y















































































































以上是关于Oracle备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

oracle rman备份与恢复 全量备份、增量备份

oracle数据库如何备份与恢复

ORACLE数据库备份与恢复详解

Oracle11g备份与恢复

Oracle 中的备份和恢复与闪回

赵强老师第一个Oracle的手工备份和恢复