1、 ## 问题现象
: 现在系统中对于附件的存储是以BLOB直接存到ar_file表中的,这样就出现一个问题,附件数据量要远远大于业务数据量。
2、解决步骤:
① 新建一个数据库用户,将系统所连接的数据库用户与当前新建的用户都具有如下的权限:Sysdba、delete any table、insert any table、select any table、unlimited tablespace、update any table
② 在新建用户中执行如下建表SQL:
create table AR_FILE(
file_id VARCHAR2(32) not null,
bill_id VARCHAR2(60) not null,
full_name VARCHAR2(32),
suffix_name VARCHAR2(32),
file_content BLOB)
以及如下建主键的SQL:
alter table AR_FILE add constraint PK_AR_FILE primary key (FILE_ID, BILL_ID)
③ 在系统连接的数据库用户下,查询AR_FILE,看是否有记录,如果没有记录则执行如下删表语句 drop table ar_file;
删表语句执行后,再执行如下建视图的语句:
create or replace view ar_file as select “FILE_ID”,“BILL_ID”,“FULL_NAME”,“SUFFIX_NAME”,“FILE_CONTENT” from 新建数据库用户.ar_file;
④ 如果查询AR_FILE中发现已经有记录,则先登陆到新建的数据库用户下,再执行如下语句进行历史数据迁移: insert into ar_file select * from 系统连接的数据库用户.ar_file执行成功后,再重复步骤③即可。