plsql执行sql语句_plsql执行sql语句过大
在plsql里执行语句没有执行commit就关机,后来在语句后面加for update执行时没反应。
4、根据真实与预估的统计信息可以@sql02.sql初步判断SQL效率低下的原因,如统计信息的准确性、主要的开销位于那些步骤等plsql只执行当前光标SQL
2 2 201206PLSQL提供了典型的高级语言特性,包括封装,例外处理机制,信息隐藏,面向对象等;并把的编程思想带到了数据库和工具集中。与Ja,C#相比,PLSQL的优势是:SQL语言可以直接写到PLSQL的“块”中或者是PLSQL的过程、函数中。没有必要向ja那样先创建Statement对象来执行SQL;这使得PLSQL成为很强大的事务处理语言,即:使用SQL来处理数据,使用控制结构来处理业务逻辑。
plsql执行sql语句_plsql执行sql语句过大
plsql执行sql语句_plsql执行sql语句过大
相信很多在plsql dloper调试oracle的朋友,经常会遇到在plsql dloper执行的某一条SQL语句没有保存,那么我们在plsql dloper下如何找到我们执行过的SQL语句呢,其实通过下列方法很容易实现。
PL/SQL(ProceduralLanguage/SQL)是一种过程化语言,属于第三代语言,它与C、C++、Ja等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的目的是联合数据库语言和过程语言。PL/SQL的基本单位叫做块,由三个部分组成:一个声明部分,一个执行部分和异常处理部分。因为PL/SQL允许混合SQL声明和过程结构,因此可以在将声明发送到甲骨文系统去执行之前使用PL/SQL区段和副程序来组合SQL声明,没有PL/SQL,甲骨文需要就每次处理SQL声明,在网络环境中,这将影响交通流量,而且增加响应时间。PL/SQL区段只被编译一次并且以可运行的形式储存,以降低响应时间。
如何利用BAT文件登陆OracleSql并执行多个sql脚本PLSQL语句
6 AND evt.wait_class = 'User I/O'前面的写对着,后面的不对
dbms_output.put_line(to_date(datetiem.now));sqlplus / as sysdba;
@sql01.sql
这不能这样写,要
sqlplus / as sysdba @1.sql
sqlplus / as sysdba @2.sql
sqlplus / as sysdba @3.sql
使用PLSQL,Ctrl+E快捷方式提时示没有语句可重新调用?
5、调试存储过程在SQL窗口,使用快捷键plsql dloper中按ctrl+e 就会调出历史记录了,历史记录文件默认保存在C:UsersAdministratorAppDataRoamingPLSQL DloperPLSRecall.dat ,如果你清楚PLSRecall.dat文件后,在按ctrl+e就不会调出下列窗口界面了。
通过上DBMS_SCHEDULER.CREATE_ (面的方法是不是很容易,就找到历史使用的SQL语句。
执行多条plsql语句报ORA-001错误,单条执行没问题,怎么回事
直接执行这个语句就好,不需要改动什么,执行完得到sid和 SERIAL#,然后执行alter kill session 'sid,SERIAL#';就可以解锁了ORA-001,说2 - access("ACC"=:B0)的是无效字符
问题是你在哪儿执行多条sql?
每个sql应该都用分号(;)结尾,或者说多条sql必须用分号来分隔,你是这么做的吗?
plsql中按F8键执行带有注释的sql语句,不能正确执行
Plan hash value: 319441092我印象中,以前版本的PLSQL Dloper的确有此问题,后来用了PLSQL Dloper 8.x 之后就没有过了,其实一直没有关注过。个人建议你下个高版本的试试。
F8执行的是你选择的SQL部分或者是所有SQL,为什么用自动我没搞懂,你注释后的语法有问题就不能执行了,没SQL没人能回答
我用plsql 7.1.2 勾选了 两个Auto 执行上述语句,表示没有问题,应该是你SQL本身的问题。
我的没事儿。4fvwyjpnh6tp7 78两个都可以用F8来执行。
我在用PLSQL执行一条很长的SQL语句,请问电脑待机了,还在继续执行吗?
:a2,"PAPER_TYPE" = :a3,"PAPER_NO" = :a4,"CURR_TYPE" = :a5,"SVT_NO" =不会继续执行,待机时候电脑记录当时的中断,任务不在执行
不会,会终止的
如果你想执行了以后关闭然后查看MY__TEST表,发现每分钟会往里面添加记录。pl sql的话,可以考虑做个job,然后执行这个job。
如何使用plsql dloper
在数据库中新建了一个表MY__TEST1、PL/SQL Dloper记住登陆密码
在数据库中新建了一个表MY__TEST在使用PL/SQL Dloper时,为了工作方便希望PL/SQL Dloper记住登录Oracle的用户名和密码;
设置方法:PL/SQL Dloper 7.1.2 ->tools->Preferences->Oracle->Logon History , "Store history"是默认勾选的,勾上"Store with password" 即可,重新登录在输入一次密码则记住了。
2、执行单条SQL语句
在使用PL/SQL Dloper的SQL Window时,按F8键,PL/SQL Dloper默认是执行该窗口的所有SQL语句,需要设置为鼠标所在的那条SQL语句,即执行当前SQL语句;
设置方法:PL/SQL Dloper 7.1.2 -->tools->Preferences-->Window types ,勾上"AutoSelect Statement" 即可。
3、格式化SQL语句
在使用PL/SQL Dloper的SQL Window时,有时候输入的SQL语句太长或太乱,希望能用比较通用的写法格式话一下,这样看起来会好看些,也好分析;
使用方法:选中需要格式化的SQL语句,然后点击工具栏的PL/SQL beautifier按钮即可.
4、查看执行
在使用PL/SQL Dloper的SQL Window时,有时候输入的SQL语句执行的效率,分析下表结构,如何可以提高查询的效率,可以通过查看Oracle提供的执行;
使用方法:选中需要分析的SQL语句,然后点击工具栏的Explain plan按钮(即执行),或者直接按F5即可。
在使用PL/SQL Dloper作Oracle时,有时候调用某些存储过程,或者调试存储过程;
调用存储过程的方法:首先,在PL/SQL Dloper左边的Browser中选择Procedures,查找需要调用的存储过程;然后,选中调试的存储过程,点击右键,选择Test,在弹出来的Test scrīpt窗口中,对于定义为in类型的参数,需要给该参数的Value输入值;点击上面的条数按钮:Start debugger 或者按F9;点击:RUN 或者Ctrl R
pl/sql代码中文是横着显示的。
PL/SQL:包括一整套的数据类型、条件结构、循环结构和异常处理结构,PL/SQL可以执行SQL语句,SQL语句中也可以使用PL/SQL函数。登陆plsql,执行sql语句,输出的中文标题显示成问号????;条件包含中文,则无数据输出
输入sql语句select from V$NLS_PARAMETERS查看字符集,查看行value值是否为简体中文
进入注册表,依次单击HKEY_LOCAL_MACHINE 有关详细的format格式描述请参考:dbms_xplan之display函数的使用 中format参数的描述--->SOFTWARE ---> ORACLE--->home(小编安装的是Oracle 11g,这里显示成KEY_OraDb11g_home1),找到NLS_LANG,查看数值数据是否为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
如果以上设置都没有问题,那就要查看下环境变量的设置,查看是否有变量NLS_LANG,没有则新建该变量
新建变量,设置变量名:NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,确定即可
退出plsql,重新登陆plsql。输入sql语句,执行,中文标题终于正常显示,也有数据输出了
如何只跟踪通过sqlplus,plsql dloper等工具执行过的sql
显示真实的执行有助于更好的分析SQL语句的全过程,尤其是运行此SQL语句实时的I/O开销。通过对比预估的I/O与真实的I/O开销来判断
display_cursor函数的使用。
一、display_cursor函数用法
1、display_cursor函数语法
DBMS_XPLAN.DISPLAY_CURSOR(
sql_id IN VARCHAR2 DEFAULT NULL,
cursor_child_no IN NUMBER DEFAULT NULL,
format IN VARCHAR2 DEFAULT 'TYPICAL');
2、display_cursor函数参数描述
sql_id
指定位于库缓存执行中SQL语句的父游标。默认值为null。当使用默认值时当前会话的一条SQL语句的执行将被返回
可以通过查询V$SQL 或V$SQLAREA的SQL_ID列来获得SQL语句的SQL_ID。
cursor_child_no
指定父游标下子游标的序号。即指定被返回执行的SQL语句的子游标。默认值为0。如果为null,则sql_id所指父游标下所有子游标
的执行都将被返回。
format
控制SQL语句执行的输出部分,即哪些可以显示哪些不显示。使用与display函数的format参数与修饰符在这里同样适用。
除此之外当在开启statistics_ll=all时或使用gather_plan_statistics提示可以获得执行中实时的统计信息
下面给出启用统计信息时format新增的修饰符
iostats 控制I/O统计的显示
last 默认,显示所有执行计算过的统计。如果指定该值,则只显示一次执行的统计信息
memstats 控制pga相关统计的显示
allstats 此为iostats memstats的快捷方式,即allstats包含了iostats和memstats
run_stats_last 等同于iostats last。只能用于oracle 10g R1
run_stats_tot 等同于iostats。只能用于oracle 10g R1
抓一个近一小时消耗IO的SQL:
FROM gv$active_session_history ash, gv$nt_name evt
WHERE ash.sample_time > SYSDATE - 1 / 24
AND ash.session_state = 'WAITING'
AND ash.nt_id = evt.nt_id
AND evt.wait_class = 'User I/O'
GROUP BY sql_id
ORDER BY COUNT() DESC;
执行上面的SQL:
SQL> SELECT sql_id, COUNT()
FROM gv$active_session_history ash, gv$nt_name evt
4 AND ash.session_state = 'WAITING'
5 AND ash.nt_id = evt.nt_id
7 GROUP BY sql_id
8 ORDER BY COUNT() DESC;
SQL_ID COUNT()
------------- ----------
g7fu6qba82m6b 668
63r47zyphdk06 526
9f5m4wd88nc1h 514
5947drw5fhk 232
brw16jzy4fu 120
gm0nrbfuj8kzr 70
gc4dajs7g5myy 46
8vrk9sfuwfdgq 42
ccpnb4dwdmq21 40
查看SQL的执行:
SELECT FROM TABLE(dbms_xplan.display_cursor('g7fu6qba82m6b'));
在SQLPLUS中执行:
SQL> set pagesize 2000
PLAN_TABLE_Oselect sql_text from v$sqlareaUTPUT
------------------------------------------------------------------------------------------------------------------------
SQL_ID g7fu6qba82m6b, child number 0
-------------------------------------
UPDATE "CPDDS_PDATA"."CDM_LEDGER" SET "CSTM_NAME" = :a1,"CSTM_NO" =
:a6,"BAL_DIR" = :a7,"BAL" = :a8,"AVAL_BAL" = :a9,"NORM_FRATIO" =
:a10,"PK_BAL" = :a11,"DR_ACCU" = :a12,"CR_ACCU" = :a13,"LAST_TRAN_DATE" =
:a14,"LAST_TRAN_TIME" = :a15,"PRT_LINE_NUM" = :a16,"NOREG_PK_REC_NUM" =
:a17,"PK_NO" = :a18,"PWD" = :a19,"FLAG" = :a20,"FRZ_FLAG" =
:a21,"CARD_HOLD_FLAG" = :a22,"PK_HOLD_FLAG" = :a23,"BGN_INT_DATE" =
:a24,"OPEN_DATE" = :a25,"ACC_HOLD_FLAG" = :a26,"CLS_DATE" =
:a27,"OPEN_TLR"需要设置为鼠标所在的那条SQL语句即可。 = :a28,"CLS_TLR" = :a29,"CLS_INT" = :a30,"OPEN_INST" =
:a31,"ADD_NUM" = :a32,"DAC" = :a33,"FRZ_TIMES1" = :a34,"FRZ_TIMES2" =
:a35,"HOST_SEQNO" = :a36,"D_UPDATE_DATE" = :a37 WHERE "ACC" = :b0
-----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | | | 3 (100)| |
| 1 | UPDATE | CDM_LEDGER | | | | |
| 2 | INDEX UNIQUE SCAN| I_CDM_LEDGER | 1 | 269 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
29 rows selected.
总结
1、与display函数不同,display_cursor显示的为真实的执行
3、当statistics_ll为all或使用gather_plan_statistics提示可以获得执行时的统计信息
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。