版本升级 

  在维护数据库升级的过程中,会产生n个脚本。谈谈我所处的项目背景,项目数据库最早版本假定为1,最后在多次维护后,版本号,可能变更为16.那么针对项目上不同的数据库版本,如何来进行升级呢?

  我使用的升级策略是,执行v1.sql,得到版本1,再执行v2.sql,得到版本2,按照此方式升级数据库至指定的版本。版本号预先存储在数据库中,根据当前版本号,以及目标版本号,即可得到需要执行的SQL脚本。

  通过C#的Process命令,调用SQLPlus并给它传递参数,执行的命令为:

  "SqlPlus /nolog @run.sql"

  而run.sql的内容则是通过查询到数据库的版本号,确定需要执行的脚本,示例如下  

@@v1.sql;
@@v2.sql;
@@v3.sql;
@@v4.sql;
@@v5.sql;
@@v6.sql;

  其中@@表示和宿主脚本run.sql处于同一路径下。

处理注释信息

  另外如果数据库有表和字段注释的话,记得在生产环境删除它,下面是导出数据库注释的SQL语句:

--导出表注释
SELECT t.table_name,'comment on table ' || t.table_name || ' is ''' || t.comments ||''';' Comments FROM user_tab_comments t
--导出字段注释
SELECT 'comment on column ' || t.table_name || '.' || t.column_name || ' is ''' || t.comments ||''';' Comments FROM user_col_comments t

  如果需要将描述同时导出,则可以使用如下SQL语句

select COMMENTS from (
--导出表注释
SELECT t.table_name||'' tableName, 'comment on table ' || t.table_name || ' is ''' || t.comments ||''';' Comments
FROM user_tab_comments t
union all
--导出字段注释
SELECT t.table_name||'' tableName, 'comment on column ' || t.table_name || '.' || t.column_name || ' is ''' || t.comments ||''';' Comments
FROM user_col_comments t
) order by tableName

  说明:在table_name后加数字,是为了在排序时让表名注释考前,最后查询出来的结果则是

comment on table AREA_MATCH_TEMP is '';
comment on column AREA_MATCH_TEMP.JRDD is '';
comment on column AREA_MATCH_TEMP.JRID is ''; comment on table JW_ALARM_INFO is '';
comment on column JW_ALARM_INFO.ALARM_INFO_IP is '';
comment on column JW_ALARM_INFO.ALARM_INFO_NAME is '';

  如果需要换行符,则可以将脚本复制至notepad++,替换comment on table,为 \r\ncomment on table 。记得替换选项勾选拓展哦。

调用SQLPlus异常问题

  问题描述:

  C#程序其中一个函数用process对象运行了CMD然后通过start命令打开包含sqlplus的bat文件,如果直接运行这一个函数很正常。但是如果先调用另一个包含了OracleConnection对象尝试连接数据库的函数,不管是否连接成功,再调用第一个函数就会提示
Error 6 initializing SQL*Plus
SP2-0067:: Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
其中OracleConnection使用了引用Oracle.DataAccess

后来经过调试发现 因为在调用Oracle.DataAccess引用时,oracle_home被设置成当前.exe文件所在目录
我又不明白了,为什么oracle_home会被修改了.

  解决方案:

  直接引用Oracle官方提供的库就好了。

  重要说明:

  32位程序在64位系统下读取64位注册表无法用常规方式读取,很有可能程序读取到的注册表视图和在系统看到的不一致,必须用重定向或者API等相关方式处理。详见C# 32位程序访问64位系统注册表

其他

  1.适当添加斜杠 \ 。 斜杠 就是让服务器执行前面所写的 SQL 脚本。普通的 select 语句, 一个分号,就可以执行了。但是如果你的是存储过程, 那么遇到分号,就不能马上执行了。这个时候,就需要通过 斜杠 来执行了。

  2.快速定位脚本错误。使用Prompt,这样可以很方便在测试的时候发现脚本错误的地方。最后发布的时候可以直接注释掉该打印语句,直接使用全文替换即可。

  3.处理用户默认过期时间。在Oracle11g中,默认用户的过期时间为180天,使用该SQL语句即可 修改默认用户的过期时间从180天改为无限制

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 

  

Oracle 数据库维护相关的更多相关文章

  1. ORACLE数据库维护

    ORACLE数据库维护(转)----一篇关于oracle的不错的文章 1. ORACLE数据库启动与关闭   1.1 打开和关闭数据库 (手工)1.1.1 sqlplus连接   1.1.2 打开数据 ...

  2. Oracle 性能相关常用脚本(SQL)

    在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考.以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整 ...

  3. Oracle权限相关查询

    Oracle权限相关查询着实视图有点多,记录下常用的语句,方便查询:1.查看所有用户:  select * from dba_users;  select * from all_users;  sel ...

  4. Oracle审计相关对象的迁移

    目录 创建审计用的表空间 在线迁移 查询结果 在日常的数据库维护中,经常出现因为数据库登录审计的功能启动,导致system表空间被用满.从而出现异常,一般建议把aud$相关对象迁移到其他表空间,从而避 ...

  5. Oracle数据库相关问题之ORA-12541:TNS:无监听程序

    在用PL/SQL Developer等客户端工具连接oracle服务器时出现ORA-12541:TNS:无监听程序的错误,如下图: 发现原来是oracle的监听没有启动,重启监听后就连接成功了,下面跟 ...

  6. oracle数据库相关知识点

    已知表如下:

  7. oracle表相关

    堆表 数据以堆的形式管理,增加数据时会使用段中找到的第一个能放下数据的自由空间,我们见到的绝大部分的表都是堆表.堆表是数据库的默认表类型. 最简单的情况是 create table test (c1 ...

  8. Oracle ASM 相关的 视图(V$) 和 数据字典(X$)

    本文转自: http://blog.csdn.net/tianlesoftware/article/details/6733039 ASM由于其高度的封装性,使得我们很难知道窥探其内部的原理.可以通过 ...

  9. oracle数据库维护常用操作

    查看用户相关信息 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system select * from dba_users; 查看你能管理的所有用户! select * from ...

随机推荐

  1. POJ 1286 Pólya定理

    Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9162   Accepted: 3786 ...

  2. B1008 数组元素循环右移问题 (20分)

    B1008 数组元素循环右移问题 (20分) 思路 1 2 3 4 5 6 5 6 1 2 3 4 6个数,循环右移2位. 也可以理解为 先翻转 6 5 4 3 2 1 然后再两部分,分别翻转 5 6 ...

  3. 机器学习实战 -- 决策树(ID3)

    机器学习实战 -- 决策树(ID3)   ID3是什么我也不知道,不急,知道他是干什么的就行   ID3是最经典最基础的一种决策树算法,他会将每一个特征都设为决策节点,有时候,一个数据集中,某些特征属 ...

  4. POJ:1995-Raising Modulo Numbers(快速幂)

    Raising Modulo Numbers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9512 Accepted: 578 ...

  5. JAVA EE配TOMCAT

    纯粹就是吧百度教程上的过程走了一遍发现不行综合各种教程配出来了,四张图代表了四个阶段,以后再要配的话直接来这里看.

  6. Dapper.Extension的基本使用

    前言    上一篇随笔写了Dapper的简单的使用,这次写一下Dapper.Extension的使用,它是Dapper的简单的封装扩展,可以通过实例化的对象赋值后进行增删改的操作以及分页,但是却不能进 ...

  7. pg数据库数据表异常挂起

    pg数据库即是PostgreSQL数据库. 前几天在一个Java项目中,出现运行Java程序后,pg数据库的数据表异常挂起.而且是在某台电脑上出现的,重装数据库也没用,其它电脑未能复现,是个很奇怪的现 ...

  8. 玩转Linux之内存管理-free

    玩转Linux之内存管理-free free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之 ...

  9. jQuery easyuI datagrid 多行编辑

    在easyUI 动态绑定部分数据后,需要有部分列可以修改,研究了一天终于搞定.这是小弟的做法,望各位有好招的大侠指点. 1.添加jQuery 和jQuery easyuI的引用. 2.添加id为tt的 ...

  10. 孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5

    孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongo ...