Oracle:在原始服务器以外的其他服务器中恢复备份

时间:2010-09-29 14:02:28

标签: oracle

我真的是关于Oracle备份操作的新手。我在这个世界上真的很新,我需要知道如何备份数据库模式并在另一个机器名下以另一个模式名称还原它。

我承担不起任何错误,因为我将在我们的客户网站上这样做,一个小错误可能是最后一个

我不想听起来令人反感,但在MySQL中这样做很容易,就像这样:

服务器一中的

$mysqldump --user=user --password=password db_to_backup > bc_name.sql

- 在将sql脚本传输到另一台服务器之后

在服务器2中:

mysql>create database db_to_restore;
$mysql --user=user --password=password db_to_restore < bc_name.sql

我需要使用Oracle做同样的事情,我读了一些文档,但我仍然不确定该怎么做:

  • 首先:Oracle中的MySQL数据库相当于什么?表

  • 第二:我认为这些是获得备份的步骤

    mkdir /opt/oracle/dumptmp/
    CREATE OR REPLACE DIRECTORY dumptmp AS '/opt/oracle/dumptmp/';
    expdp user/pass@tablespace directory=dumptmp dumpfile=dumptmp:full.dmp logfile=dumptmp:full.log full=y
    
  • 第三:然后我将文件“full.dmp”移动到另一台服务器,但我不知道如何将我的备份文件full.dmp恢复到一个名称不同的新表空间中备份来自:

    SQLPLUS>create tablespace ts_something;
    
那时我不确定如何从这里开始。请告诉我如何使用命令行命令来执行此操作,因为我的客户没有安装GUI工具。

非常感谢!

2 个答案:

答案 0 :(得分:1)

首先,确保在继续在生产环境中执行此过程之前,先在测试或开发环境中测试此过程。免责声明:如果您滥用以下建议而破坏任何数据库,我将不承担任何责任。请注意,我也忽略了如何为您的模式设置表空间存储,在创建新模式时您应该考虑这些存储空间。

这是使用命令行的最简单方法。您需要使用带有完整Oracle数据库分发的expimp实用程序。假设您在环境路径中正确设置了Oracle可执行文件的路径,则需要执行以下操作:

  1. 在源数据库服务器上导出源架构:

    [oracle@src_server ~]$ exp source_schema_username@SRC_SID owner=source_schema_username file=source_schema.dmp

  2. 将源架构导入目标数据库服务器上的目标架构(假设您已创建目标架构,如果没有,请参阅CREATE USER,同时确保目标架构用户具有RESOURCE角色):

    [oracle@dst_server ~]$ imp system@DST_SID fromuser=source_schema_username touser=destination_schema_username file=source_schema.dmp

  3. 请注意,您必须以具有DBA角色的用户身份运行imp。我在这里使用系统,因为该用户通常存在于所有Oracle数据库中并具有DBA角色。您当然需要知道系统用户的密码。如果在两个服务器(echo $ORACLE_SID)的环境中已经设置了ORACLE_SID,则可能不需要指定SID,但我希望在此明确指出您不要导入错误的数据库。

    有关使用导出和导入实用程序的详细信息,请运行exp help=yimp help=y


    回答有关Oracle的问题:

    第一:Oracle中的MySQL数据库相当于什么?表空间?

    Oracle等效项是数据库名称(db_name参数)。它标识Oracle数据库服务器上的数据库。在单个实例数据库上,这通常也是Oracle SID。在Oracle RAC上,单个数据库将具有许多SID。

    第三:然后我将文件“full.dmp”移动到另一台服务器,但我不知道如何将备份文件full.dmp恢复到一个新的表空间,该表空间的名称与备份的名称不同:

    您想要创建一个新用户,该用户与Oracle中的架构相同。表空间是Oracle存储表和指示的磁盘位置的抽象集合。例如,在创建表时,必须将其分配给某个表空间。

答案 1 :(得分:0)

你所解释的并不是真正的备份,更像是架构导出&amp;导入。

  

但在MySQL中执行此操作非常简单。

在Oracle中做同样的事情。

exp user/password@hoststring file=bc_name.dmp log=bc_name.log full=y statistics=none

&安培;导入它,

imp new_user/new_password@hoststring file=bc_name.dmp log=bc_name.log full=y

如果new_user不存在,则创建用户 create user new_user identified by new_password

并授予权利 grant create session,connect,imp_full_database to new_user