常用脚本
常飞梦
10年以上工作经验,8年以数据库管理、开发经验,对数据库优化和架构有比较深的了解。
展开
-
找回不小心删除掉的存储过程!
如果不小心删除掉了使用的存储过程,是一件非常的令人担心和可怕的事情,但如果及时发现还是可以挽回的。--使用闪回查询删除的对象和IDSelect a.Obj#, b.Object_Name, b.Object_Type, b.Owner From (Select Obj#, Name, Type#, Owner# From Obj$ As Of Timestamp To_Ti原创 2013-01-08 16:41:16 · 3930 阅读 · 1 评论 -
几个ORACLE个触发器!
create or replace trigger tri_SERVICE_TYPEbefore Delete on SMS_SERVICE_TYPEfor each rowDeclare Cant_Delete Exception;Begin If Deleting Then --不允许删除 Raise Cant_Delete;原创 2013-01-18 09:45:46 · 754 阅读 · 0 评论 -
ORACLE中DBMS_SQL封装过程
DBMS_SQL封装过程中主要函数 1、OPEN_CURSOR:返回新游标的ID值 2、PARSE:解析要执行的语句 3、BIND_VARIABLE:将给定的数量与特定的变量相连接 4、DEFINE_COLOUMN:定义字段变量,其值对应于指定游标中某个位置元素的值 (仅用于SELECT语句) 5、EXECUTE:执行指定的游标原创 2013-01-18 09:47:29 · 982 阅读 · 0 评论 -
dbms_output.put_line输出长度问题
今天遇到DBMS_OUTPUT.PUT_LINE输出字符串报错问题,原来DBMS_OUTPUT.PUT_LINE最多可以250个字符(具体的值可能和数据库的设置有关,没有去试过),可以用以语句循环输出字符串: VAR Number := 1; WHILE VAR DBMS_OUTPUT.PUT_LINE(SUBSTR(v_sql, VAR, 200原创 2013-01-18 09:51:06 · 4887 阅读 · 0 评论 -
RAISE_APPLICATION_ERROR用法
可能不是很多人知道 RAISE_APPLICATION_ERROR 的用途是什么,虽然从字面上已经猜到这个函数是干什么用的。今天在我们的业务库里发现了触发器错才看到这东西的用法的。 其实 RAISE_APPLICATION_ERROR 是将应用程序专有的错误从服务器端转达到客户端应用程序。 RAISE_APPLICATION_ERROR 的声明:原创 2013-01-18 09:32:38 · 1545 阅读 · 0 评论 -
oracle set命令小结
常用set小节 在写脚本的时候,往往需要对输出的格式进行规范,我们常常用set语句在设置一些需要的格式规范。下面,列举了几个常用的set,和他们的应用。SQL> set linesize 80; //输出一行字符个数,缺省为80SQL> set numwidth 12; //输出number类型域长度,缺省为1SQL> set verify of原创 2013-08-16 14:02:14 · 3687 阅读 · 0 评论 -
oracle spool定期导出文本文件数据,并加载到teradata
oracle导出文本文件数据的方法貌似只有sqlplus的spool命令,要定期导出需要借助os的计划任务之类的,不过10g中dbms_schedualr也支持直接掉os批处理文件。 文件名动态命名为当前日期。 例如,--bat文件D:\oracle92\bin\sqlplus @C:\zhjh\demo.sql --C:\zhjh\demo.sqlSET NEWPAGE NONESET原创 2013-01-10 16:38:15 · 1970 阅读 · 0 评论 -
表空间查看脚本show_space使用
使用show_space存储过程可以查看表、索引等空间使用情况,源代码如下:CREATE OR REPLACE PROCEDURE show_space ( p_segname_1 IN VARCHAR2, p_type_1 IN VARCHAR2 DEFAULT 'TABLE', p_space IN VARCHAR2原创 2015-01-14 09:25:35 · 1448 阅读 · 0 评论 -
MHA 实现VIP切换用到脚本
在MHA Manager端配置中,如果实现MHA的vip故障切换需要在配置文件/etc/masterha/app1/app1.cnf 中启用下面三个参数:master_ip_failover_script= /etc/masterha/app1/master_ip_failover #master failover时执行#shutdown_script= /etc/masterha原创 2016-01-12 14:35:31 · 9287 阅读 · 0 评论 -
关于表空间的操作
今天整了一天的表空间,这是操作的几个实例:创建表空间实例:Create Tablespace Data Datafile '/oradata1/data01.dbf' Size 6000m Extent Management Local Segment Space Management Auto Uniform Size 1m;修改表空间实例:ALTER TABLESPACE pa原创 2013-01-18 09:36:31 · 765 阅读 · 0 评论 -
oracle函数返回表
包里面用一个存储过程,返回游标,就可以了>包的定义1) 包头create or replace package mypkastype t_cursor is ref cursor;procedure proc(name varchar2,c out t_cursor,a number);end;2) 包体create or replace package原创 2013-01-31 09:32:53 · 1171 阅读 · 0 评论 -
oracle最高效的删除重复记录方法
因为使用了ROWIDDELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO);原创 2013-01-25 16:48:21 · 2389 阅读 · 0 评论 -
oracle递归START WITH...CONNECT BY PRIOR子句用法
connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with cond1 connect by cond2 where cond3;例:select * from classstart with parentid = 27362Connect by prior id = parentid简单原创 2013-01-25 16:49:17 · 1387 阅读 · 0 评论 -
修改一个oracle序列的当前值
declare LastValue integer;begin loopselect SEQ_CONTRACT.currval into LastValue from dual; exit when LastValue >= 160 - 1; ---- 160是设置的值 select SEQ_CONTRACT.nextval into LastValue原创 2013-01-25 16:53:03 · 1486 阅读 · 0 评论 -
sybase和mssqlserver游标的写法区别
sybase游标写法:declare cursor_name cursor for select * from tableopen cursor_namefetch cursor_name into 变量while @@sqlstatus=0begin 处理数据... fetch cursor_name into 变量endclose curs原创 2013-01-28 10:45:01 · 940 阅读 · 0 评论 -
oracle将xml导入数据库
将xml导入数据库2007-11-19 05:11 P.M. /*****************************************************************************过程名称:add_to_stockmarket参数1:fileName in varchar2 接收用户输入的xml文件名功能:将xml文件中的数据导入到Stockmar转载 2013-01-29 13:03:36 · 3454 阅读 · 0 评论 -
在UNIX、windows下让ORACLE定时执行*.sql文件
ORACLE数据库自带的DBMS_JOB功能可以实现定时执行PL/SQL的存储过程,但是如果SQL语句很复杂,SQL语句很多,以及经常要改变SQL语句的写法,用写PL/SQL存储过程的方法再定时执行会比较繁琐。何况还有一些UNIX系统管理员不会写PL/SQL存储过程,所以我介绍一个简单的shell程序可以在安装了ORACLE SERVER或CLIENT的UNIX机器上实现定时执行一个*.sql文件原创 2013-01-29 13:10:02 · 2336 阅读 · 0 评论 -
rman备份实例
shell脚本:#backup_full.shrman target / cmdfile=/oracle/backup_full.rmanrman脚本全库及数据库归档日至进行全备份:run{allocate channel d1 device type disk;backup database format '/oradata/backup/FULL_%T_%d_%U';原创 2013-01-29 13:17:31 · 936 阅读 · 0 评论 -
用sqlserver过程把xml文件导入数据库
create proc p_mod_mxl @xml Ntext --注意:如果不用Ntext或nvarchar类型,xml内容里有中文会报错。as DECLARE @idoc int EXEC sp_xml_preparedocument @idoc OUTPUT, @xml SELECT *原创 2013-01-29 13:04:16 · 5127 阅读 · 0 评论 -
动态 SQL、EXECUTE IMMEDIATE、using、into、returning
很多时候我们需要在存储过程中使用动态的SQL,要怎么用好动态SQL呢,怎样执行效率最高呢。下面来介绍一下,如何使用动态SQL操作数据库。在存储过程中执行一个简单的SQL语句使用下面的方法即可。DECLAREBEGIN /* 使用该方法来创建一个新数据表,但这方法需要当前用户具有创建表的权限。 */ EXECUTE IMMEDIATE 'create table test (data1 n原创 2017-06-06 17:21:52 · 3436 阅读 · 0 评论