如何进行oracle数据库的全库移植?我本机上建立了一个oracle,现在想把公司的一个测试库移植过来。如何进行?

解决方案 »

  1.   

    如果没有特意地改变位置,

    D:\oracle\product\10.2.0\oradata\orcl
    下的文件拷过来就可以了
      

  2.   

    1.在你的机器上建立安装数据库软件,
    2.在你的机器上安装库文件(弄清楚测试库的 sid,字符集,密码,都设成一样的)
    3.把测试库的文件exp出来(根据你测试库下的用户)
    4.在你的机器上建立同样的用户,把测试库的用户数据imp进来。exp,imp
    参照下面做
    SQL code
    scott用户的emp和dept表是在users表空间的.d:\>exp scott/tiger file=test1.dmp tables=(emp,dept)Export: Release 10.2.0.4.0 - Production on 星期二 3月 24 21:13:17 2009Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径...
    . . 正在导出表                             EMP导出了          13 行
    . . 正在导出表                            DEPT导出了           4 行
    成功终止导出, 没有出现警告。
    d:\>sqlplus /nologSQL*Plus: Release 10.2.0.4.0 - Production on 星期二 3月 24 21:13:26 2009Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.idle> conn / as sysdba
    已连接。
    sys@TEST> create user xx identified by xx default tablespace test;用户已创建。sys@TEST> grant create session ,create table to xx;授权成功。sys@TEST> alter user xx quota unlimited on test;用户已更改。sys@TEST> exit
    从 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
    d:\>imp system/sys  file=test1.dmp fromuser=scott touser=xxImport: Release 10.2.0.4.0 - Production on 星期二 3月 24 21:16:21 2009Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options经由常规路径由 EXPORT:V10.02.01 创建的导出文件警告: 这些对象由 SCOTT 导出, 而不是当前用户已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
    . 正在将 SCOTT 的对象导入到 XX
    . . 正在导入表                           "EMP"导入了          13 行
    . . 正在导入表                          "DEPT"导入了           4 行
    即将启用约束条件...
    成功终止导入, 没有出现警告。d:\>sqlplus /nologSQL*Plus: Release 10.2.0.4.0 - Production on 星期二 3月 24 21:17:14 2009Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.idle> conn / as sysdba
    已连接。
    sys@TEST> SELECT OWNER, TABLE_NAME, TABLESPACE_NAME
      2    FROM DBA_TABLES S
      3   WHERE S.TABLE_NAME IN ('EMP', 'DEPT') AND owner='XX';OWNER                          TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------ ------------------------------
    XX                             EMP                            TEST
    XX                             DEPT                           TESTsys@TEST> exit
    从 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开导入后,用户xx的emp和dept在test表空间[scott用户的emp和dept在users表空间]
      

  3.   

    楼上说的很详细,再补充一下:
    假设新建库为DBD,要导的库位DBS
    1. 根据DBS的用户和表空间,在DBD建立同DBS相同的用户和表空间,用户权限等设置相同。表空间分配足够大小
    2. exp导出DBS数据结构和数据
    3. imp导入
      

  4.   

    目标机器上安装oracle,创建dump目录路径一样的情况,直接把数据文件,日志文件,控制文件copy过来, 当然还有spfileoradim创建实例.
    orpwd 创建密码文件.然后就打开用吧.
      

  5.   

    升级数据库的方法很多,主要有利用Oracle的升级工具、数据库的导出/导入、数据复制等方法。
    优点

      导出/导入的升级方法,这种方法可以用于不同版本数据库之间的升级,
      甚至是高版本的数据库向低版本的数据库的升级,同时也可以改变数据库的物理参数,另外这种方法还可以用于数据库的备份和恢复。 缺点
      当然这种方法的致命缺点是升级时间与数据量的大小成正比, 数据量越大, 则时间越长。
    作步骤如下:

      1)在11g的服务器上,手动创建和8i相同的表領域和ユーザー
      2)用SI Object Browser 9(エクスポート)工具将8i的数据库Dmp(指定用户名)
    或者,用命令行进行数据库的导出,exp 8i指定的用户名/8i指定的密码 full=y file=Dmp文件路径 log=Dmp.log
      3)在11g的数据库上,用命令行进行数据库的导入,结束后检查日志,看是否有影响的错误。
    cmd>imp system(区分大小写:默认为大写)/password(区分大小写:默认为大写)@DBName full=y file= his_full.dmp log= his_full_imp.log
      4)将原有8i服务器SYS用户下创建的相关对象手工导入到11g服务器上,对比两者数据库对象是否相同。
      5)进行测试,如测试通过,迁移成功


    除了特殊情况(Create Sessionなど),以上手順はOKです。