在进行ORACLE数据库项目的开发过程,表结构经常需要批量的变更,如果少的话,也没什么,要是到了50个表左右,就得想想了!
操作流程如下:
1.建立工作目录
[00_RELEASE]
[01_BACKUP] [02_EXPDATA] [03_DESCRIPT] [04_DLL] [05_LOG]
[01_BACKUP]所有以前表结构的DDL描述。
[02_EXPDATA]对要操作表的dmp备份。
[03_DESCRIPT]旧数据库中的表结构描述文件,对比以前的表结构,修正录入新的数据。
[04_DLL]最新的DLL文本及DOS .bat 运行环境。
[05_LOG]操作过程中的相关日志信息。
2.备份DDL文档,以日期为单位,把相关DDL放入[01_BACKUP]。
[废话]在linux行,一般都是直接cp的,但是前提,数据必须有一定要求存放,windows,文件夹的位置,不规律,就直接用手了。
3.导出要变更的所有表。
exp TIGER/TIGER@DB file=c:\00_RELEASE\02_EXPDATA\20090913-1UINTbase tables(TABLE1,TABLE2,TABLE3)
4.导出旧表的表结构(BAT文件)
DESC TABLE1;
DESC TABLE2;
DESC TABLE3;
SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER = 'TIGER' AND TABLE_NAME ='TABLE1'
SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER = 'TIGER' AND TABLE_NAME ='TABLE2'
SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER = 'TIGER' AND TABLE_NAME ='TABLE3'
5.备份所有表数据(CSV,EXCEL)(BAT文件)
SELECT COUNT(*) FROM TABLE1;
SELECT COUNT(*) FROM TABLE2;
SELECT COUNT(*) FROM TABLE3;
6.删除要变更的表(BAT文件)
DROP TABLE1;
DROP TABLE2;
DROP TABLE3;
7.将DDL描述文件放入[04_DLL]文件夹,更新DDL执行一览。
具体的就按这个吧,linux上道理一样,把bat变成bshell或者cshell就行了。
http://blog.csdn.net/open_sky/archive/2009/08/27/4489946.aspx
系统的procedure和KBN的DDL执行同样用这种方法,批量执行。
8.导入原有数据
恩,整理了一下!