oracle数据库迁移
一、导出
导出用户对象:
1、plsql登录到数据库
2、查询当前用户的默认表空间(以DEMO1账户为例)
用DEMO1用户登陆plsql,在上图的窗口里的Users的分支下找到当前的用户名DEMO1,再点view,在右边的Default tablespace就可以查看该用户的默认表空间(TBS_DEMO1)。
3、导出DEMO1用户的所有用户对象(表结构):
在DEMO1用户下,点击tools,Export User Objects,在右侧弹出的窗口按如上设置进行设置,重点是Single file,然后在Output file选择路径,再点击export导出用户对象文件(文件为sql格式)。
注意:这个导出完成后可能没有什么成功或者完成一类的提示,只需要看到下条的进度条已经走完。再看一下生成出来的log文件最后有spoo off就说明导完了。
导出表数据:
在右侧窗口全选所有表对象,再点击下方的Output file选择输出路径,再点击Export生成数据文件(文件格式为dmp格式)
4、一次性语句导出DEMO1用户的所有用户对象及表数据
exp marsngadmin/pgmarsng@pgtestdb owner=marsngadmin buffer=10000000 file=d:\custbusiupbak.dmp log=d:\20090304.log
二、导入
在新的数据库服务器用sys账号登陆sql
1、新建用户表空间(表空间的名字要和导出的一致,这里以TBS_DEMO1为例)
例1、create tablespace TMS_DEMO1 datafile 'D:\ORACLE11GR2\ORADATA\PCILAB\DATA.DBF' size 10g
autoextend on next 1g maxsize unlimited
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
表空间是oracle独有的,可以想象为一个存放数据库的一个盒子,需要指定该大小(本例为10g),以及实体文件的路径xx.DBF自定义(本例为D:\ORACLE11GR2\ORADATA\PCILAB\DATA.DBF),所有数据表都会放在表空间。(如果想知道当前实例里别的表空间 路径都在哪,可以用select * from dba_data_files 查询)
例2、创建表空间(需要服务器先创建表空间路径。如:f:/dataspace)--
CREATE TABLESPACE ZPSC_INDEX DATAFILE
'f:/dataspace/ZPSC_INDEX.dbf'
SIZE 20M AUTOEXTEND ON NEXT 128M MAXSIZE UNLIMITED
2、新建一个用户,并指定其默认表空间(用户名需要和之前导出时的用户名一致,这里以DEMO1为例。)
例1、CREATE USER DEMO1 IDENTIFIED BY DEMO1123
DEFAULT TABLESPACE TBS_DEMO1
TEMPORARY TABLESPACE TEMP;
新建用户DEMO1,密码DEMO1123,默认表空间 TBS_DEMO1,默认临时表空间TEMP.
例2、CREATE USER zpsc_admin IDENTIFIED BY "qwerasdf"
DEFAULT TABLESPACE ZPSC_DATA;
3、授予用户DBA权限(有时间可能上述的权限无法导入用户对象以及用户数据,所以最好用grant dba to DEMO1;授予它dba权限,在导完了用户对象后,再用revoke dba from DEMO1;回收dba权限。)
例1、授于用户的基本权利
grant
connect,
ALTER SESSION,
CREATE ANY JOB,
CREATE ANY TABLE,
CREATE ANY VIEW,
CREATE CLUSTER,
CREATE DATABASE LINK,
CREATE INDEXTYPE,
CREATE JOB,
CREATE OPERATOR,
CREATE PROCEDURE,
CREATE SEQUENCE,
CREATE SESSION,
CREATE SYNONYM,
CREATE TABLE,
CREATE TRIGGER,
CREATE TYPE,
CREATE VIEW,
DEBUG ANY PROCEDURE,
DEBUG CONNECT SESSION,
EXECUTE ANY PROCEDURE,
INSERT ANY TABLE,
MANAGE SCHEDULER,
SELECT ANY DICTIONARY,
SELECT ANY TABLE,
UNDER ANY TABLE,
UNLIMITED TABLESPACE,
UPDATE ANY TABLE
to DEMO1;
例2、
GRANT CONNECT TO zpsc_admin;
GRANT RESOURCE TO zpsc_admin;
GRANT DBA TO zpsc_admin;
1、导入用户对象(表结构)
登陆DEMO1账号后,直接执行导出的sql脚本。
2、导入表数据
登陆DEMO1账号后,选择tools 下边的Import Tables,选择之前导出的dmp文件后,按import后即可。
3、一次性导入用户对象(表结构)及表数据
开始->运行->输入cmd->imp tra_ywjg/qwerasdf@192.168.1.14:1521/orcl file=E:\work\dmp\PECARD_HN.dmp full=y
注:如是sql文件导入 @拉入文件