Oracle系统数据表恢复及迁移

来源:互联网 发布:node.js 显示所有版本 编辑:程序博客网 时间:2024/04/28 10:45

项目需要在系统上部署系统,所以要在系统恢复已有的数据。

安装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
新的表中可能改列设置为必填,修改列约束就可以


0 0
原创粉丝点击