oracle
文章平均质量分 78
Cryking
双重性格,一半喜静,一半喜动
展开
-
PLS-00642
---------------------------------------------------------------------------------------------ORA错误处理系列 By Cryking---------------------------------------------转载请注明出处,谢谢!-------------------------原创 2013-06-25 00:28:37 · 4665 阅读 · 0 评论 -
PL/SQL学习三(参考变量、标识符、基本语句及NULL值处理)
8、参照变量 参照变量是指用于存放数值指针的变量。主要有游标变量和对象类型变量两种。 8.1、REF CURSOR(游标变量) 当使用显示游标的时候,您需要在定义显示游标的时候指定相应的SELECT语句,这种显示游标又称为静态游标。 当使用游标变量的时候,不需要指定SELECT语句,而是在打开游标的时候指定,这种游标称为动态游标。-- ex:pl/sql_10 D...原创 2012-08-20 08:35:39 · 3153 阅读 · 1 评论 -
PL/SQL学习四(事务控制及分组)
16.事务控制 事务是用来确保数据库数据的一致性,它由一组相关的DML语句组成。该组DML语句要么全部成功提交, 要么全部取消。 数据库事务主要由INSERT,UPDATE,DELETE和SELECT...FOR UPDATE语句组成。当执行COMMIT或ROLLBACK语句 时,当前事务结束。 16.1 事务和锁 当执行事务操作的时候,oracle...原创 2012-08-22 08:38:24 · 4117 阅读 · 0 评论 -
PL/SQL学习五(连接查询和子查询)
18. 连接查询 连接查询是指基于多个表或视图的查询。 当使用多个表进行连接查询的时候: 1.需要在FROM后面指定两个或两个以上的表 2.在SELECT时,列名需要加上表名作为前缀 3.需要在WHERE内指定两表或多表的连接条件,如不指定则视为笛卡尔积(A表记录条数xB表记录条数) 示例:SQL> SELECT e.ename,e.sal,d.dn...原创 2012-08-23 08:34:40 · 1628 阅读 · 0 评论 -
PL/SQL学习六(合并查询与复杂查询)
20. 合并查询 使用集合操作符号UNION、UNION ALL、INTERSECT、MINUS来进行查询结果的合并操作。 注意集合操作符号有以下限制: 1. 对与LOB,VARRAY和嵌套表来说,集合操作符是无效的。 2. 对与LONG列来说,UNION、INTERSECT、MINUS操作符是无效的。 UNION UNION用于获取两个结果集的并集。使用...原创 2012-08-27 08:37:47 · 3035 阅读 · 0 评论 -
查找当前用户的所有数据库对象的依赖关系
1.我们查看数据库对象依赖关系一般是用dba_dependencies视图来查看。 这里我们使用对象依赖树utldtree来查看. 首先建立依赖关系表:CREATE TABLE OB_DEP(owner varchar2(20),--用户名 type varchar2(30), --对象类型,如表、存储过程、函数等原创 2012-09-06 17:13:13 · 3384 阅读 · 2 评论 -
PL/SQL 练习题
1.部门10和30中工资超过1500的雇员名及工资SQL> select ename,sal 2 from scott.emp 3 where sal>1500 4 and deptno=any(10,30);ENAME SAL---------- ----------ALLEN 1600BLAKE原创 2012-08-28 12:55:38 · 3281 阅读 · 0 评论 -
PL/SQL学习八(PLSQL块与控制结构)
23. PL/SQL块 注意PL/SQL块中只能直接嵌入SELECT、DML语句以及事务控制语句,而不能直接嵌入DDL语句和DCL语句(GRANT、REVOKE)。 23.1 PL/SQL块嵌入SELECT语句 注意接收变量INTO与SELECT的列的数量及数据类型要一致。-- ex:pl/sql_12--SQL*PLUS下开启输出显示SQL> set...原创 2012-09-05 12:55:18 · 1559 阅读 · 0 评论 -
PL/SQL学习九(复合数据类型的使用)
25. PL/SQL中使用复合数据类型 使用记录类型来进行单行多列的数据处理;使用索引表、嵌套表、可变数组进行单列多行的数据处理; 使用PL/SQL记录表处理多行多列的数据. 25.1 记录类型 PL/SQL记录类似C中的STRUCT类型.记录类型一般定义如下:DECLARE TYPE EMP_RECORD_TYPE IS RECORD( ...原创 2012-09-12 09:19:40 · 1546 阅读 · 0 评论 -
oracle 查询语句收集
--查询数据文件名及IDSELECT FILE#, NAME FROM V$DATAFILE;--查看alert警告,以及oracle给出的处理建议SELECT REASON, OBJECT_TYPE, SUGGESTED_ACTION FROM DBA_OUTSTANDING_ALERTS;--列出当前模式下所有外键的报告表SELECT RPAD(CHILD.TABLE_NA原创 2012-09-24 12:06:30 · 859 阅读 · 0 评论 -
oracle开启audit(审计)
1、查看审计功能是否开启(本机已经开启,如果audit_sys_operations值为FALSE就是没开审计)SQL> CONN /AS SYSDBASQL> show parameter audit NAME TYPE VALUE--------------------------------原创 2012-08-14 16:44:43 · 34157 阅读 · 1 评论 -
关于SQLLDR的VAR参数用法
在学习使用SQLLDR的VAR参数时,发现总是报如下错误:SQL*Loader-501: 无法读取文件 (ldr_case2.dat)SQL*Loader-563: VAR 记录的长度错误SQL*Loader-509: 系统错误: 操作成功完成。SQL*Loader-2026: 加载因 SQL 加载程序无法继续而被终止。很是郁闷。。。我的控制文件是这样的:原创 2012-11-26 16:59:39 · 1632 阅读 · 0 评论 -
分析ROLLBACK是否产生日志信息
首先介绍分析日志的方法,采用LOGMNR流程如下:SQL> @F:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslm.sql程序包已创建。授权成功。同义词已创建。SQL> @F:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\AD原创 2012-10-25 11:59:32 · 1719 阅读 · 0 评论 -
oracle各后台进程简介
oracle后台进程 后台进程用来执行保证数据库运行所需的实际维护任务。如:某个后台进程维护缓冲区缓存,根据需要将块写出到数据文件. 另个进程负责在线重做日志文件写满时将它自己复制到一个归档目标. 可以通过查询v$bgprocess视图看服务器当前后台进程SQL> select paddr,name,description from v$bgprocess where pad原创 2012-12-06 14:19:25 · 4303 阅读 · 0 评论 -
Centos下安装oracle 11g r2遇到的问题
抽空在VM下实验了在Centos5.5下安装oracle 11g r2,本以为比较简单的,却发现出现不少问题.安装步骤:1、check 相应的rpm包 这个没check完也不要紧,安装oracle的时候它会检查的。 按照官方文档的包CHECK,版本只能高不能低哦The following or later version of packages for Orac原创 2012-12-10 21:10:18 · 6604 阅读 · 0 评论 -
sqlplus的注释BUG
BUG如下:23:24:13 @> conn oe/oe@cry已连接。23:24:25 OE@cry> /* test */23:24:38 OE@cry> /* test */select count(*) from orders; COUNT(*)---------- 105已用时间: 00: 00: 00.05直接写注释,或者原创 2012-12-11 23:28:20 · 4209 阅读 · 0 评论 -
使用系统包DBMS_ALERT监视表
DBMS_ALERT支持异步捕获数据库事件.现测试其捕捉表的各种改变,测试表为emp.由于是异步的,我们这里需要开2个SQLPLUS窗口(两个session)第一个session里写存储过程如下:(注意要先给SCOTT用户权限哦,grant execute on dbms_alert to scott)declarev_n varchar2(30);v_m varc原创 2012-12-12 10:25:07 · 2010 阅读 · 0 评论 -
SQLPLUS的LOGIN脚本
--设定默认编辑器define _editor=Notepad --设定替换值不显示"原值","新值"提示set verify off--设定输出显示,且缓冲区设置为1000000 set serveroutput on size 1000000 --假脱机输出文本时,会去除文本行两端的空格,且行宽不定.如果为off,则文本行宽度等于linesizeset trimspool on原创 2012-11-09 17:06:08 · 1595 阅读 · 0 评论 -
[SQLPLUS]自动保存执行过的SQL
在学习oracle的时候,想把执行过的命令和结果记录下来,但是使用SQLPLUS每次save也不是办法,每次手动spool又挺麻烦,于是自己制作了一个SQLPLUS的BAT脚本来实现自动SPOOL到文件里面脚本内容@echo offcolor 0aecho ***********自定义SQLPLUS**************echo ***可自动输出日期格式LOG到指定位置****原创 2012-12-27 10:03:41 · 1442 阅读 · 0 评论 -
使用子查询因子化(with..as)创建表
创建表有多少种方法?CREATE TABLE AS SELECT * from table;DMPSQLLDR...这里介绍一种不常用的方法(使用with .. as建表):22:10:22 SCOTT@cry> create table dept60_bonuses as with t22:11:03 2 (select 103 as employee_id,0原创 2012-12-14 22:28:00 · 1890 阅读 · 2 评论 -
[PL/SQL]保存误删除的存储或表等对象到文件
在开发环境,由于多人共享一个库,而且权限管理不合理的话,很有可能出现你删除了我的存储,我删除了你的表的情况.一般如果发现的及时,可以使用闪回技术马上闪回相应的表及数据,但是闪回具有一定的局限性:受闪回区大小限制,如果删除对象的时间过长就很有可能闪回不了了。所以本人写了一个存储和触发器来把DROP掉的对象全部以文件的方式保存起来(相当于做了一个备份),以方便误删除对象之后的恢复. 首原创 2013-01-04 10:53:47 · 1249 阅读 · 0 评论 -
[PL/SQL]测试存储过程执行超长SQL(使用CLOB变量)
在存储过程执行动态SQL一般有两种方法:1、EXECUTE IMMEDIATE sql语句. 11g支持 EXECUTE IMMEDIATE CLOB变量.2、使用DBMS_SQL包 11g的DBMS_SQL.PARSE也已经支持CLOB变量存储过程的参数VARCHAR2虽然已经支持32672的长度,但想传入更长的变量时候,我们要么使用LONG、要么使用L原创 2013-01-09 12:31:56 · 9180 阅读 · 0 评论 -
验证PL/SQL中新开窗口会新增会话(同一连接下)
首先使用PL/SQL连接登录到数据库(测试帐号为:SCOTT)然后查询当前会话状态--先使用SYS帐号赋V$SESSON视图的查询权限给SCOTTgrant select on v_$session to scott--然后用SCOTT帐号使用PLSQL登录查询当前会话状态(只开了一个SQLWindow)SELECT sid,username,status,machine,原创 2012-10-26 10:04:23 · 5359 阅读 · 0 评论 -
PL/SQL学习二(复合变量)
6、%TYPE用法 当使用%TYPE属性来定义变量的时候,它会安装数据库的列属性或其他变量的属性来确定你当前定义的新变量的类型和长度。 如: v_sal emp.sal%TYPE; 表示v_sal变量与表emp的列sal属性一样(长度和类型都一致)。 7、复合变量 复合变量是指用于存放多个值的类型。主要有四种: 7.1、PL/SQL RECORD(记录类型...原创 2012-08-17 19:05:18 · 2540 阅读 · 1 评论 -
PL/SQL学习一(匿名块和子程序)
1、PL/SQL块基本组成:DECLARE /* * 定义部分---定义常量、变量、复杂数据类型、游标等(可选的)*/BEGIN/* * 执行部分---PL/SQL及SQL语句的执行(必须的)*/EXCEPTION/* * 异常处理部分---处理运行错误(可选的) */END; -- 块(block)结束标记-- ex:pl/sql_1BEGIN d...原创 2012-08-08 18:08:59 · 2934 阅读 · 2 评论 -
手动创建数据库步骤
创建数据库前的规划:1.预估表和索引所占空间大小2.计划数据库文件在操作系统的分布(如:将REDO日志文件放在单独的磁盘或者磁带上)3.选择一个全局数据库名(设置DB_NAME和DB_DOMAIN)4.服务器参数文件配置5.选择数据库字符集6.选择支持的时区(缺省时区文件是timezlrg_11.dat)7.选择标准的数据块大小8.考虑是否手动指定在线重做日志的块大翻译 2013-03-08 15:16:01 · 3303 阅读 · 0 评论 -
[PL/SQL]使用存储过程实现导出指定数据到文件(仿EXP)
由于EXP不能直接导出表的指定字段(其实也可通过CREATE TABLE tablename AS SELECT...来间接实现),故自己写了个存储来实现这个功能.create or replace procedure exp_data( file_name in varchar2 --要导出的文件名,(包含路径,如:d:\test\exp_0003.txt) --,path_原创 2013-03-04 14:09:05 · 3009 阅读 · 10 评论 -
SQLPLUS使用介绍
1、连接(connect可简写为CONN) CONN[ECT] {username | /}[@connect_identifier] [edition={edition_name | DATABASE_DEFAULT}] [AS {SYSOPER | SYSDBA}]SQLPLUS下操作系统验证登录DBA角色: connect / AS sysdba用户名/密码登录格式原创 2013-02-28 14:49:25 · 2259 阅读 · 0 评论 -
PL/SQL学习七(内置函数)
CUME_DIST(expr1,expr2...) WITHIN GROUP(ORDER BY expr1,expr2...):返回特定数值在一组行数据中的累积分布比例.PERCENT_RANK(expr1,expr2...) WITHIN GROUP(ORDER BY expr1,expr2...):返回特定数值在统计级别中所在比例.DENSE_RANK(expr1,expr2...)WITHIN GROUP(ORDER BY expr1,expr2...):返回特定数据在一组行数据中的等级.原创 2012-09-03 08:47:42 · 4646 阅读 · 3 评论 -
UE(UltraEdit)PL/SQL语法高亮代码
/L10"PL/SQL" Nocase Line Comment = -- Block Comment On = /* Block Comment Off = */ File Extensions = SQL TXT/Delimiters = ~!%@^&*()-+=|\/{}[]:;"'<> , .?/Function String = "%[A-Z _]*[~\s]+(*)"/C1转载 2013-01-02 21:07:38 · 6589 阅读 · 0 评论 -
自动去掉后台中指定的HINT
由于数据库版本升级,有些HINT已经没有效果(如/* +RULE */),决定从后台进行清理,但是存储+函数+触发器+视图一共有近2000的对象,一个个去SELECT之后,再替换为空,再去执行显然不太现实.故写了一个脚本实现自动替换. CREATE OR REPLACE PROCEDURE AUTOREPLACEHINT(PHINT VARCHAR2)--实现自动替换所有存储、函数、视图、原创 2013-04-07 14:37:16 · 975 阅读 · 0 评论 -
PL/SQL调用JAVA获取网卡MAC地址
主要是学习PL/SQL调用JAVA的方法.平台:WINDOWS1.首先用PL/SQL创建好JAVA 源文件(JAVA source)并进行编译,直到没有错误. 注意调用一些外部JAVA 包的时候,编译的时候可能不报错,直到你执行函数的时候才会错误,错误信息一般为:ORA-29540 create or replace and compile java source na原创 2013-04-08 11:20:36 · 1940 阅读 · 2 评论 -
给指定的一批表自动加DML触发器
为了跟踪一批表的操作记录,需要对该批表做触发器进行跟踪(没有用审计,因为审计需要有SYS权限),通过一个一个表写触发器,显然不太现实,Oracle又不支持同时对多个表建立一个触发器.这里我就用存储过程的方式实现自动创建触发器了.注:本人还是不建议使用大量触发器的,因为大量触发器会影响性能,而且据说触发器是串行操作的,那么速度上肯定会打折扣,还有一个原因就是触发器容易造成不能预知的递归触发。原创 2013-04-08 17:15:50 · 1311 阅读 · 0 评论 -
再谈细粒度审计(DBMS_FGA)
大部分内容都是来自oracle官方文档,权当学习学习。1.DBMS_FGA包一般是用在基于成本的优化器下. 在基于规则的优化器下可能生成不必要的审计记录.(因为审计监控可以在行过滤前发生)无论是基于规则或是基于成本的优化器,都可以通过DBA_FGA_AUDIT_TRAIL视图分析SQL文本和其对应的绑定变量.2.DBMS_FGA的子程序 ADD_POLICY DISA原创 2013-04-08 23:20:08 · 5612 阅读 · 0 评论 -
自动创建测试用例表(练习网上各种题目用)
每天网上逛,总是想帮别人解决一点问题,但有的朋友没有给出明确的表,就给了一些样本数据,于是要自己手动的WITH T AS (SELECT ... FROM DUAL UNION ALL ....)这样创建测试表,时间长了,感觉敲的好麻烦,我这个人比较懒,于是自己写了个自动创建测试表的存储。。。create or replace procedure autocreate_withtable原创 2013-04-12 14:26:53 · 1184 阅读 · 0 评论 -
oracle 11g PL/SQL Programming学习一
第一章 概览 PL/SQL历史背景(history and background) PL/SQL是随着oracle在80年代末发展起来的.最初,其功能还很有限,但是在90年代初它开始提供oracle数据库内置解析器以及依赖于操作系统的编程环境. 你可以在SQL*PLUS的命令行中直接调用PLSQL语言.同样PLSQL也可以直接被外部程序语言调用.原创 2012-08-09 17:22:22 · 2744 阅读 · 0 评论 -
LOGMNR挖掘日志与DUMP日志对比
很多人都知道使用LOGMNR来分析日志,但是很少有人来使用DUMP来分析日志,具体是因为LOGMNR分析出来的信息方便查阅,也便于理解.但是有些时候我们还是需要DUMP来分析日志文件,因为它记录的更详细,更真实。(其实一般的LOGMNR分析的日志不是很全的) 有次LOGMNR日志分析后,我发现挖掘的信息十分诡异,我是根据ROWID查询LOGMNR分析出来的记录的,发现某个ROWID有I原创 2013-04-27 01:06:19 · 2077 阅读 · 0 评论 -
oracle 11g PL/SQL Programming学习四
------------------------------------------------------------------------------Cryking 学习笔记系列-----------------------------------转载请注明出处,谢谢!---------------- 第六章 函数和存储三种参数模式:只读(IN)、只写(OUT)、读写(IN原创 2013-04-19 00:55:37 · 1550 阅读 · 0 评论 -
oracle 11g PL/SQL Programming学习三
------------------------------------------------------------------------------Cryking 学习笔记系列-----------------------------------转载请注明出处,谢谢!---------------- 第二部分原创 2013-04-18 00:27:27 · 5032 阅读 · 0 评论 -
oracle 11g PL/SQL Programming学习二
------------------------------------------------------------------------------Cryking 学习笔记系列-----------------------------------转载请注明出处,谢谢!---------------- 第二章 PL/SQL基础 PL/SQL语言和SQL一样是一种大小写原创 2013-04-16 00:16:43 · 2359 阅读 · 0 评论