oracle数据库的配置管理与自动发布实现

本文介绍了一种通过规范化SQL脚本并将其存入版本控制系统(SVN)的方法,实现数据库变更的自动化部署流程。文章详细说明了SQL脚本的命名、编写规范,包括保证原子性、提供回滚机制等最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:通过对sql提交到svn库的规范来实现数据库的自动部署。


用于指明数据库变更的sql脚本--约定规则

① 数据库变更的脚本应尽量保证原子性;也就是一个脚本中应尽量仅包含一条不可拆分的DDL(CREATE,ALTER etc)命令(避免出错时处理比较复杂,需要回滚之前很多步骤);当然对于DML语言(UPDATE,INSERT etc)可多包含多条,因为它们都是以事务的方式运行。

② 必须保证每次对数据库的修改都保存为sql脚本;

sql脚本的命名规范,必须是以数字开头以指明此sql脚本在所有脚本中的执行顺序;如001_create_table.sql,002_insert_data.sql,003_insert_data.sql;

注意:sql脚本的命名要尽量能表达此脚本执行内容的含义,例如:

004_add_index_on_custId_column_of_table_cust_index.sql.

④ 可以在sql脚本中加入回滚部分,出错时自动执行回滚语句;

         如001_create_table.sql

            CREATE TABLE FOO (

FOO_ID INTEGER NOT NULL

,FOO_VALUE VARCHAR(30)

);

ALTER TABLE FOO ADD CONSTRAINT PK_FOO PRIMARY KEY (FOO_ID);

--//@UNDOUND

DROP TABLE FOO;

⑤ 在CI中,应将数据库脚本也作为源码看待,同样做版本控制;遵循test before checkin的规则;

⑥ 假如发现提交的脚本没有起作用或者出现bug,不要试图修改原脚本,而应该重新写新脚本fix。

⑦ 不要将事务处理放到变更脚本中;


脚本:

前提需要配置好本地的

tnsnames.ora示例如下:

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.208.120)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

 

test.sh脚本如下:

ls -l *.sql|awk  -F ' ' '{print $9}'|while read line

do

#Oracle Connection

sqlplus -sapp_pas/app_pas@10.1.94.85/PASDEVdb0<<EOF

@$line

EOF

done


参考:

sqlplus -s 用户名/密码@ip:端口/数据库实例<<EOF

遍历该文件夹下文件,并根据文件名中的时间进行排序
方法一:ls -l *.sql|awk  -F ' '  '{print $9}'
方法二:ls *.sql| awk -F_ '{x[$1]=$0;a[NR]=$1}END{l=asort(a,b);for(i=1;i<=l;i++){print x[b[i]]}}'



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值