精华内容
下载资源
问答
  • 1:用oracle用户登录到服务器2:输入sqlplusbcp/bcp123(这个时候有可能服务器上存在多个实例)查看实例(export ORACLE_BASE=/opt/oracleexport ORACLE_HOME=/opt/oracle/product/10gexport ORACLE_SID=sznylexport ...
    1:用oracle用户登录到服务器
    2: 输入 sqlplus bcp/bcp123(这个时候有可能在服务器上存在多个实例)查看实例(
    export ORACLE_BASE=/opt/oracle
    export ORACLE_HOME=/opt/oracle/product/10g
    export ORACLE_SID=sznyl
    export ORACLE_SID=testall
    export ORACLE_SID=bcpall
    )默认为最后一个bcpall
    如果想进入sznyl实例下面的bcp/bcp123需要执行下export ORACLE_SID=sznyl
    3: 输入 
    var code number; --out的值
    var msg varchar2(50);--out的值
    exec p_stat_recommend_day(:code,:msg);
    print code; --打印out的值
    print msg;--打印out的值

    转载于:https://www.cnblogs.com/working/p/3305672.html

    展开全文
  • 提示符下输入存储过程的内容,然后执行/ 即可编译存储过程 如果提示编译出错,则执行show error,可以看到错误的提示 然后执行edit进入命令行缓冲,根据提示修改存储过程,修改完毕,键入:x保存 然后再执行/ 重新...
    提示符下输入存储过程的内容,然后执行/ 即可编译存储过程

    如果提示编译出错,则执行show error,可以看到错误的提示

    然后执行edit进入命令行缓冲,根据提示修改存储过程,修改完毕,键入:x保存

    然后再执行/ 重新编译存储过程



    Link URL: http://echo.sharera.com/blog/BlogTopic/57800.htm

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26127/viewspace-545560/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/26127/viewspace-545560/

    展开全文
  • java代码调用shell脚本如下: RmtShellExecutor exe = new RmtShellExecutor("18.81.17.121", "erm", "gdserm"); // 执行imp_etl.sh 参数为cc00009991 int status = exe.exec("sh /home/erm/CMIS_DATA/bin/imp_...

    在java代码中调用shell脚本如下:

    RmtShellExecutor exe = new RmtShellExecutor("18.81.17.121", "erm", "gdserm");

    // 执行imp_etl.sh 参数为cc00009991
    int status = exe.exec("sh /home/erm/CMIS_DATA/bin/imp_etl.sh cc00009991");

    System.out.println("调用shell结果状态:"+status);


    完整的java代码查看文件:http://download.csdn.net/detail/missmyhome/8175745


    linux环境中有2个dba的用户:oracle、erm  还有1个web用户:erm
    在linux环境中,这三个用户都可以直接在任意目录下执行该shell脚本,可是在java代码中调用shell脚本时,报了如下4个错误:
    1、sqlldr: command not found
    2、sqlplus: command not found
    3、0750: You may need to set ORACLE_HOME to your Oracle software directory
    4、Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL$
    检查了dba用户和web用户下关于oracle的所有环境变量发现没有问题 (/home/oracle/.profile 与 /home/erm/.profile 环境变量文件为隐藏文件需使用 ls -a 命令查看)


    在网上查了一遍以后有如下几种处理办法:
    1、没有oracle_home目录的执行权限,无法进入到bin目录,使用chmod 755 $oracle_home更改目录权限;使用chmod 755 $oracle_home/lib更改目录权限;对目录$oracle_home/rdbms/mesg目录赋予相应权限;当需要给非oracle用户配置使用sqlldr时,不单需要配置环境变量,还需要把相关目录的访问权限赋予该用户。【采用此法测试以后还是出现上面的错误】


    2、用sh直接执行shell和在java直接执行shell是有区别的,要在shell文件内增加oracle的环境变量即. /home/oracle/.bash_profile 这句话,否则在执行sqlldr会报如下异常: 
    Message 2100 not found; No message file for product=RDBMS...... facility=UL 【采用此法测试以后继续报错,但是这个方法有引导作用,继续往下看】


    因为我在linux环境下执行shell脚本时sqlldr命令和sqlplus命令是正常执行的,没有任何问题,但是在java代码中调用脚本时却报错,所有排除了其他原因,只可能是环境变量的问题,
    于是我把oracle的所有环境变量直接复制到shell脚本文件中,在java中调用了一下,然后所有问题迎刃而解!


    shell脚本如下:


    PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.
    export PATH
    ORACLE_SID=ccbs
    ORACLE_BASE=/home/oracle
    ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1
    PATH=$PATH:$ORACLE_HOME/bin:.:/usr/local/bin
    umask=022
    export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH
    NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    export NLS_LANG


    #客户基本信息 
    /home/oracle/product/10.2/db_1/bin/sqlldr $ORACLE_CONNECT_ERM control=$WORKPATH/DATA_FILE/cus_com.ctl log=$WORKPATH/log/cus_com.log BINDSIZE=2097152 ROWS=10000 ERRORS=10000 READSIZE=4194304 DIRECT=TRUE
    #高管信息
    /home/oracle/product/10.2/db_1/bin/sqlldr $ORACLE_CONNECT_ERM control=$WORKPATH/DATA_FILE/cus_com_manager.ctl log=$WORKPATH/log/cus_com_manager.log BINDSIZE=2097152 ROWS=10000 ERRORS=10000 READSIZE=4194304 DIRECT=TRUE
    #股东信息
    /home/oracle/product/10.2/db_1/bin/sqlldr $ORACLE_CONNECT_ERM control=$WORKPATH/DATA_FILE/cus_com_rel_apital.ctl log=$WORKPATH/log/cus_com_rel_apital.log BINDSIZE=2097152 ROWS=10000 ERRORS=10000 READSIZE=4194304 DIRECT=TRUE
    echo "[step:1]" "客户数据装载完成···"


    #3、运行存储过程,从临时表处理至中间表


    完整的shell代码查看文件:http://download.csdn.net/detail/missmyhome/8175865


















    展开全文
  • 前言数据存储在性能优化扮演着极其重要的角色。存储类型,存取策略,存储命中率,等等,往往都会影响页面的实际性能。CPU Cache有多级缓存机制,浏览器有MemoryCache机制,服务器有CDN缓存,这些都为了更大程度的...

    前言

    数据存储在性能优化中扮演着极其重要的角色。存储类型,存取策略,存储命中率,等等,往往都会影响页面的实际性能。CPU Cache有多级缓存机制,浏览器有MemoryCache机制,服务器有CDN缓存,这些都为了更大程度的提升性能。本文详细介绍与H5页面相关的存储,以及可能的优化思路

    常见H5存储

    H5页面相关的存储非常多,我们先看看有那些类型的存储。

    84b7d2ad13c1e7e5c6876adb6bd98072.png

    通常,与页面加载性能相关的,有下面几种缓存,

    (1)MemoryCache

    MemoryCache, 资源存放在内存中,一般资源响应回来就会放进去,页面关闭就会释放。内存存取性能可达磁盘缓存性能的100倍,但这还不是MemoryCache的最大优 势,MemoryCache最大的优势是离排版渲染引擎非常近,可以直接被读取,甚至无需经过线程转换。在真实的页面访问过程中,获取资源的时间,磁盘 IO仅仅是其中的一部分,更多的时间往往消耗在各种线程抛转。

    (2)ClientCache

    ClientCache, 客户端缓存,比如,手淘里的ZCache(离线压缩包缓存),本质上属于磁盘缓存。这类Cache的优点是能以相对可控的方式让资源提前缓存在磁盘,但它 也有一系列的成本。比如,它需要一套服务器与客户端协同的下发更新逻辑,服务器端需要管理下发,客户端需要提前解压缩。我们可能觉得提前解压并不是什么弱 点,但如果有一千个离线包,这个问题就比较严重了,如果不提前解压,就无法保证首次访问性能,如果提前解压会让IO非常繁忙,可能会造成客户端打开时严重 卡顿。

    (3)HttpCache

    HttpCache,是历史比较悠久的缓存,它利用标准的 Cache-Control 与 服务器端进行协商,根据标准的规则去缓存或更新资源。它应用非常广泛,是非常有效果的一种磁盘缓存。它的缺点是完全由浏览器按标准规则控制,其它端的控制 力度非常弱。比如,某些被HttpCache缓存的静态资源出问题了,通常只能是改页面,不再使用出问题的资源,而无法主动清除出问题的资源。

    (4)NetCache

    网络相关的Cache,一般是指DNS解析结果的缓存,或预连接的缓存。DNS预解析和预连接是非常重要的,创建一个Https连接的成本非常大,通常需要600ms以上,也就是说,页面如果有关键资源需要全新建连接,秒开基本是不可能了。

    (5)CDN

    CDN一般是通过负载均衡设备根据用户IP地址,以及用户请求的URL,选择一台离用户比较近,缓存了用户所需的资源,有较好的服务能力的服务器,让用户从该服务器去请求内容。它能让各个用户的缓存共享,缩短用户获取资源的路径,来提升整体的性能。

    当然,还有其它非常多类型的Cache,比如,

    (1)JS相关,V8 Bytecode Cache,字节码缓存,能极大的减少JS解析耗时,甚至可以提升3-6倍的性能。参考:前端优化系列 - JS解析性能分析

    (2)渲染相关,图片解码数据缓存,是一块非常大的内存缓存,约100M,能保证页面滚动过程可以实时获取到图片解码数据,让滚动非常流畅。

    (3)页面相关,页面缓存,Safari的PageCache,Firefox的Back-Forward Cache,UC浏览器的WebViewCache,都是一样性质的缓存,将整个执行过的页面保存在内存。标准的页面缓存,进入的条件非常苛刻,大部分情况都无法进入,而且在前进后退的场景才允许使用

    资源响应成本

    前面提到,MemoryCache与其它磁盘缓存的最大差异并不在于磁盘IO成本,为什么这样说呢,我们先看看一个HTML文档资源请求的完整过程,

    -> Browser UI thread: load url

    -> Renderer: set up document loader & do request

    -> Renderer: If can use MemoryCache, return resource, commit navigation (直接使用MemoryCache的资源)

    -> Browser IO thread: set up request

    -> Browser UI thread: NavigationThrottle::WillStartRequest(回调onPageStarted)

    -> Browser IO thread: start shouldInterceptRequest

    -> Browser UI thread: shouldInterceptRequest, get cache from Zips(从客户端离线包获取资源)

    -> Browser IO thread: use shouldInterceptRequest response

    -> Browser IO thread: use HttpCache or start network request(使用HttpCache或从网络请求资源)

    -> Browser UI thread: NavigationThrottle::WillProcessResponse(进行MIME Sniff检测)

    -> Browser IO thread: send response to renderer(响应数据回传到Blink内核)

    -> Renderer: set response to MemoryCache, commit navigation(设置响应数据到MemoryCache,供后续流程使用)

    我 们可以非常清晰的看到,如果资源在MemoryCache,基本是没有加载成本的。但如果在其它Cache,比如,离线包缓存,HttpCache缓存, 除了磁盘IO时间,更多的是各种线程抛转的时间,在UI线程特别繁忙的时候,从IO抛消息到UI,可能要200ms,这是非常离谱的。但事实就是这样,资 源从磁盘缓存响应回来的过程,会有各种线程抛转的额外成本。

    5c73d7d34eb719c650aa228a5ea1ac50.png

    资源响应的成本,MemoryCache几乎是零成本,能在1ms的级别给到内核引擎使用。ZCache和HttpCache的成本都较大,而 HttpCache的成本相对少一些,它不需要再走到客户端的外壳层。通常资源从ZCache响应回到内核Blink引擎层需要100ms,UI线程特别 繁忙时,ZCache里的主文档资源响应甚至要300ms。

    存储优化

    一般来说,较好的优化思路就是找到性能瓶颈,然后把瓶颈优化掉,瓶颈位置找的不对,可能就事倍功半。从我们的一些经验来看,加载流程中会影响性能的,一般有下面几个环节:

    (1)IO性能

    内存存取性能可以达到磁盘IO性能的100倍,但是,硬件性能日新月异,磁盘IO性能也是毫秒级别了,即使慢了100倍,实际也就慢了几毫秒,即磁盘IO性能通常不会成为性能瓶颈。当然,网络IO则另当别论,可能存在较长的等待时间。

    (2)网络性能

    如 果资源请求走了网络,通常时间是消耗在DNS解析和创建连接,当然,资源特别大时传输也有可能比较耗时,吞吐能力比较差的服务器响应时间也可能比较长。 DNS解析可以使用HttpDNS之类的技术去进行预解析。创建连接方面,可以用Http2.0降低影响或者实现一些预连接策略。资源走网络的成本是非常 大的,我们一般都期望资源能走本地缓存。

    (3)线程抛转

    通 常我们认为资源在本地磁盘了,获取资源的耗时主要在磁盘IO,而事实上,磁盘IO的性能其实是比较好的,更大量的时间消耗在资源响应传递回内核 Renderer线程的过程。如果资源在MemoryCache,那么内核各个模块(排版,渲染,JS引擎)是可以直接使用的,几乎是零成本。

    那 么,什么资源可以放进MemoryCache呢?通常,页面资源加载回来都会放进MemoryCache,以供内核各模块高性能使 用,MemoryCache在内核是使用GC管理的,页面关闭时,页面资源没有关联引用,就会从MemoryCache里移除,即可以简单理解为在页面访 问过程中资源才会保存在MemoryCache,页面关闭时就会移除。

    (4)整页缓存

    从 性能的角度来看,整页资源缓存的效果无疑是最好的。标准上,有PageCache,Back-Forward Cache,一些浏览器也有自己的实现方案(比如,UC的WebViewCache),这些技术都能将整个页面的资源缓存在内存,在前进后退等特殊场景, 能直接从内存里读取整个页面,达到极速打开的效果。

    优化实践

    前面介绍了很多理论层面的内容,我们接下来介绍一些实践优化案例。

    (1)预置资源进MemoryCache

    我们先看看预置的过程,在页面的onPageFinished的回调里面去检查是否有资源可以预置,如果有,就通过相关接口把资源设置进内核的MemoryCache。

    208e717c78aabf7e50c167ba0291513a.png

    用户在访问页面时,内核会优先从CustomMemoryCache里面查找,如果找到就直接返回资源响应。CustomMemoryCache里面存储的就是预置进来的资源。

    cc16d4de388e229fa93828c71120aeb7.png

    我 们并不知道用户即将会访问什么页面,如果把大量的资源都预置进内存,而用户却没有使用,那就会造成浪费。另外,资源在内核内存,仅仅是加快了资源的加载速 度,页面的首屏包含非常多非常复杂的流程,某个流程的加速并不一定能带来整体性能的提升,比如,非关键的JS放在内存,可能就会先于一些关键JS被提前执 行,反而让首屏更慢。所以,选择放那些资源进内存也是非常有讲究的,能预置的资源一般是 非常关键的更新频率较低的少量公共基础资源,比如,手淘里面的web based基础JS,手淘小程序的基础JS,等等。

    (2)预加载资源进HttpCache

    预 置资源进内存,对加载性能的提升是最明显的,但成本也是最大的,会占用用户手机宝贵的内存资源。另外一种预置资源的思路是,提前通过内核去预加载一些资 源,资源加载回来之后就直接保存在标准的HttpCache。资源在HttpCache和在客户端缓存(比如,手淘ZCache)的性能差别不大。但如果 资源不能放进ZCache,通过这种方式提前放到HttpCache,也是一种优化思路。

    (3)使用WebViewCache极速切换页面

    H5 页面的加载流程是非常重的一套流程,即使同一个页面多次重复访问,也需要走比较完整的流程,耗时极长,这与用户的期望是不符的,通常用户期望访问过的页面 就能快速展现出来。在一些特定的场景,H5也是可以做到极速展现的,比如,前进后退。其它的场景,比如页内几个TAB切换,是否也可以用上这类缓存呢?也 是可以的,我们在天猫超市首页上就使用此缓存实现了类Native体验的底部导航。

    原理上也是比较简单的,在页面首次访问时,会将排版渲染好的页面放进WebViewCache里,WebViewCache是存储完整页面的一块内存。

    58ff94d65dd7e756678d5a49f3d04ce9.png

    用户再次访问该页面时,会将WebViewCache内存中的完整页面读取出来,直接绘制展现,而无需再进行加载解析排版渲染等流程,从而达到极速打开的效果。

    b89da56da1d0706f73f4b22f7730f5ea.png

    除 了内核提供WebViewCache基础技术之外,前端也需要与内核进行一定的交互,比如,通过JSAPI查询当前页面是否在WebViewCache, 如果在则返回它在WebViewCache列表的位置,然后前端就可以使用JSAPI去跳转到相应位置的页面,内核就把页面从内存读取和展现出来。使用此 类技术,页面一般能在500ms左右完全展现出来,具有非常好的用户体验。

    (4)前端使用LocalStorage缓存HTML文档

    当 前前端渲染非常流行,页面大部分的逻辑都会由前端JS去执行,JS执行完才会生成完整的HTML文档,而JS执行的成本是非常大的,JS执行时间可能占据 首屏时间的50%,有些甚至能达到80%。那么,我们有没有可能将JS执行生成的完整HTML文档缓存起来呢,下次访问时直接使用已缓存的页面,而无需重 复执行JS?这也是可以的,我们在天猫超市和天猫国际一些页面上已经使用此技术。

    原理上也不复杂,首次访问页面时,JS执行完之后会生成完整的HTML文档,我们将HTML文档缓存到LocalStorage里面。

    85d32fbf5529a2c07665d1632ea1045d.png

    在后续的访问中,我们优先从LocalStorage里面读取HTML文档,解析排版渲染页面,而无需JS执行去生成页面,让页面展现速度得到极大的提升。

    fb39fe45ddc30bf46674380c6781cef6.png

    这 种方案的关键在于前端能够实现一套DOM-Diff更新的机制,在从LocalStorage读取HTML页面的同时,前端还会发起请求去更新HTML文 档,在新的HTML文档回来之后,会和旧的文档进行Diff,针对Diff来进行局部更新,这样能保证页面得到及时的更新。

    结束语

    前 面介绍的H5缓存相关理论与实践,期望能让大家对H5缓存有个整体的了解,理解一些优化的思路和背后的原因。一些优化展现了H5的极致能力,比如,从预置 内存里面加载资源,可以在1ms完成一个资源的加载,从WebViewCache里面读取页面,在普通手机500ms就可以展现一个完整页面,这些速度简 直是不可思议的,却真实的存在着!很多时候不是H5能力不行,而是H5没有做定制,如果H5进行定制约束优化,也一样可以带来极致的性能提升。

    喜欢的小伙伴,点个关注吧,每天分享新的内容!

    展开全文
  • Oracle在执行存储过程中,call与exec...Oracle中执行存储过程call和exec有何区别在sqlplus中这两种方法都可以使用:exec pro_name(参数1..); call pro_name(参数1..);区别:1. 但是exec是sqlplus命令,只能在sqlplu...
  • Oracle中执行存储过程call和exec区别

    万次阅读 2016-05-10 17:02:03
    在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制. 2. 存储过程没有参数时,exec可以直接跟...
  • 分享分布式系统设计开发的同时,会结合工程实践,阐述如何将分布式Log存储系统作为构建其它分布式系统(分布式Cache/分布式Key-value/分布式MQ/分布式数据库)的“基础”,以及如何成为数据抽象的关键一环。...
  • 1、使用Oracle数据库过程,常规的执行存储过程(procedure)的方式有两种:一是类似PL/SQL Developer的工具软件上点击界面按钮的方式执行,若有传入参数可以测试窗口的值域填入相应的参数值,再继续调试和...
  • “字节跳动基础架构实践”系列文章是由字节跳动基础架构部门各技术团队及专家倾力打造的技术干货内容,和大家分享团队基础架构发展和演进过程中的实践经验与教训,与各位技术同学一起交流成长。自从 Goog...
  • 概述每个人都有自己优化sql的一些方式,这里主要记录一下我平时sql优化的大概过程,有改进的地方大家帮忙指点下。...其最新执行计划,发现较差的执行步骤:3:TABLE ACCESS FULL (TABLE:RFUSER.DPCA_LJPL_X...
  • oracle sqlplus存储过程控制台输出信息

    千次阅读 2016-08-02 07:29:00
    如果你是使用PL/sql工具,在command 窗口下执行set serveroutput on 然后exec sp;可以看到了或者在sqlplus 中执行上面的代码
  • PLsql中执行存储过程的方法

    万次阅读 2016-07-13 15:27:28
    1、在sqlplus命令行界面使用"EXECUTE"命令(简写做"EXEC")执行 sec@ora10g> exec proc_helloworld Hello World! PL/SQL procedure successfully completed. 此方法对应plsql工具的命令窗口。 如果想要在命令...
  • 在sqlplus中这两种方法都可以使用:exec pro_name(参数1..); call pro_name(参数1..);区别:1. 但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制.2. 存储过程没有参数时,exec可以直接跟过程名...
  • 在sqlplus中这两种方法都可以使用:  exec pro_name(参数1..);  call pro_name(参数1..);  区别:  1. 但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制.  2. 存储过程没有参数时,...
  • shell调用执行存储过程

    千次阅读 2009-04-27 13:50:41
    sqlplus user/password <<! exec proc_name; exit ! Demo procedure name: sp_ems_hasten_count(v_oper_date in varchar2) .sh file : execpro.sh [oracle@localhost tm...
  • PL/SQL中执行存储过程的方法

    千次阅读 2017-12-12 17:25:12
    1、在sqlplus命令行界面使用"EXECUTE"命令(简写做"EXEC")执行 sec@ora10g> exec proc_helloworld Hello World! PL/SQL procedure successfully completed. 此方法对应plsql工具的命令窗口。 如果...
  • 发表人:cedar_1982 | 发表时间: 2004年十二月31日, 02:09//执行函数set serveroutput ondeclareoutstr varchar2(110);beginoutstr := fun_t...
  • 需要注意的是这样的做法只是服务器上编译和生成了这个脚本,并不是执行了这个脚本的内容。 需要注意的是1.要语句的最后加上一个/符号,否则不会执行。2.需要写全脚本的路径。3.可以用@@来代替,这个条件是...
  • 在sqlplus中这两种方法都可以使用:exec pro_name(参数1..); call pro_name(参数1..);区别:1. 但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制.2. 存储过程没有参数时,exec可以直接跟过程名...
  • 有时候会想Shell调用一个存储过程啊等等,做法一般就是把这个存储过程给放在一个sql文件,然后调用sqlplus执行该sql文件。 但是问题是,如果存储过程出错,该怎么返回错误代码呢? 答案就是sql文件...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 135
精华内容 54
关键字:

在sqlplus中执行存储过程