重启服务器oracle服务(服务器重启后oracle监听消散)「服务器重启后oracle监听消失」

  

  1、Oracle默认账户、暗码syschange_on_installsystemmangerscotttiger

  2、Oracle服务阐明OracleServiceORCL:数据库的服务,假如创建两个数据库就会有两个服务,ORCL是数据库名。OracleOraDb10g_home1TNSListener:监听服务,jdbc和plsql长途毗连服务,端标语为:1521OracleOraDb10g_home1iSQL*Plus:Web管理服务,比方:https://127.0.0.1:5560/isqlplus,端标语为:5560留意事项:假如OracleOraDb10g_home1TNSListener启动堕落,找到NetConfigurationAssistant重新设置监听即可。默认启动:OracleServiceORCL和OracleOraDb10g_home1TNSListener就充足了。

  3、加锁、解锁用户(管理员"sys""system"下令)加锁:alteruser用户accountlock;解锁:alteruser用户accountunlock;4、登录下令、切换用户下令1.connect用户/暗码2.conn用户/暗码========不想被别人看到明文暗码环境下========3.SQLconn请输入用户名:scott输入口令:*****

  4.SQLconn请输入用户名:scott输入口令:*****

  5、查询当前登任命户showuser;

  6、查询、设置“行宽”和“表现条数”查询行宽:showlinesize;//默认80设置行宽:setlinesize120;查询表现条数:showpagesize;//默认14设置表现条数:setpagesize100;1.字符串指定列宽:column列名formata号;比方:columnENAMEformata10;2.数字指定列宽:column列名format9999;阐明:一个9代表一个数字。12的缩写格式:col列名for指令;=====================================================================比方我添加的内容如下:--指定行宽setlinesize150--指定每页表现条数setpagesize100--指定oracle默认表现时间altersessionsetnls_date_format='yyyy-MM-dd';=====================================================================永世生存设置设置:找到oracle的安装目次,比方:D:\Software\oracle\product\10.2.0\db_1\sqlplus\admin\glogin.sql设置写到最下面即可。//测试是否是jdbc语句

  1、jdbc语句必须必要分号,否则会换行让你继承输入。

  2、利用/来测试,假如是jdbc输入完毕,再输入/假如乐成实行上句的话,证明是jdbc语句。//查询当前用户全部表select*fromtab;//查察表布局desc表名;//打开查询耗时settimingon;//关闭查询耗时settimingoff;//sqlplus(黑窗口)清屏,sqlplusw中无效Windows:hostclsLinux中:hostclearplsql中:clear//多行输错,修改下令edit大概ed,修改完输入/,文件中不要有问号//处理惩罚null值函数(vnl函数)nvl(字段,值)比方:selectnvl(comm,0)fromemp;nvl2(字段,不为空返回值,为空返回值)比方:selectnvl2(NULL,2,3)//返回3//别名巨细写利用别名,假如不加""默认大写。加了""就会按""里表现。asxx;--转为:XXas"xx";--便是:xx留意:当别名含有"空格"、"字符串"时肯定要加""号;//取消重复行关键字:(distinct)selectdistinct重复字段from表名;留意:假如查询多列,distinct作用于多列,多列有重复才算重复。//拼接字符串--查询格式:ENAME的工资是:SALselectename||'的工资是:'||salfromemp;//拼接字符串((oncat)函数selectconcat('我叫','小童鞋_成er')fromdual;拼接多个:selectconcat(concat('我叫','小童鞋_成er'),'啊!')fromdual;//oracle的虚表,oracle查询必须指定form关键字select'Hello'||'World'fromdual;dual是一个假造表:比如得到当前时间:selectsysdatefromdual;盘算数值:select3+2fromdual;//关于(like)查询特别字符用法:IDNAME------------1dd%2%xx1、我们举行查询,select*from表名where字段like'%%';那么就是查询全部了。//界说转移字符:select*from表名where字段like'\%%'escape'\';--把\%转义,escpae指定哪个是转义符。比如:select*from表名where字段like'x%%'escape'x';//把x转义2、查询第三个字母为I的:select*from表名where字段like'__I';//查询~到~范围(between)比如查询工资1500~6000之间的。select*from表名where(工资字段between1500and6000);//查询id为1234的用户(in查询)第一种写法:select*from表名whereID字段=1orID字段=2orID字段=3orID字段=4;批处理惩罚写法:select*from表名whereID字段in(1,2,3,4);留意:select*from表名where字段in(xx,xx,null);//没有影响select*from表名where字段notin(xx,xx,null);//假如notin含有null,则不返回任何结果。//字符串转为日期(to_date)to_date('2014-10-02','yyyy-MM-dd');//年-月-日to_date('2014-10-0212:00:02','yyyy-MM-ddHH24:mi:ss');//年-月-日-时-分-秒//日期转为指定格式(to_char)to_char(日期字段,'yyyy-MM-dd');//年-月-日to_char(日期字段,'yyyy-MM-ddHH24:mi:ss');//年-月-日-时-分-秒//查询Oracle指定的格式(v$nls_parameters)select*fromv$nls_parameters;//只能查察,不能修改//修改当前会话的格式默认时间格式:DD-MON-YYaltersessionsetnls_date_format='yyyy-MM-dd';//只对当前会话有效//排序(orderby)升序:select*from表名orderby要排序字段asc;//asc默认也可不写,从高到底降序:select*from表名orderby要排序字段desc;//降序,从低到高NULL值排序始终在下面:select*from表名orderby含有NULL字段descnullslast;NULL值排序始终在上面:select*from表名orderby含有NULL字段descnullsfirst;select*from表名orderbynvl(含有NULL字段,-1)asc;根据字段位置排序:selectid,namefromxxorderby2desc;//2是name的位置//分组分组函数:max(字段);//最大值min(字段);//最小值avg(字段);//均匀值count(字段);//总条数sum(字段);//总和分组方法(groupby):selectmax(sal),deptnofromempgroupbydeptno;//查询每个部分工资最高的人,假如groupby中没有这个字段,就不能表现这个字段对两个字段举行排序:selectmax(sal),deptno,jobfromempgroupbydeptno,job;//根据“部分(deptno)”和“工作(job)”举行排序。对分组条件举行筛选(groupby字段having条件),同时举行排序(orderby):selectdeptno,count(*)fromempgroupbydeptnohavingcount(*)4orderbydeptnodesc;留意:groupby和having都不可以利用“别名”;orderby可以利用“别名”;某些环境下,优先利用where,而不利用having。例子,查询“部分”,“部分人数”,取消10号部分信息:服从高:selectdeptno,count(*)fromempwheredeptno10groupbydeptno;服从低:selectdeptno,count(*)fromempgroupbydeptnohavingdeptno10;//字符函数LOWER(String)//将字段转换为“小写”;selectLOWER('ABC')fromdual;--结果:abcUPPER(String)//将字段转换为“大写”;selectLOWER('abc')fromdual;--结果:ABCINITCAP(String)//每个单词首字母转为“大写”;\selectINITCAP('helloword.day')fromdual;--结果:HelloWord.Day--首写字母为大写selectinitcap(ename)fromemp;//拼接字符串CONCAT('a','b');//跟||一样//截取函数:SUBSTR(String,index,index)//要截取的字符串,从第几个开始,此位置今后截取几个(从1下标开始)selectSUBSTR('abc',1,2)fromdual;--结果:abUSBSTR(String,index)//假如不指定,就从1位置,截取到字符串竣事selectSUBSTR('abc',2)fromdual;--结果:bc//字段长度LENGTH(String)//返回字段长度selectLENGTH('abc')fromdual;--结果:3//查找字符串位置INSTR(String,String)//返回字符串位置下标selectINSTR('abcdefg','c')fromdual;--结果:3//补齐函数LPAD(String,indexOf,char)和RPAD(String,indexOf,char)LPAD:selectlpad('abc',5,'*')fromdual;--结果:**abcRPAD:selectrpad('abc',5,'*')fromdual;--结果:abc**//可以匿名,比如:selectenameas姓名,substr(ename,1,1)||replace(rpad('',length(ename)-1,'*'),'','')||substr(ename,length(ename))as匿名fromempwhereename='SCOTT';姓名匿名---------------SCOTTS***T//去掉前后空格TRIM(''fromString)TRIM(String)//去掉前后空格TRIM('a'from'abc')//去掉a,留意:只能为前、后更换//更换函数replace(String,String,String)select*fromreplace('abc','a','1')fromdual;--结果:1bc//数学函数:MOD(number,nunber)//求余数ROUND(number)//四舍五入ROUND(number,number);//截取小数点第几位,比如:12.91结果:12没有小数;假如是-1,比如:12.22,-1结果:10TRUNC(number)跟ROUND()函数一样,只是不四舍五入TRUNC(number,number)//操纵时间sysdate-1:减一天sysdate-1/24:减一天1小时sysdate-1/24/24:减一天1小时1分钟last_day(date):获取当月末了一天比如:selectto_char(last_day(to_date('11','mm')),'yyyy-mm-dd')fromdual;//返回:2014-11-30add_months(date,number):当前日期减一天或加一天比如:selectto_char(add_months(last_day(sysdate),-1)+1,'yyyy-mm-dd')fromdual;//返回当月的1号months_between:盘算两个时间相差“月份”比如;selectmonths_between(sysdate,to_date('2014-12-19','yyyy-mm-dd'))fromdual;//返回-1round(date,'xx'):///对日期四舍五入,比如:round(to_date('2014-10-1022:00:00','yyyy-mm-ddhh24:mi:ss'),'dd')返回:2014-10-1100:00:00trunct(date,'xx'):///对日期举行截断,比如:trunc(to_date('2014-10-1022:00:00','yyyy-mm-ddhh24:mi:ss'),'month'))返回:2014-10-0100:00:00上面两个函数指定xx:yyyymonthddhh24miss//根据“星期几”获取下个“星期几”的日期next_day(sysdate,'星期三');//to_char(number,'xx')转换数字to_char(sal,'L9999'):转换为本地数字格式,9999表现表现位数$999,9999.00:0000:0补齐//字符串转数字to_number('3');//判定,雷同switchcasecaseCASE字段WHENxx--假如是xx值THENxx--更换成xx值ELSE--否则xx--返回xx值END------------------------------------------------CASE字段WHENxx--假如是xx值THENxx--更换成xx值WHENxx--假如是xx值THENxx--更换成xx值ELSE--否则xx--返回xx值END//判读,雷同ifelsecasewhenxx=xxthenYes--是elseNo--不是end------------------------------------------------//判定(oracle独有)decode函数selectdecode(ename,'是SCOTT','Yes','不是SCOTT','No','都不是')fromempwhereename=upper('scott');//聚集操纵union:取并集,比如:A聚集有13,B聚集有14;并集结果:134select*fromempwhereenamein('SCOTT','CLARK')unionselect*fromempwhereenamein('SMITH','ALLEN','SCOTT');unionall:取合集,比如:A聚集有13,B聚集有14;合集结果:1134select*fromempwhereenamein('SCOTT','CLARK')unionallselect*fromempwhereenamein('SMITH','ALLEN','SCOTT');intersect:取交集,比如:A聚集有13,B聚集有14;交集结果:1select*fromempwhereenamein('SCOTT','CLARK')intersectselect*fromempwhereenamein('SMITH','ALLEN','SCOTT');minus:取差集,比如:A聚集有13,B聚集有14;差集结果:3比方:selectenamefromempwhereenamein('SCOTT','ALLEN')minusselectenamefromempwhereenamein('SCOTT','ALLEN','SMITH');结果:“无结果”比方:selectenamefromempwhereenamein('SCOTT','ALLEN','SMITH')minusselectenamefromempwhereenamein('SCOTT','ALLEN');结果:SMITH总结:以“第一个”聚集为中心,取两结果的相差/*留意事项:1、假如是两个查询计划分组;2、orderby必须在末了一个聚集,groupby无穷制3、聚集数量必须一样,范例必须一样,别的字段名字差别可以。*///左毗连、右毗连--左毗连:/*Oracle专用:*/selectd.deptnoas"部分编号",d.dnameas"部分名称",count(e.deptno)as"总人数"fromempe,deptdwhered.deptno=e.deptno(+)groupbyd.deptno,d.dnameorderbycount(e.deptno);/*通用:*/SELECTd.deptnoAS"部分编号",d.dnameAS"部分名称",COUNT(e.deptno)AS"部分总人数"FROMempeLEFTJOINdeptdONe.deptno=d.deptnoGROUPBYd.deptno,d.dnameORDERBY部分总人数--右毗连:/*Oracle专用:*/selectd.deptnoas"部分编号",d.dnameas"部分名称",count(e.deptno)as"总人数"fromempe,deptdwhered.deptno=e.deptno(+)groupbyd.deptno,d.dnameorderbycount(e.deptno);/*通用:*/SELECTd.deptnoAS"部分编号",d.dnameAS"部分名称",COUNT(e.deptno)AS"部分总人数"FROMempeRIGHTJOINdeptdONe.deptno=d.deptnoGROUPBYd.deptno,d.dnameORDERBY部分总人数//单表“自毗连”/*方法1:*/selecta.ename,b.enamefromempa,empbwherea.mgr=b.empno;/*内链接通用:*/SELECTa.ename,b.enameFROMempaINNERJOINempbONa.mgr=b.empno;//inner可以省略不写//满外毗连/*mysql不能用:*/SELECTe.ename,e.deptno,d.dname,d.deptnoFROMempeFULLJOINdeptdONe.deptno=d.deptno;//返回笛卡尔集SELECTe.ename,e.deptno,d.dname,d.deptnoFROMempeCROSSJOINdeptd;==============================================Oracle分页==============================================================//第一页select*from(selectrownumrn,a.*from(select*fromemp)awhererownum=10)wherern=1;//第二页select*from(selectrownumrn,a.*from(select*fromemp)awhererownum=20)wherern=11;==============================================DML操纵==============================================================//临时表创建全部字段:createtable新表名asselect*from表名;部分字段:createtable新表名asselect字段1,字段2,字段3from表名;//订定列插入数据insertinto表名(字段1,字段2)select字段1,字段2from表名;//删除表布局,不颠末采取站droptable表名purge;//关闭Oracle反馈提示setfeedbackoff;//delete和truncate删除的区别:deletetable表名:可规复,删除速率做了优化,快。truncatetable表名:不可规复,删除速率慢。================================生存屏幕到文本=================================spoolD:\1.txt;//生存路径select*fromemp;spooloff;//关闭生存================================生存点=========================================savepoint生存点名称;//创建生存点rollbackto生存点名称;//回滚指定名称的生存点rollback;//回滚全部================================数据闪回=======================================//启用表闪回altertable表名enablerowmovement;//闪回到指定时间flashbacktable表名totimestampto_timestamp('2014-12-0315:04:40','yyyy-mm-ddHH24:mi:ss');/*留意:delete可以规复,truncate不可规复。*/====================|============数据范例===================|==================|数据范例|形貌||----------------|----------------------||varchar2(size)|可变长字符数据。||----------------|----------------------||char(size)|定长字符数据。||----------------|----------------------||number(si~[.xx])|可变长数值数据。||----------------|----------------------||date|日期型数据。||----------------|----------------------||long|可变长字符数据,最大2G||----------------|----------------------||clob|字符数据,最大4G。||----------------|----------------------||blob|二进制数据,最大4G。||----------------|----------------------||bfile|存储外置文件二进制,4G|-----------------------------------------================================数据库创建、束缚=================================createtablestu(idnumberconstraintPK_STU_ID//PK_STU_ID是束缚的名字primarykey,//设置主键namevarchar2(20)check(length(name)2),//长度要大于2个字符genderchar(2)check(genderin('男','女')),//值只能为“男”或“女”addressvarchar2(30)notnull,//不能为NULLbirthadydatedefaultsysdate//默认当前时间);--束缚:1、主键束缚:constraintPK_STU_IDprimarykey//唯一,不能为NULL,不可重复2、不能为NULL束缚:constraintNOTNULL_STU_NAMEnotnull//不能为NULL3、只能是唯一束缚:constraintUNIQUE_STU_XXunique//唯一束缚,比方身份证一对一4、数字束缚:constraintCHECK_STU_AGEcheck(age0andage=100)//年龄值必须是大于0,小于1005、规定束缚:constraintCHECK_STU_SEXcheck(sexin('男','女'))//必须是“男”或“女”6、外键束缚:constraintFK_STU_DEPTNOreferences外键表(外键表字段)//外键束缚//查察束缚字典select*fromuser_constraints;//查询指定表束缚select*fromuser_constraintswheretable_name='表名';===========================表字段操纵=============================//增长列altertable表名add(列名xx);//修改列altertable表名modify(agenumbercheck(age2));//修改列名altertable表名renamecolumn旧列名to新列名;//删除列altertable表名dropcolumn列名;//给表修改名字rename旧表名to新表名;//给列字段添加备注commentoncolumn表名.列名is'这是备注信息';/*mysql*/altertableempmodify表名列范例comment'这是备注信息';//给表增长解释commentontable表名is'这是给表增长解释';===========================视图=============================//赋予创建视图的权限grantcreateviewto用户名;//查询VIEWselect*fromtabwheretabtype='VIEW';/***视图的作用**/1、屏蔽掉DML(增、删、改)操纵,利用别名。2、视图不可以进步查询性能。3、简化复杂的查询。4、限定数据的访问。//创建视图语法,默认假如不指定就可以对视图举行DML操纵的createview视图名称as查询sql;//创建只读视图createview视图名称as查询sqlwithreadonly;=========================================================================================留意:mysql、sqlserver都不支持withreadonly,利用下列可以到达结果createviewmy_viewasselectempno,ename,deptnofromempwheredeptno=10unionselect0,'0',0fromempwhere1=0;=========================================================================================//更换现有视图createorreplaceview旧视图名称as....;//只答应选择条件插入视图createview视图名称asselectempno,ename,sal,deptnofromempwheredeptno=10withcheckoption--只能插入deptno=10的;/*wheredeptnoin(10,20)withcheckoption--只能插入10和20的数据*/===========================序列=============================//创建一个序列createsequence序列名;//修改一个完备序列altersequencemyxlincrementby1//每次递增数(可不写)minvalue1//最小值为1(可不写)startwith2//值从哪个数开始(可不写)maxvalue10//最大值(可不写)//nomaxvalue没有最大值nocache//不利用缓存,(可不写,默认巨细20)nocycle;//不循环(可不写),循环是cycle//查询当前序列值select序列名.currvalfromdual;//增长一个序列值select序列名.nextvalfromdual;留意:假如初次创建序列没有调用,查询当前序列值会报:ORA-08002:序列MYXL.CURRVAL尚未在此会话中界说//删除序列dropsequence序列名;//查询当前用户有哪些序列select*fromuser_sequences;===========================索引=============================//创建索引createindex序列名on表名(字段名);//查察当前用户有哪些序列select*fromuser_indexes;//删除序列dropindex序列名;/*LIKE查询不会用到索引*/===========================同义词=============================/*从字面上明白就是别名的意思,和视图的功能雷同。就是一种映射关系。*///创建同义词createsynonym同义词名for表名;//删除同义词dropsynonym同义词名;//查察当前用户有哪些同义词select*fromuser_synonyms;/*知识扩展:数据库对象表、视图、序列、过程、函数、程序包,乃至别的同义词都可以创建同义词。*/============================存储程序(控制台)=====================================//表现存储过程脚本输出setserveroutputon;------------------------------------------------------------------------------//存储过程实例declare--变量//界说一个变量变量名number(3);//界说一个变量,并赋默认值变量名varchar2(20):=NULL;//界说一个,利用“表.列”范例变量名表名.列名%type;//界说一个容器,相称于List,利用表全部字段变量名表名%rowtype;begin--sql语句//赋值一个变量selectenameinto变量名fromempwhereempno=7839;//赋值两个或多个变量selectename,salinto变量名,变量名fromempwhereempno=7839;//赋值容器,表全部字段select*into变量名fromempwhereempno=7839;//输出语句dbms_output.put_line(变量名||'值为:'||变量名);end;------------------------------------------------------------------------------//友爱提示输入窗口(下令)accept提示输入的名字prompt'请输入员工编码:';//就是empnoselectenameinto变量名fromempwhereempno=empno;//判定============================================================--方式一----/*if条件then语句;endif;*/----方式二----/*if条件then语句;else语句;endif;*/----方式三----/*if条件then语句;elsifthen语句;else语句;endif;*///判定示例setserveroutputon;//表现存储过程脚本输出acceptvsexprompt'请输入您的性别:';//友爱提示输入窗口(下令)declarevsexchar(2);//界说变量,存储性别vstrvarchar2(20);//界说变量,打印字符串beginvsex:='vsex';//利用输入窗口下令赋值ifvsex='男'thenvstr:='老师,欢迎您!';//假如是男就把vstr字符串赋值为:老师,欢迎您!elsifvsex='女'thenvstr:='密斯,欢迎您!';//...大概elsevstr:='对不起,请登录你的性别!';//...否则endif;//关闭判定dbms_output.put_line(vstr);//打印内容end;//循环============================================================/*for循环*/setserveroutputon;declarebeginforiin1..5loopdbms_output.put_line(i);endloop;end;/*loop循环*/setserveroutputon;declarevnumnumber(2):=1;beginloop//界说loopexitwhenvnum10;//当满意这个添加退出循环dbms_output.put_line(vnum);vnum:=vnum+1;endloop;//竣事loopend;/*while循环*/setserveroutputon;declarevnumnumber(2):=1;beginwhilevnum=10//此处不要分号loopdbms_output.put_line(vnum);vnum:=vnum+1;endloop;end;============================光标(游标)=====================================//小例子setserveroutputon;declare--1、界说光标(全部员工的聚集)cursorc_empisselectename,jobfromemp;--7、界说变量,存放ename和jobvenameemp.ename%type;vjobemp.job%type;begin--2、打开光标openc_emp;--4、循环聚集(光标)loop--6、获取数据fetchc_empintovename,vjob;--8、判定聚集循环(光标)完退出循环exitwhenc_emp%notfound;//末了输出//dbms_output.put_line(vename||'的工作是:'||vjob);/*--修改语法ifvename='SCOTT'thenupdateempsetename='修改后的名字'whereename=vename;commit;endif;*/--5、关闭循环endloop;--3、关闭光标closec_emp;end;非常范例:ZERO_DIVIDE:除数为0非常。NO_DATA_FOUND:未找到数据非常。//预界说除数为0非常setserveroutputon;declarevnumnumber(1):=2;beginvnum:=vnum/0;raiseZERO_DIVIDE;--oracle预界说非常:除数为0非常dbms_output.put_line('发生非常不走这里!');exception--发生非常处理惩罚whenZERO_DIVIDEthendbms_output.put_line('自界说除0非常!');end;/*自界说非常*/setserveroutputon;declarevnumnumber(1):=1;my_exceptionexception;beginifvnumisnullthendbms_output.put_line('空啦!');elsifvnumisnotnull--thendbms_output.put_line('不为空啦!');thenraisemy_exception;--抛出非常endif;exceptionwhenmy_exceptionthendbms_output.put_line('发生非常啦,兄弟!');end;//返回其他非常exceptionwhenothersthenxxxx;============================存储过程=====================================//创建存储过程过程createprocedure存储过程名字as//变量vnumnumber:=3;begindbms_output.put_line(vnum);end;//修改为createorreplaceprocedure存储过程名字//带参数的存储过程留意:假如传入的是varchar2范例,如许:venamevarchar2不能varchar2(10)createorreplace--员工序号,涨多少工资procedureaddSal(vempnoinnumber,vmoneyinnumber)asvenameemp.ename%type;vsalemp.sal%type;beginupdatestusetsal=sal+vmoneywhereempno=vempno;commit;selectename,salintovename,vsalfromstuwhereempno=vempno;dbms_output.put_line('姓名:'||vename||'涨了'||vmoney||'工资!');dbms_output.put_line('月工资为:'||vsal);end;/*实行方式一、setserveroutputon;execute存储过程名字();*//*实行方式二、setserveroutputon;begin存储过程名字();end;/*///查察用户存储过程select*fromuser_procedures;//删除存储过程dropprocedure存储过程名字;============================存储函数(带有返回值)=====================================//创建存储函数createorreplacefunctionMy_Function(vempnonumber)returnvarchar2//存储函数返回值范例asvenamestu.ENAME%type;beginselectenameintovenamefromstuwhereempno=vempno;returnvename;//返回end;/*实行存储函数*/selectMy_Function(参数)fromdual;//也可用于插入字段//查察用户存储函数select*fromuser_procedures;//删除存储函数dropfunction存储函数名称;//结论:什么时间用存储过程、什么时间用存储函数?答:一样平常返回值有一个,用“存储函数”;多个就用“存储过程”!//存储过程跟存储函数,都可以利用out输出变量createorreplace--out输出变量:会天生解释输入,取消掉解释,测试输出functionMy_Function(vempnonumber,vsaloutnumber,vcommoutvarchar2)returnvarchar2as--输出不了,没有指定outvenamestu.ENAME%type;beginselectename,sal,commintovename,vsal,vcommfromstuwhereempno=vempno;--只能手动打印dbms_output.put_line(vename);returnNULL;end;//存储过程利用out参数createorreplaceprocedureMy_Procedure(nameinvarchar2,venameoutvarchar2)asvsalstu.sal%type;beginselectename,salintovename,vsalfromstuwhereename=name;end;============================Oracle采取站(ORACLE10G之后特性)平凡用户,管理员没有采取站(慎重删除)=====================================//查察采取站select*fromuser_recyclebin;//从采取站中撤回删除的表flashbacktable表名tobeforedrop;//表名是ORIGINAL_NAME字段//从采取站撤回删除表时重定名flashbacktable表名tobeforedroprenameto新表名;//根据采取站名字闪回表flashbacktable"BIN$XX笔墨"tobeforedrop;//清空采取站指定表purgetable采取站表名;//也就是ORIGINAL_NAME//清空采取站purgerecyclebin;==========================(forupdate和forupdatewait)区别============================/***forupdate操纵没有提交时,如有另一线程操纵,会举行等待...*forupdatenowait操纵没有提交时,另一线程操纵时,会弹出:ORA-00054:资源正忙,但指定以NOWAIT方式获取资源**/==========================JDBC调用“存储过程”和“存储函数”============================//JDBC调用存储函数createorreplaceprocedureMy_Procedure(p_empnoinnumber,r_enameoutvarchar2,r_saloutnumber)asbeginselectename,salintor_ename,r_salfromempwhereempno=p_empno;end;-----------------------------------------------------------------------------------------------------------------------------Class.forName("oracle.jdbc.OracleDriver");Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");//第一个问号是in参数,后两个是outCallableStatementcall=conn.prepareCall("{callMy_Procedure(?,?,?)}");//赋值?为7839call.setObject(1,7839);//指定返回值范例call.registerOutParameter(2,OracleTypes.VARCHAR);//指定返回值范例call.registerOutParameter(3,OracleTypes.NUMBER);//实行查询call.executeQuery();//打印返回参数,从?号开始索引System.out.println(call.getString(2));//打印返回参数,从?号开始索引System.out.println(call.getString(3));//关闭call.close();conn.close();//JDBC调用存储函数createorreplacefunctionMy_Function(p_empnoinnumber)returnvarchar2asv_enameemp.ename%type;beginselectenameintov_enamefromempwhereempno=p_empno;returnv_ename;end;-----------------------------------------------------------------------------------------------------------------------------Class.forName("oracle.jdbc.OracleDriver");Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");//第一个问号是返回值,(?)才是参数CallableStatementcall=conn.prepareCall("{?=callMy_Function(?)}");//赋值第二个?为7839call.setObject(2,7839);//指定返回值范例?=是返回值call.registerOutParameter(1,OracleTypes.VARCHAR);//实行查询call.executeQuery();//打印返回参数,从?号开始索引System.out.println(call.getString(1));//关闭call.close();conn.close();/*留意:function只能有一个返回值,假如有多个,用存储过程*/==========================数据字典============================//数据字典总表select*fromdictionary;/*数据字典表前缀阐明*/前缀阐明user用户本身的。all用户可以访问到的。dba管理员视图。v$性能大概参数设置相干的数据。//查询当前用户对象(表、视图、索引、序列、存储等)select*fromuser_objects;//查询全部用户对象(......)select*fromall_objects;//表与列的信息desc[ribe]user_tables;//列的信息descuser_tab_columns;//当前用户表上的束缚select*fromuser_constraints;//当前用户创建的束缚select*fromuser_cons_columns;//当前用户视图信息descuser_views;//查察当前用户权限select*fromsession_privs;//查察数据库中全部的体系权限信息(必要dba权限)select*fromdba_sys_privs;//查察数据库全部的对象权限信息(必要dba权限)select*fromdba_tab_privs;==========================触发器============================/*触发器是一个与表关联的、存储pl/sql程序insert、update、delete分类:语句级:在指定的操纵语句操纵之前或之后实行一次,不管这条语句影响了多少行。行级触发器(foreachrow):触发语句作用的每一条记录都被触发,在行级触发器中利用old和new伪记录变量,辨认值的状态。触发器作用:1、数据确认。2、实行复杂的安全查抄。3、做审计、跟踪表上所做的数据操纵等。4、数据的备份和同步。界说错误规则:在触发器中制止SQL继承实行的方法:抛一个非常:raise_application_error(-20001,'非常内容');非常代码应在-20000~-20999之间(包罗,否则提示:“错误号参数超出范围”)*///语法create[orreplace]trigger触发器名//之前,之后{before|after}//指定操纵{delete|insert|update[of列名]}//指定表on表名//加上代表行级触发器[foreachrow[when(条件)]]//plsql代码块declare--变量as--代码end;//创建一个触发器,不是8点到18点工作日,不能插入数据createorreplacetriggerMy_Triggerbefore--指定插入数据之前insert--指定操纵触发器DMLonstu--表名declare--变量beginifnot(to_number(to_char(sysdate,'hh24'))between8and18)--错误代码必须在-20000~-20999之间(包罗,否则提示:“错误号参数超出范围”)thenraise_application_error(-20000,'如今黑白工作时间,不能插入数据!');endif;end;//创建一个行级触发器,涨工资不能越涨越少createorreplacetriggerMy_Trigger2after--插入之后updateonstuforeachrow--行触发器declare--变量begin--:new新值:old旧值if:new.sal:old.salthenraise_application_error(-20000,'工资不能越涨越少呀!');endif;end;SQL:updatestusetsal=sal-1whereempno=7839//查询触发器select*fromuser_triggers;//删除触发器droptrigger触发器名;/*主键主动增长--触发器*/--创建触发器createsequenceMy_Sequence;createorreplacetriggerMy_Sequencebeforeinsertonstuforeachrowdeclare--变量beginselectMy_Sequence.nextValinto:new.empnofromdual;end;==========================Oracle备份============================//选择表备份,天生日记/*file:数据库备份文件log:控制台导出内容tables:指定表,多个表,隔开*/expscott/tiger@127.0.0.1:1521/orclfile=D:\xx.dmplog=D:\xx.logtables=emp,dept;//导出全部expscott/tiger@127.0.0.1:1521/orclfile=D:\xx.dmplog=D:\xx.log;//导入impscott/tiger@127.0.0.1:1521/orclfile=D:\xx.dmplog=D:\imp.log;==========================用户管理============================//创建一个用户(dba权限)

重启服务器oracle服务(服务器重启后oracle监听消失) 重启服务器oracle服务(服务器重启后oracle监听消散
)「服务器重启后oracle监听消失」 行业资讯

  createuser用户名identifiedby暗码(必须字母开头);

  //赋予createsession权限grantCREATESESSIONto用户;

  //用户解锁与锁定alteruserxiaomingaccountunlock;

重启服务器oracle服务(服务器重启后oracle监听消失) 重启服务器oracle服务(服务器重启后oracle监听消散
)「服务器重启后oracle监听消失」 行业资讯

  --解锁alteruserxiaomingaccountlock;--锁定//给用户修改暗码alteruser用户名identifiedby新暗码;

  //删除用户dropuser用户名;dropuser用户名cascade;--级联删除用户(诛杀九族)

  //用户授权grant权限1,权限2,...to用户;//采取权限revoke权限1,权限2,...from用户;-----------------------------------------赋予表空间利用权限:--quota容量,unlimited无穷制,onusers在users这个表空间上没有限定alteruser用户名quotaunlimitedonusers;createsession//登录“数据库”权限createtable//创建“表”权限createview//创建“视图”权限createsequence//创建“序列”权限createprocedure//创建“存储”权限createtrigger//创建“触发器”权限createsynonym//创建“同义词”

你可能想看:

客户评论

我要评论