您的位置:首页 > 数据库 > Oracle

Oracle系统数据表恢复及迁移

2015-10-12 23:46 465 查看
项目需要在系统上部署系统,所以要在系统恢复已有的数据。

安装Oracle部分估计没什么好说的,装不了根本运行不了系统。

在cmd下输入:sqlplus / as sys dba,进入sql plus 

建立表空间

create tablespace a datafile 'b\c.dbf' size 数字M autoextend on next 数字M maxsize unlimited;

表空间名称:a 存放路径:b\c.dbf size是文件的大小 autoextend表明是否自动扩展 next 表示数据文件满了以后,扩展的大小 unlimited表示无限的表空间

创建用户

create user 用户名 identified by 密码 default tablespace 上面所见的表空间名 temporary tablespace temp;

数据库操作权限授权

grant dba to 用户名

创建directory

虽然directory有其他用法,但是这里主要是用于10到11G的数据导入

create or replace directory 目录名 as '路径'

create or replace directory 日志目录名 as '其他路径'

gramt read,write on directory 目录名 to 用户名

gramt read,write on directory 日志目录名 to 用户名

数据库导出,导入语句

exp 用户名/密码@数据库空间 file="地址/备份数据库名.dmp"

11g-》11g

imp 用户名/密码@数据库空间 file="地址/备份数据库名.dmp" full=y

10-》11g

impdp 用户名/密码@数据库空间   directory=directory目录名 dumpfile=备份数据库名.dmp version=10的版本 remap_schema=导出用户名:导入用户名

这里有一点就是使用impdp的时候只要把备份数据库放入了directory目录中

数据迁移 旧表与新表之间的关联一般都是有记录,按着这些记录就对,但是也会出现各种各样的问题

insert into 新用户名.目的表(列名)

select

旧列名 as 新列名

from 旧用户名.目的表

常见问题

FROM keyword not found where expected

一般就是查询列名之间缺乏了逗号

Not enough values

insert入表中的列值与查询的列值个数不同

invalid number

这个问题我暂时只发现是在原表中varchar转到number时候才会出现,一般出现这个问题是一些原有的字段是保存数字用的,存放的时候意外的把NULL值赋到数据当中,在转移时候就会报错

我使用的方法是建立一个字段temp varchar

然后把数据线导入到temp中,然后

update set temp=出问题的字段

update set temp="" where temp="null"

update set 出问题的字段=temp

cannot insert NULL

新的表中可能改列设置为必填,修改列约束就可以
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle