西大贝de烂笔头

多思考、多总结、勤动笔

导航

记一次测试环境准备

公司A系统,C/S架构,有一个数据迁移项目,需要准备一个只有配置没有数据的空环境。A系统自带工具可以准备空环境并进行两个环境的配置信息对比,并更新还是挺方便的。但是在更新配置的过程中,发现目前生产上的一项配置无法更新到测试环境,提示字段长度不够。这就怪了按理说应该都是一样的啊。细查之后发现确实不一样,生产环境该字段是char(32 char),而测试环境是char(32)。关于这两个的区别可以参看这篇博文

为了使测试环境跟生成环境一致就需要将所有char字段的设置为char长度类型,所有varchar2字段的也设置为char长度类型。网上找了一个脚本,地址点我。脚本也粘贴如下:

 1 create or replace procedure modifychartovarchar is --
 2 
 3   cursor c1 is
 4     select t.TABLE_NAME, t.COLUMN_NAME, t.DATA_LENGTH
 5       from all_tab_columns t
 6      where t.OWNER = 'LANDUSER' and t.DATA_TYPE = 'CHAR' and
 7            t.TABLE_NAME in (select at.table_name from all_tables at);
 8   PTABLE_NAME  varchar2(100);
 9   pCOLUMN_NAME varchar2(100);
10   sqlstr       varchar2(200);
11   Dl           integer;
12 begin
13 
14    --by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2006.10.11
15 
16 
17   open c1;
18   fetch c1
19     into PTABLE_NAME, pCOLUMN_NAME, Dl;
20   while c1%found loop
21     sqlstr := 'alter table ' || PTABLE_NAME || ' modify ' || pCOLUMN_NAME ||
22               ' varchar2(' || Dl || ' char' || ')';
23     dbms_output.put_line(sqlstr);
24     execute immediate sqlstr;
25     sqlstr := 'update ' || PTABLE_NAME || ' set ' || pCOLUMN_NAME ||
26               '=trim(' || pCOLUMN_NAME || ')';
27     dbms_output.put_line(sqlstr);
28     execute immediate sqlstr;
29  
30     fetch c1
31       into PTABLE_NAME, pCOLUMN_NAME, Dl;
32  
33   end loop;
34   commit;
35   close c1;
36 end;

下面记录一下测试环境准备步骤:

1、创建一个user;

2、赋予cnu_environment表的select权限;

3、在A系统客户端安装目录的setup文件夹下设置初始用户信息;

4、打开A系统的管理台,创建基础数据库表;

5、通过上述脚本将char和varchar2类型的长度都改为给予char的;

6、创建索引、view、contrains等;

7、创建Base data;

8、找生产系统,跟这个新的测试环境进行配置对比,并将不同更新到测试环境;

大功告成。

posted on 2020-06-25 21:34  西大贝  阅读(209)  评论(0编辑  收藏  举报