Oracle数据库迁移

Posted BeyondYourself

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库迁移相关的知识,希望对你有一定的参考价值。

1 在数据迁移时,用户首先有权限修改数据库,并且进行表空间创建、删除等权利
例如:
select * from dba_tab_privs where grantee=\'SCOT\'; ---查看SCOTT权限(sys用户登录)
显示结果为:
 
 select * from dba_role_privs where grantee=\'SCOT\'; --查看SCOTT角色
显示结果为:
 
(1) 如果用户被锁定通过以下语句来解锁表
alter user scott account unlock; --解锁表
(2) 授予用户权限
grant connect to scott; --连接数据库权限
grant resource to scott; --授予创建表等基本权限
grant dba to scott; --授予DBA权限
 
2 建立表空间
严格意义上在先执行如下命令而不是直接开始建立表空间
drop tablespace 表空间名称;
然后开始创建表空间
create tablespace xx_bp;
datafile \'F:\\app\\xx_bp.ora\' --表空间的本地位置
size 50M
autoextend on next 1M;
 
附:datafile 为表空间对应的数据文件,后面跟随数据文件的路径及数据文件名
size 为数据文件的初始大小
autoextend on 表示数据随着数据量的增加自动扩大
一般在创建表的时候会创建多个表空间用来存放各种数据,比如我们一般会创建历史表空间(HS)、索引表空间等。另外先建立表空间,然后建立用户时指向此表空间,否则oracle会默认将用户指向sys表空间
 
3 创建用户
create user 用户名 indentified by 密码 tablespace xx_bp,xx_hs,xx_indx;
 
附: identified by 为创建用户密码的关键字,后面跟随的是用户密码
 
4 对数据库的用户进行授权
grant connect,resource to 用户名
将connect 和resource 角色授予用户
 
查看当前用户有哪些角色
select * from user_role_privs;
 
5 建立数据结构、存储过程、视图、序列
(1)创建表
create table XX.BP_OPER_DETAIL_TB
(
task_id VARCHAR2(50) not null,
flow_id NUMBER(19) not null,
task_no VARCHAR2(50) not null,
flow_node VARCHAR2(4) not null,
workitemid NUMBER(19) not null,
trans_id VARCHAR2(10) not null,
trans_no CHAR(6) not null,
vouch_group VARCHAR2(10) not null,
teller_no VARCHAR2(15) default \'\',
user_no VARCHAR2(15) not null,
organ_no VARCHAR2(10) not null,
areacode VARCHAR2(5) default \'\',
create_time CHAR(14) not null,
checkout_time CHAR(14) not null,
checkin_time CHAR(14) default \'\',
suspend_time CHAR(14) default \'\',
resume_time CHAR(14) default \'\',
trans_time INTEGER default 0,
release_time INTEGER default 0,
state INTEGER not null,
result VARCHAR2(10) default \'\',
reason VARCHAR2(512) default \'\'
)
tablespace XX_BP pctfree 10 initrans 1 maxtrans 255 storage
(
initial 64K next 8K minextents 1 maxextents unlimited
);
 
创建索引约束调节等
alter table XX.BP_OPER_DETAIL_TB add constraint BP_OPER_DETAIL_PK primary key
(
TASK_ID, WORKITEMID, FLOW_NODE
)
using index tablespace XX_BP pctfree 10 initrans 2 maxtrans 255 storage
(
initial 64K next 1M minextents 1 maxextents unlimited
);
 
6 导入数据
 
insert into SM_FIELD_PARENT_TB (field_id, parent_field, last_modi_date)
values (\'VH0007\', \'VH0000\', \'20160420074707\');
insert into SM_FIELD_PARENT_TB (field_id, parent_field, last_modi_date)
values (\'VH0008\', \'VH0000\', \'20160420074729\');
insert into SM_FIELD_PARENT_TB (field_id, parent_field, last_modi_date)
values (\'VH0010\', \'VH0000\', \'20160420074818\');
insert into SM_FIELD_PARENT_TB (field_id, parent_field, last_modi_date)
values (\'VH0012\', \'VH0000\', \'20160420074914\');
insert into SM_FIELD_PARENT_TB (field_id, parent_field, last_modi_date)
values (\'VH0016\', \'VH0000\', \'20160420075055\');
insert into SM_FIELD_PARENT_TB (field_id, parent_field, last_modi_date)
values (\'VH0017\', \'VH0000\', \'20160420075129\');
insert into SM_FIELD_PARENT_TB (field_id, parent_field, last_modi_date)
values (\'VH0021\', \'VH0000\', \'20160420075305\');
commit;
 
最后重新登陆数据库,验证新增的迁移数据库

以上是关于Oracle数据库迁移的主要内容,如果未能解决你的问题,请参考以下文章

解决oracle两个的数据库之间数据迁移方法

oracle 空间数据 如何实现 迁移?

请问如何将oracle数据库中的数据迁移到mysql数据库中? 谢谢

oracle临时表空间可以迁移吗

oracle迁移到mysql注意事项

使用Oracle SQL Developer迁移MySQL至Oracle数据库