Oracle 数据库维护相关
2018-06-17 21:08:37来源:未知 阅读 ()
版本升级
在维护数据库升级的过程中,会产生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||'1' tableName, 'comment on table ' || t.table_name || ' is ''' || t.comments ||''';' Comments FROM user_tab_comments t union all --导出字段注释 SELECT t.table_name||'2' 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;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FireDAC 下的 Sqlite [3] - 获取数据库的基本信息【转载自万 2020-05-26
- JSON文本文件导入到Sqlite3数据库 2020-03-02
- ClientDataSet应用 2018-08-13
- 数据库语法01 2018-06-21
- 实体框架 (EF) 入门 => 二、在全新的数据库中使用 C 2018-06-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash