逐行显示文件内容并允许修改的DCL脚本
功能: 从屏幕读取用户指定的文件,逐行显示文件内容,并允许用户修改。修改后的文件保存为同名文件的新版本要点: 1. 循环结构的实现2. IF ... THEN... ENDIF结构3. 用READ, WRITE实现对文件的操作4. READ/END_OF_FILE=END_LOOP INFILE RECORD当读到文件末尾时转到END_LOOP所标记的脚本块中5. $ WRITE SYS$OUTPUT "FILE ''FILENAME' DOES NOT EXIST!"在双引号里调用symbol时,注意symbol前面要有两个单引号 ''FILENAME' [@more@]$!提示用户输入文件名,并判断文件在当前目录下是否存在$ GET_NAME:$ INQUIRE FILENAME "FIL
VMS 常用命令小注(4)
61-end[@more@]$ SET SECURITY/PROTECTION=(W:RW) 95_FORECAST.TXT修改文件95_forecast.txt的权限属性$ DEFINE COMS DISK7:[WALSH.COMMAND_PROC]定义logical name COMS,代替目录DISK7:[WALSH.COMMAND_PROC]$ DEFINE/TABLE=LNM$SYSCLUSTER CUSTOMERS DISK1:[CUSTOMER_VISITS]CUSTOMERS.TXT创建logical name CUSTOMERS,并将其存入指定的表lnm$syscluster_table中$ SHOW LOGICAL/TABLE=*显示所有存储logical name的表的内容$ SHOW LOGICAL/STRUCTURE显示logical name directory tables和logical name tables之间的关系$DEASSIGN COMS删除lo
VMS 常用命令小注(3)
41-60[@more@]$ COPY FEES.DAT,FEES1.DAT FEES.DAT将fees1.dat文件加到fees.dat文件后面$ COPY CHAOS::DISK2:[PUBLIC]*.* *从主机CHAOS的disk2磁盘的public目录下拷贝所有最新版本文件到当前目录下(使用DECnet)$ COPY *.* CHAOS"SMITH SPG96PRT"::DISK2:[STAFF_BACKUP]将当前目录下所有最新版本的文件拷贝到CHAOS主机DISK2磁盘的STAFF_BACKUP目录下。SMITH à CHAOS主机的账户SPG96PRT à 该账户的密码$ RENAME FEES.DAT;4 [SAVETEXT]RECORDS.DAT将文件FEES.DAT从当前目录移到SAVETEXT目录下,并改名为RECORDS.DAT$ TYPE STAF
VMS 常用命令小注(2)
21-40 个命令[@more@]$ DIRECTORY/SIZE/DATE/VERSIONS=1/PROTECTION AVERAGE显示average所有类型的文件的,信息包括最新版本号,创建日期,文件大小(以block为单位)$ set password设置或修改密码$ ctl+TGREEN::MCCARTHY 13:45:02 EVE CPU=00:00:03.33 PF=778 IO=295 MEM=315显示当前进程的统计信息,包括GREEN -- 主机名MCCARTHY – 用户名13:45:02 – 当前时间EVE – 当前进程current process,CPU=00:00:03.33 – CPU使用率PF=778 -- number of page faultsIO=295 -- level of I/O activityMEM=315 -- memory usageCtl+T默认为disable状
VMS 常用命令小注
熟悉下面这几十个命令,至少可以应付VMS的一般操作了[@more@] $mcr authorize mod ORACLE/password=summer/nopwdexp/interactivemcr authorize修改用户设定的组合命令mod à modifypassword=summer à 将口令改为summernopwdexp à系统不提示修改命令 $mcr authorize show oracle显示oracle用户的环境设置 $dir ORA_DISK001:[000000]显示ora_disk001磁盘内容[000000]表示根目录 $set default ORA_DISK001:[000000]将ora_disk001的根目录设置成当前目录 $set def ora_root:[dbs] $ SET PROTECTION=(S:RWED, O:RWED, G:RE, W:RE)/DEFAULTS
用批处理文件执行备份
下面的批处理文件调用exp,生成文件名为stdtyyyy-mm-dd.dmp的备份文件。可以将此文件加入windows的计划任务中,实现定期自动备份。[@more@]F:student>type stdt_exp.bat@ECHO OFFSET TempDir=c:tempSET ArchiveDir=c:archiveCLSECHO.ECHO Extracting current date . . .ECHO.FOR /f "tokens=1 delims= " %%D in ('echo %DATE:/=%') do SET DATEN=%%DECHO Date Extracted (%DATEN%)ECHO.set FILE=stdt%DATEN%.dmpset USERID=stdt/stdtset LOGFILE=stdt%DATEN%.logexp %USERID% file=%FILE% log=%LOGFILE%怎么感觉写批处理文件
REF CURSOR 小结 (4)
用REF CURSOR实现BULK功能1. To speed up INSERT, UPDATE, and DELETE statements, enclose the SQL statement within a PL/SQL FORALL statement instead of a loop construct.2. To speed up SELECT statements, include the BULK COLLECT INTO clause in the SELECT statement instead of using INTO.[@more@]SQL> create table tab2 as select empno ID, ename NAME, sal SALARY from emp where 1=2;Table created-------------------------------------------------------create or replace procedure REF_BULK is type empcurty
REF CURSOR 小结 (3)
使用Weak REF CURSOR例子[@more@]--procedure open_cv---------------------------------------create or replace procedure open_cv(choice IN INT, return_cv OUT SYS_REFCURSOR) is --参数return_cv为weak REF CURSOR,利用SYS_CURSOR来定义begin if choice = 1 then open return_cv for 'select * from emp'; elsif choice = 2 then open return_cv for 'select * from dept'; end if;end open_cv;--procedure retrieve_data------------------------------------create or rep
REF CURSOR 小结 (1)
利用REF CURSOR,可以在程序间传递结果集(一个程序里打开游标变量,在另外的程序里处理数据)。也可以利用REF CURSOR实现BULK SQL,提高SQL性能。[@more@]REF CURSOR分两种,Strong REF CURSOR 和 Weak REF CURSOR。Strong REF CURSOR:指定retrun type,CURSOR变量的类型必须和return type一致。DECLARETYPE strongcurtyp IS REF CURSOR RETURN emp%ROWTYPE;emp_cv strongcurtyp;Weak REF CURSOR:不指定return type,能和任何类型的CURSOR变量匹配。DECLARETYPE weakcurtyp IS REF CURSOR;weak_cv weakcurtyp;any_cv SYS_REFCURSOR; --使
关于权限的一个疑问
用户有dba role后,就会具有dba role所包含的select any table权限,但是这个权限在用户的stored procedure中并不起作用,必须要单独授权。[@more@]以上结论是正确的,可以用下面的小实验验证。1。创建用户aaa并授予connect, resource, dba角色SQL> create user aaa identified by aaa default tablespace users temporary tablespace temp;User createdSQL> grant connect,resource,dba to aaa;Grant succeeded2。用户aaa登陆后创建一个public synonym,然后在一个存储过程中使用这个synonymSQL> connect aaa/aaaConnected to O
在sql*plus中显示长字符
Oracle中,一些varchar2或clob类型的长字符串,经常在sql*plus中无法全部显示。[@more@]比如:SQL> create table aaa(col1 clob);Table created.SQL> insert into aaa values('aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqrrrssstttuuuvvvwwwxxxyyyzzzaaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrssstttuuuvvvwwwxxxyyyzzzaaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrsstttuuuvvvwwwxxxyyyzzzaaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrstttuuuvvvwwwxxxyyyzzzaaabbbcccdddeeefffggghhhii
'library cache lock'等待事件的处理方法
'library cache lock'等待事件,可以用如下办法找到hold lock的那个session。此处只列出了一种方法。[@more@]1.SQL> desc v$lock;Name Type Nullable Default Comments ------- ----------- -------- ------- -------- ADDR RAW(4) Y KADDR RAW(4) Y SID NUMBER Y TYPE VARCHAR2(2) Y ID1 NUMBER Y ID2 NUMBER Y LMODE
关于rownum的一点体会
ROWNUM是一个“伪列“,数据库中并不保存ROWNUM列的值。当某一行记录读入内存时,相应的ROWNUM才被动态地赋值,用以纪录该条记录位于结果集中的第几行。对于同一条记录,每次返回时ROWNUM值都可能不同。[@more@]可以用下面的小测试来验证:SQL> connect scott/tigerConnected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 Connected as scottSQL> select rownum,deptno,dname from dept;ROWNUM DEPTNO DNAME---------- ------ --------------1 10 ACCOUNTING2 20 RESEARCH3 30 SALES4 40 OPERATIONS在上述结果中,
借用土地
发现一处荒芜的土地,弃之不忍,借用一下:)谓之充分利用。谁叫现在国土紧张,节约要从我做起,从这里做起。 喜欢绿色,但是绿色日渐稀少,说来说去还是土地的问题,有限的土地都被用来开发房地产了,绿色还会多吗?于是,学会了幻想,在心中保留一方绿色的土地,有花有草,有飞来飞去的蝴蝶小鸟,这是谁也夺不走的![@more@]
一次ora-12535/ora-12170问题解决
在windows XP上装了oracle10g并建了库,可是局域网内的其他及其却连不上该数据库,出现如下错误:[@more@]C:Documents and Settingszhonghua.yu>sqlplus scott/tiger@boSQL*Plus: Release 10.1.0.2.0 - Production on Fri Aug 5 14:34:13 2005Copyright (c) 1982, 2004, Oracle. All rights reserved.ERROR:ORA-12170: TNS:Connect timeout occurredC:Documents and Settingszhonghua.yu>tnsping boTNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 05-AUG-2005 14:35:03Copyright (c) 1997, 2003, Oracl
修改数据库的日期显示格式
数据库移植后,程序里的所有类似insert into table (aaa_date) values('20050101')的语句都执行失败,原因是日期格式发生了变化。[@more@]1。SQL> alter session set nls_date_format='yyyymmdd';Session alteredSQL> alter system set nls_date_format='yyyymmdd';alter system set nls_date_format='yyyymmdd'ORA-02096: specified initialization parameter is not modifiable with this option2。 修改.profile文件,增加参数export nls_date_format='yyyymmdd',执行该文件并重新启动数据库实例,失败,日期仍为原来格式3。spf
使用脚本utlpwdmg.sql启用密码管理
使用脚本utlpwdmg.sql可以方便地启动数据库的密码管理。该脚本位于$ORACLE_HOME/rdbms/admin目录下。[@more@]启动密码管理以前:SQL> select * from dba_profiles where resource_type='PASSWORD';PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT------------------------------ -------------------------------- ------------- ----------------------------------------DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITEDDEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD
使用sql*plus时的一个安全小问题
在unix环境下,当你使用sql*plus访问数据库时,说不定不知不觉间就把数据库的用户名和口令告诉给了其他操作系统用户。不妨做以下试验。[@more@]telnet到数据库服务器,用如下命令启动sql*plus:/export/home/deverdb>sqlplus system/sysmg3r4@suppfrwi SQL*Plus: Release 8.1.7.0.0 - Production on Wed Jun 22 13:10:48 2005(c) Copyright 2000 Oracle Corporation. All rights reserved.Connecte a :Oracle8i Enterprise Edition Release 8.1.7.4.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.4.0 - Production
JSP(12) - 商品处理模块
该模块基本上为 进货模块(http://blog.itpub.net/post/334/32287)的反过程。[@more@]dispose_bef.jsp:<%@ page contentType="text/html; charset=GBK" %><%@ page language="java" import="java.util.*" %><%@ page import="java.sql.*" %><%@ page import="java.text.SimpleDateFormat" %><%@ page import="java.text.DateFormat" %><%response.setHeader("Cache-Control","no-store"); //HTTP 1.1 response.setHead
JSP(11) - 退货模块
该模块处理退货信息,基本上是销售模块 (http://blog.itpub.net/post/334/32291) 的反过程。[@more@]return_back_bef.jsp:<%@ page contentType="text/html; charset=GBK" %><%@ page language="java" import="java.util.*" %><%@ page import="java.sql.*" %><%@ page import="java.text.SimpleDateFormat" %><%@ page import="java.text.DateFormat" %><%response.setHeader("Cache-Control","no-store"); //HTTP 1