随笔分类 -  0 Oracle

摘要:首先查看数据库现有模式可使用以下语句select name,log_mode from v$database;也可以用下面的语句archive log list;(该方法需要as sysdba)对于非归档模式的数据库该为归档模式(主要以Oracle 10g为参考)使用以下步骤:1. SQL> alter system set log_archive_dest_1=’location=/oracle/oracle10g/log/archive_log’;该语句含义是确定归档日志的路径,实际上Oracle 10g可以生成多份一样的日志,保存多个位置,以防不测例如再添加一个日志位置可使用以下语 阅读全文
posted @ 2012-07-06 14:43 *新*新* 阅读(259) 评论(0) 推荐(0)
摘要:EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。-- 使用技巧1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE 阅读全文
posted @ 2012-07-02 13:25 *新*新* 阅读(293) 评论(0) 推荐(0)
摘要:在Oracle9i里,Oracle提供了一个内部事件,用以强制刷新Buffer Cache,其语法为:alter session set events 'immediate trace name flush_cache level 1';或者:alter session set events = 'immediate trace name flush_cache';类似的也可以使用alter system系统级设置:alter system set events = 'immediate trace name flush_cache';在Orac 阅读全文
posted @ 2012-07-02 10:59 *新*新* 阅读(12363) 评论(0) 推荐(1)
摘要:在每次执行 含语句:dbms_output.put_line() 的过程之前都要set serveroutput on 一下,否则dbms_output.put_line()无显示,如何解决?如果使用command或sqlplus,将SET SERVEROUTPUT ON size 1000000;放到db_1\sqlplus\admin\glogin.sql里。如果使用 SQL Developer,你不用设置任何 SET serveroutput on.在结果窗口,你可以添加一个DBMS Outputtab(查看->DBMS输出 点+连接数据库) 阅读全文
posted @ 2012-07-02 10:46 *新*新* 阅读(6759) 评论(0) 推荐(0)
摘要:好处:1) WITH AS存储过程中使用,声明了就一定要用,不然会报错.2) 存储过程中如果有select 好像就一定得有into......3)复杂的查询会产生很大的sql,with as语法显示一个个中间结果,显得有条理些,可读性提高4) 前面的中间结果可以被语句中的select或后面的中间结果表引用,类似于一个范围仅限于本语句的临时表,在需要多次查询某中间结果时可以提升效率例子:with t as (select * from emp where depno=10)select * from t where empno=xxx再举个简单的例子with a as (select * fro 阅读全文
posted @ 2012-06-29 18:49 *新*新* 阅读(2626) 评论(0) 推荐(0)
摘要:1. 概要说明数据库系统的显著特点需要保存大量历史记录,系统内存在许多历史记录表,因此常常出现系统运行一段时间,表记录数达到一定数量后,系统响应明显变慢的现象。为避免这种情况的出现,在有完备的数据库对象设计下,还在考虑到系统稳定情况下数据的变化情况,针对这种变化,在编写SQL语句必须遵循一定的优化规则,并制定完备的数据管理机制。2. 调优目的利用Oracle的内部优化器工作机制,合理改进查询语句的组织方式,提高数据库系统的响应速度,实现前端画面及平台应用的快速响应能力;同时统一开发人员的数据库开发编码的统一、规范。3. 调优原则充分利用表索引,避免进行全表扫描;充分利用SGA共享池缓存机制,提 阅读全文
posted @ 2012-06-29 18:17 *新*新* 阅读(346) 评论(0) 推荐(0)
摘要:Oracle over函数SQL code:sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。其参数:over(partition 阅读全文
posted @ 2012-06-29 17:18 *新*新* 阅读(219) 评论(0) 推荐(0)
摘要:sys_connect_by_path(字段名, 2个字段之间的连接符号),注意这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,',')。还有,这个函数使用之前必须先建立一个树,否则无用。举个例子:目的:将num值相等的项目写成 seq1,seq2,seq3,……的形式(SELECT num,REPLACE(MAX(sql0), ';', ',')FROM (SELECT num, sys_connect_by_path(sql1, ';') 阅读全文
posted @ 2012-06-29 16:59 *新*新* 阅读(547) 评论(0) 推荐(0)
摘要:ORACLE获取DDL(Create Table)的几种常用的方法(转载)大体的分为三种方法:一、可以通过toad、plsql develop等第三方工具进行导出DLL操作,用这种办法的好处在于操作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句的操作。二、直接通过EXP/IMP工具Oracle提供的最原始最实用的导入导出工具,我们大体上可以分为三种办法实现导出DDL。a. 通过imp指定indexfile参数,但这种办法不爽在于有每行前会有REM语法大体如下:exp userid=... tables=emp rows=n file=emp.dmpimp userid=... 阅读全文
posted @ 2012-06-29 13:43 *新*新* 阅读(6908) 评论(1) 推荐(1)
摘要:先假设有这么一个表:createtableS_Depart(DepartIdINTnotnull,DepartNameNVARCHAR2(40)notnull,DepartOrderINTdefault0,constraintPK_S_DEPARTprimarykey(DepartId));在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。1、Create Sequence你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,CREATE SEQUENCE emp_sequenceINCREMENT B 阅读全文
posted @ 2012-06-29 11:10 *新*新* 阅读(165) 评论(0) 推荐(0)
摘要:oracle循环语句小结2011-11-28 15:35主要有以下五种循环:Exit When、Loop、While、For(普通循环)、For(游标循环),下面举例一一说明(均为存储过程)。1、Exit When循环:create or replace procedure proc_test_exit_when isi number;begini:=0;LOOPExit When(i>5);Dbms_Output.put_line(i);i:=i+1;END LOOP;end proc_test_exit_when;——————————————————–俺是分割线——————————— 阅读全文
posted @ 2012-06-29 10:34 *新*新* 阅读(267) 评论(0) 推荐(0)
摘要:有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍!在Oracle数据库中,每个关系表都由许多列组成。给每一列指派特定的数据类型来定义将在这个列中存储得数据类型。1、CHAR最多可以以固定长度的格式存储2000个字符或字节。默认指定为以字符形式进行存储,这个数据类型是固定长度的,并且当位数不够时,需要在其右边添加空格来补满。例如:CREATE TABLE test(name char(20))2、VARCHAR和VARCHAR2最多可以以可变长度来存储4000B, 阅读全文
posted @ 2012-06-29 10:33 *新*新* 阅读(312) 评论(0) 推荐(0)
摘要:DBMS_LOCK包的学习 学习一下DBMS_LOCK包的用法。这份材料的说明和举例都很详细了,好不容易才找到的,哈哈。General InformationSource{ORACLE_HOME}/rdbms/admin/dbmslock.sqlFirst Available7.3.4ConstantsNameDescriptionData TypeValuenl_modeNuLlINTEGER1ss_modeSub Shared: used on an aggregate object to indicate that share locks are being acquired on su 阅读全文
posted @ 2012-06-28 17:37 *新*新* 阅读(2443) 评论(0) 推荐(0)
摘要:如果你要做循环的记数器,可以使用pls_integer. pls_interger,binary_integer,number中,pls_integer速度最快。转的别人的:Binary_Integer 与 Pls_Integer 都是整型类型. Binary_Integer类型变量值计算是由Oracle来执行,不会出现溢出,但是执行速度较慢,因为它是由Oracle模拟执行。而Pls_Integer的执行是由硬件即直接由CPU来运算,因而会出现溢出,但其执行速度较前者快许多。一、概述 在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LO. 阅读全文
posted @ 2012-06-28 14:37 *新*新* 阅读(7629) 评论(0) 推荐(0)
摘要:Testing and Debugging Procedures using SQL Developer 3.1http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/devdays2012/mod2_sqldev/mod2_sqldev.htmlTopic ListCollapse All TopicsHide All ImagesPrintOverviewPurposeThis tutorial covers how to execute a DDL script, review changes to the databas 阅读全文
posted @ 2012-06-27 15:49 *新*新* 阅读(528) 评论(0) 推荐(0)
摘要:一些基本的Oracle命令基本命令连接数据库C:>SQLPLUS /NOLOGSQL>CONN / AS SYSDBA1.Oracle 关闭SQL>SHUTDOWN (ABORT|IMMEDIATE|NORMAL)2.Oracle 启动SQL>STARTUP (REMOUNT|MOUNT|OPENT)3.SQL> HELP SHOWSHOW----Shows the value of a SQL*Plus system variable, or thecurrent SQL*Plus environment.SHO[W] optionwhere option re 阅读全文
posted @ 2012-06-27 15:34 *新*新* 阅读(692) 评论(0) 推荐(0)
摘要:问题:命令提示符cmd 中可以登录user,但是sql developer不可以。解决方法:用命令提示符修改密码,可以不知道原密码set oracle_sid=ora回车(ora为默认数据库实例名)sqlplus /nolog回车conn / as sysdba回车alter user system identified by manager;回车 (manager为新的密码) 阅读全文
posted @ 2012-06-27 15:18 *新*新* 阅读(831) 评论(0) 推荐(0)
摘要:今天在进行procedure执行的时候,用的是PL/SQL工具中的test,调试方法进行执行,因为有输入参数,但是报了个错:“note:debugging requires the debug connect session system privilege”.原因是用户权限不够,使用以下命令授予权限:GRANT debug any procedure, debug connect session TO username其实只需要授予debug connect session 就可以了,已经过测试。另外,如果查询某个角色包含哪些系统权限的话,可以查询:(1)、系统权限:select * fro 阅读全文
posted @ 2012-06-27 14:57 *新*新* 阅读(7313) 评论(0) 推荐(0)
摘要:学习新技术会让人望而生畏,试问你现在已经在学习使用关系型数据库了吗?或许,你会一点点Access,但是假如你现在的老板或者老师希望你精通Oracle数据库,你会怎么办呢?别急,本文阐述了10个观点,对于刚刚学习Oracle的人来说,Oracle SQL Developer是最值得他们学习的工具。理由如下:1.完全免费无需任何启动资金和预算,学生也不需要任何费用。在原来的程序上进行免费升级,并且在我们的官方论坛上有一些免费的技术支持。2.随处运行Windows、OSX(Apple)、Unix、Linux。也不需要在你的实验室机器上启动Windows VM去运行Windows软件。3.谁都可以安装 阅读全文
posted @ 2012-06-27 13:25 *新*新* 阅读(330) 评论(0) 推荐(0)
摘要:Oracle临时表可以说是提高数据库处理性能的好方法,在没有必要存储时,只存储在Oracle临时表空间中。希望本文能对大家有所帮助。1 、前言目前所有使用 Oracle 作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量。当然在 Oracle 中创建分区是一种不错的选择,但是当你发现你的应用有多张表关联的时候,并且这些表大部分都是比较庞大,而你关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小并且查询得到这个结果集的速度非常快,那么这个时候我考虑在 Oracle 中创建“临时表”。我对临时表的理解:在 Oracle 中创建一张表, 阅读全文
posted @ 2012-06-27 12:33 *新*新* 阅读(641) 评论(0) 推荐(0)