设为首页 加入收藏

TOP

DBA管理脚本大全(八)
2014-11-24 02:52:05 来源: 作者: 【 】 浏览:15
Tags:DBA 管理 脚本 大全
DDL_TEXT FROM DUAL;
SQLTEXT:=SQLTEXT||DDL_TEXT;
END LOOP;
CLOSE R_OBJ;
END;
/
create or replace PROCEDURE CLOB_READ
--功能:读取指定用户下某一存储过程返回的大对象文本,并保存到指定目下下的文本文件中
--参数:DBUSER-数据库用户名,PROCNAME-该用户下的存储过程名,PARAS-该用户下的存储过程参数列表(以','分隔),DIR-指定目录,FILENAME-文件名,TITLE-文件标题说明,AUTHOR-文件作者说明
--调用:EXECUTE clob_read('OPENVONE','GET_ALL_OBJECTS','''OPENVONE'',0,''''','D:\backdb','添加所有结构脚本','执行添加用户添加所有结构脚本','郭君')
--作者:郭君
--日期:2013-02-10
(
DBUSER IN VARCHAR2,
PROCNAME IN VARCHAR2,
PARAS IN VARCHAR2,
DIR IN VARCHAR2,
FILENAME IN VARCHAR2,
TITLE IN VARCHAR2,
AUTHOR IN VARCHAR2
)
--步骤:分三步走
--一:设置文件目录
--alter system set utl_file_dir='D:\backdb'scope=spfile;
--二:赋予用户操作文件的权限
--grant EXECUTE ON UTL_FILE TO openVone;
--三:调用示例:EXECUTE clob_read('OPENVONE','GET_ALL_OBJECTS','''OPENVONE'',0,''''','D:\backdb','添加所有结构脚本','执行添加用户添加所有结构脚本','郭君')
AS
l_file utl_file.file_type;
l_buffer VARCHAR2(4000);
l_amount BINARY_INTEGER:=2000;
l_pos INTEGER:=1;
l_clob CLOB;
l_clob_len INTEGER;
t_sql VARCHAR2(2000);
col_list VARCHAR2(300);
out_count NUMBER; --输出参数个数,有且只能为一个
in_count NUMBER; --输入参数个数,可以为0个或多个
BEGIN
SELECT COUNT(*) INTO out_count FROM DBA_ARGUMENTS WHERE OWNER=dbuser AND OBJECT_NAME=procname AND IN_OUT='OUT';
IF out_count=1 THEN
SELECT COUNT(*) INTO in_count FROM DBA_ARGUMENTS WHERE OWNER=dbuser AND OBJECT_NAME=procname AND IN_OUT='IN';
t_sql:='BEGIN '||PROCNAME||'(';
FOR i IN 1..in_count LOOP
col_list:=col_list||REGEXP_SUBSTR(PARAS,'[^,]+',1,i)||','; --构建调用过程参数列表,此处PARAS以','进行分割
END LOOP;
t_sql:=t_sql||col_list||':v1);END;'; --构建调用过程输出参数,定义该过程只有一个输出参数且类型为clob类型
EXECUTE IMMEDIATE t_sql USING OUT l_clob; --此处为输出参数
l_clob_len:= dbms_lob.getlength(l_clob);
l_file:=utl_file.fopen(DIR,FILENAME||'.txt','w',32767); --文件目录/名称
utl_file.put_line(l_file,'-------------------------------------------------');
utl_file.put_line(l_file,'---- 功能:'||TITLE);
utl_file.put_line(l_file,'---- 作者:'||AUTHOR);
utl_file.put_line(l_file,'---- 日期:'||to_char(SYSDATE,'YYYY-MM-DD hh24:mi:ss'));
utl_file.put_line(l_file,'-------------------------------------------------');
WHILE l_pos
dbms_lob.READ(l_clob,l_amount, l_pos, l_buffer);
utl_file.put(l_file,l_buffer);
l_pos:=l_pos+l_amount;
END LOOP;
utl_file.fclose(l_file);
END IF;
END CLOB_READ;
/
create or replace PROCEDURE RECOMPILE_ALL_PROJECTS
--功能:编译失效的结构,一般用的很少,查看失效过程可通过SELECT * FROM DBA_OBJECTS WHERE STATUS='INVALID'实现
--参数:DBUSER-数据库用户名
--调用:
--作者:郭君
--日期:2013-02-10
(
DBUSER IN VARCHAR2
)
--重新编译所有类型、视图、触发器、函数、过程、包,但不包括该过程本身
AS
CURSOR CUR_OBJECTS IS --类型、视图、触发器、函数、过程、包
SELECT * FROM DBA_OBJECTS WHERE owner=DBUSER AND STATUS='INVALID' AND OBJECT_TYPE IN('TYPE','VIEW','FUNCTION','PROCEDURE','PACKAGE','TRIGGER')
AND OBJECT_NAME<>'RECOMPILE_ALL_PROJECTS' --不能编译自己
ORDER BY DECODE(OBJECT_TYPE,'TYPE',1,'VIEW',2,'FUNCTION',3,'PROCEDURE',4,'PACKAGE',5,'TRIGGER',6);
OBJ_LIST DBA_OBJECTS%ROWTYPE;
SQLTEXT VARCHAR2(2000);
BEGIN
OPEN C
首页 上一页 5 6 7 8 下一页 尾页 8/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在SQL Server中对视图进行增删改 下一篇sqlserver给视图赋权限

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)
·MySQL 索引 - 菜鸟教 (2025-12-24 10:18:06)
·Shell 基本运算符 - (2025-12-24 09:52:56)
·Shell 函数 | 菜鸟教 (2025-12-24 09:52:54)