oracle数据库的配置管理与自动发布实现
来源:互联网 发布:知乎专栏怎么写 编辑:程序博客网 时间:2024/06/07 07:30
需求:通过对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]]}}'
- oracle数据库的配置管理与自动发布实现
- 配置管理之一 自动 发布批处理文件
- 分布式配置管理平台的设计与实现
- oracle数据库自动备份的实现历程
- oracle数据库自动备份的实现历程
- 配置管理之二 自动压缩发布包
- 配置管理步步高:配置管理与技术的精髓
- 讲解Oracle数据库自动增长列的实现过程
- 如何实现ORACLE数据库的远程自动备份(完整版)
- 通过Oracle的email实现数据库自动告警
- Oracle 11g数据库每天自动备份的实现方法
- AIX下自动启动Oracle数据库与监听器的方法
- 监视你的配置管理数据库
- Oracle数据库的自动备份
- ORACLE数据库实现自动加1
- linux上实现oracle数据库自动备份
- oracle配置管理
- 如何实现服务器的批量自动发布
- 讲解YCbCr
- The SAVE EXCEPTIONS clause will record any exception during the bulk operation, and continue process
- Testng 的数据源 驱动测试 代码与配置
- 输出旋转方形数字图形
- 选显卡切换内容 for以及数组的巧妙运用
- oracle数据库的配置管理与自动发布实现
- 苹果最新操作系统将这样改变人们工作生活方式
- Python中dict使用
- Linux的pthread_concurrency(int leavels)
- linux定时执行java程序
- 一直结果和指数求底数select exp(ln(25)/2) from dual
- linux内存管理之malloc、vmalloc、kmalloc的区别
- Spring 3 MVC工作原理
- Spring AOP 实现原理