What circumstances we use ALL_ROWS and what circumstances we use FIRST_ROWS optimizer mode? This article is written in oracle9i.
First_rows attempts to optimize the query to get the very first row back to the client as fast as possible. This is good for an interactive client server environment where the client runs a query and shows the user the first 10 rows or so and waits for them to page down to get more.
All_rows attempts to optimize the query to get the very last row as fast as possible. This makes sense in a stored procedure for example where the client does not regain control until the stored procedure completes. You don't care if you have to wait to get the first row if the last row gets back to you twice as fast. In a client server/interactive application you may well care about that.
In TOAD or SQL Navigator, When we select the data, it display immediately. But it does not mean that, it is faster. If we scroll down, it might be fetching the data in the background mode. Fi ......
在开发应用的时候,把数据按照一定的规则排序后再取前几条数据这种操作是很平常的事情。我们在Oracle中常用的就是order by,然后取得rownum小于多少的数据这种方法。不过如果对Oracle不熟悉,也许就会发现你写的SQL语句检索出来的值不正确,这个是为什么呢。 因为Oracle在检索的时候,会首先把数据都检索出来,然后在排序段中进行排序。假如你有一个SQL语句如下所示。 SELECT EMP_NO from EMP WHERE ROWNUM < 10 ORDER BY EMP_NO 在检索的时候,会首先把数据检索出来,也就是把EMP表数据都检索出来,然后再Order by排序操作。因为ROWNUM 数据是在排序前就检索出来的了,所以不能利用ROWNUM来取得排序后的前10条操作。那么应该如何操作呢。其实很简单,利用子查询,先排序,再取 ROWNUM。如下所示 SELECT EMP_NO from ( SELECT EMP_NO from EMP ORDER BY EMP_NO ) WHERE ROWNUM < 10 这样你就会发现你最后可以检索到你需要的结果了
http://hi.baidu.com/sonmeika/blog/item/2bb91f875634462dc65cc3d2.html ......
转自:http://hi.baidu.com/dashuaiwang/blog/item/47cc680ec35055c37acbe1f8.html
打开oracle 数据库时出现了错误:
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\ORADATA\GOCOM\REDO01.LOG'
SQL> connect / as sysdba;
已连接。
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: D:\ORACLE\ORADATA\ORCL\REDO01.LOG'
查看D:\ORACLE\ORADATA\myoracle\REDO01.LOG还在,但是REDO02.LOG,REDO03.LOG被误删了.
赶紧换个例程OEMREP试试,结果还是一样的错误!
蒙了,难道要重装数据库不成?有什么办法可以解决这个问题呢?
解决办法:
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
SQL> startup mount;
......
一、设置初始化参数 job_queue_processes
sql> alter system set job_queue_processes=n;(n>0)
job_queue_processes最大值为1000
查看job queue 后台进程
sql>select name,description from v$bgprocess;
二,dbms_job package 用法介绍
包含以下子过程:
Broken()过程。
change()过程。
Interval()过程。
Isubmit()过程。
Next_Date()过程。
Remove()过程。
Run()过程。
Submit()过程。
User_Export()过程。
What()过程。
1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
这个过程有三个参数:job 、broken与next_date。
PROCEDURE Broken (job IN binary_integer,
Broken IN boolean,
next_date IN date :=SYSDATE)
job参数是工作号,它在问题中唯一标识工作。
broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。
next_date参数指示在什么时 ......
关键词:with read only
作用:用于指定所创建的试图不可以通过本视图更新表
执行一下SQL,创建表T,和两个试图V1,V2:
CREATE TABLE T(ID INTEGER);
CREATE VIEW V1 AS SELECT * from T;
CREATE VIEW V2 AS SELECT * from T WITH READ ONLY;
执行SQL:
INSERT INTO V1 VALUES(1);
--------------------
1 row created
执行SQL:
INSERT INTO V2 VALUES(1);
--------------------
提示错误
单独的SELECT语句不能使用WITH READ ONLY
SELECT * from T WITH READ ONLY;
将不能运行。 ......
课程概要
课程编号
:XY-DB-V01
培养目标
:具备实际操作能力的 Oracle 数据库管理员
专注Oracle实战能力的强化,完全覆盖OCP课程内容,具有更大的学习强度和更长的学习时间。
入学条件
:对Oracle或其它关系数据库有一定的基础者
班别及授课时间
:脱产班历时1个月,176小时
学费
:RMB 3500.00元
开班计划
:请留意网站首页的“开课预告”板块
课程大纲
常用Linux命令、vi编辑器的使用 (8小时)
PL/SQL语言基础,数据查询语句DQL,数据操纵语句DML,数据定义语句DDL,数据控制语句DCL的使用 (16小时)
Oracle10g数据库的常用函数 (8小时)
Oracle10g数据库的安装启动关闭 (8小时)
创建和使用oracle10g数据库实例 (8小时)
Oracle10g数据库的结构 (8小时)
Oracle10g数据库服务器的结构 (8小时)
数据库对象表,索引,视图,同义词,序列的基本操作 (8小时)
控制文件和日志文件的管理 (8小时)
表空间和数据库文件的管理 (8小时)
数据库对象的管理 (8小时)
Oracle10g数据库用户权限,角色管理 (8小时)
Oracle10g数据库资源配置 (8小时)
PL/SQL编程基础 ......