Oracle数据库迁移方案
1在数据迁移时,用户首先有权限修改数据库,并且进行表空间创建、删除等权利
例如:
select*fromdba_tab_privswheregrantee='SCOT';---查看SCOTT权限(sys用户登录)
显示结果为:
select*fromdba_role_privswheregrantee='SCOT';--查看SCOTT角色
显示结果为:
(1)如果用户被锁定通过以下语句来解锁表
alteruserscottaccountunlock;--解锁表
(2)授予用户权限
grantconnecttoscott;--连接数据库权限 grantresourcetoscott;--授予创建表等基本权限 grantdbatoscott;--授予DBA权限
2建立表空间
严格意义上在先执行如下命令而不是直接开始建立表空间
droptablespace表空间名称;
然后开始创建表空间
createtablespacexx_bp;
datafile'F:\app\xx_bp.ora'--表空间的本地位置
size50M
autoextendonnext1M;
附:datafile为表空间对应的数据文件,后面跟随数据文件的路径及数据文件名
size为数据文件的初始大小
autoextendon表示数据随着数据量的增加自动扩大
一般在创建表的时候会创建多个表空间用来存放各种数据,比如我们一般会创建历史表空间(HS)、索引表空间等。另外先建立表空间,然后建立用户时指向此表空间,否则oracle会默认将用户指向sys表空间
3创建用户
createuser用户名indentifiedby密码tablespacexx_bp,xx_hs,xx_indx;
附:identifiedby为创建用户密码的关键字,后面跟随的是用户密码
4对数据库的用户进行授权
grantconnect,resourceto用户名
将connect和resource角色授予用户
查看当前用户有哪些角色
select*fromuser_role_privs;
5建立数据结构、存储过程、视图、序列
(1)创建表
createtableXX.BP_OPER_DETAIL_TB
(
task_idVARCHAR2(50)notnull,
flow_idNUMBER(19)notnull,
task_noVARCHAR2(50)notnull,
flow_nodeVARCHAR2(4)notnull,
workitemidNUMBER(19)notnull,
trans_idVARCHAR2(10)notnull,
trans_noCHAR(6)notnull,
vouch_groupVARCHAR2(10)notnull,
teller_noVARCHAR2(15)default'',
user_noVARCHAR2(15)notnull,
organ_noVARCHAR2(10)notnull,
areacodeVARCHAR2(5)default'',
create_timeCHAR(14)notnull,
checkout_timeCHAR(14)notnull,
checkin_timeCHAR(14)default'',
suspend_timeCHAR(14)default'',
resume_timeCHAR(14)default'',
trans_timeINTEGERdefault0,
release_timeINTEGERdefault0,
stateINTEGERnotnull,
resultVARCHAR2(10)default'',
reasonVARCHAR2(512)default''
)
tablespaceXX_BPpctfree10initrans1maxtrans255storage
(
initial64Knext8Kminextents1maxextentsunlimited
);
创建索引约束调节等
altertableXX.BP_OPER_DETAIL_TBaddconstraintBP_OPER_DETAIL_PKprimarykey
(
TASK_ID,WORKITEMID,FLOW_NODE
)
usingindextablespaceXX_BPpctfree10initrans2maxtrans255storage
(
initial64Knext1Mminextents1maxextentsunlimited
);
6导入数据
insertintoSM_FIELD_PARENT_TB(field_id,parent_field,last_modi_date)
values('VH0007','VH0000','20160420074707');
insertintoSM_FIELD_PARENT_TB(field_id,parent_field,last_modi_date)
values('VH0008','VH0000','20160420074729');
insertintoSM_FIELD_PARENT_TB(field_id,parent_field,last_modi_date)
values('VH0010','VH0000','20160420074818');
insertintoSM_FIELD_PARENT_TB(field_id,parent_field,last_modi_date)
values('VH0012','VH0000','20160420074914');
insertintoSM_FIELD_PARENT_TB(field_id,parent_field,last_modi_date)
values('VH0016','VH0000','20160420075055');
insertintoSM_FIELD_PARENT_TB(field_id,parent_field,last_modi_date)
values('VH0017','VH0000','20160420075129');
insertintoSM_FIELD_PARENT_TB(field_id,parent_field,last_modi_date)
values('VH0021','VH0000','20160420075305');
commit;
最后重新登陆数据库,验证新增的迁移数据库