需求: 日历表 TCALENDAR_DATES,工作日flag=‘1’,非工作日=‘0’,取任一查询日期最近工作日,及最近工作日前n个工作日

日历表TCALENDAR_DATES样式
日历表

SELECT T.BASE_DATE, T.CAL_DAY, C.LAST_3_DAY
  FROM (SELECT C1.CAL_DAY AS BASE_DATE, MAX(C2.CAL_DAY) AS CAL_DAY --最近工作日
          FROM XIR_MD.TCALENDAR_DATES C1
          LEFT JOIN XIR_MD.TCALENDAR_DATES C2
            ON (C1.CAL_DAY >= C2.CAL_DAY AND C2.CAL_FLAG = '1')
         WHERE C1.CAL_CODE = 'CHINA_IB'
           AND C1.CAL_DAY >= '2020-01-01'
           AND C1.CAL_DAY <= '2020-12-31'
         GROUP BY C1.CAL_DAY
         ORDER BY C1.CAL_DAY) T
  LEFT JOIN (SELECT C.CAL_DAY,
                    LAG(C.CAL_DAY, 3, '') OVER(ORDER BY C.CAL_DAY) AS LAST_3_DAY --最近工作日 前3个工作日
               FROM XIR_MD.TCALENDAR_DATES C
              WHERE C.CAL_CODE = 'CHINA_IB'
                AND C.CAL_FLAG = '1'
                AND C.CAL_DAY >= '2020-01-01'
                AND C.CAL_DAY <= '2020-12-31') C
    ON T.CAL_DAY = C.CAL_DAY

2022-11-05 修改为新方式

SELECT A.CAL_DAY, A.CAL_FLAG,
       LEAD(A.CAL_DAY_NEW IGNORE NULLS, 1) OVER(PARTITION BY A.CAL_CODE ORDER BY A.CAL_DAY) AS END_1_DATE,
       LEAD(A.CAL_DAY_NEW IGNORE NULLS, 5) OVER(PARTITION BY A.CAL_CODE ORDER BY A.CAL_DAY) AS END_5_DATE
  FROM (SELECT DA.CAL_DAY,
               DECODE(DA.CAL_FLAG, 0, NULL, DA.CAL_DAY) AS CAL_DAY_NEW,
               DA.CAL_FLAG,
               DA.CAL_CODE
          FROM XIR_MD.TCALENDAR_DATES DA
         WHERE DA.CAL_CODE = 'CHINA_IB'
           AND DA.CAL_DAY >= '2022-01-01'
           AND DA.CAL_DAY <= '2022-12-31') A
第一章	Oracle入门
一、	数据库概述
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。
常见的数据模型
1.	层次结构模型: 层次结构模型实质上是一种有根结点的定向有序树,IMS(Information Manage-mentSystem)是其典型代表。
2.	网状结构模型:按照网状数据结构建立的数据库系统称为网状数据库系统,其典型代表是DBTG(Data Base Task Group)。
3.	关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。常见的有Oracle、mssql、mysql等
二、	主流数据库
数据库名	公司	特点	工作环境
mssql	微软	只能能运行在windows平台,体积比较庞大,占用许多系统资源, 但使用很方便,支持命令和图形化管理,收费。	中型企业
Mysql	甲骨文	是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向中小企业	中小型企业
PostgreSQL		号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很好	中大型企业
oracle	甲骨文	获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。但价格不菲	大型企业
db2	IBM	DB2在企业级的应用最为广泛,  在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器。收费	大型企业
Access	微软	Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高	小型企业
三、	Oracle数据库概述
 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
	拉里•埃里森
	就业前景
从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。
其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。
其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),Oracle技术能够帮助提高就业的深度。
其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。
四、	如何学习
认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学
五、	体系结构
oracle的体系很庞大,要学习它,首先要了解oracle的框架。oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成
	物理结构
物理结构包含三种数据文件:
1)	控制文件
2)	数据文件
3)	在线重做日志文件
	逻辑结构
功能:数据库如何使用物理空间
组成:表空间、段、区、块的组成层次
六、	oracle安装、卸载和启动
	硬件要求
物理内存:1GB
可用物理内存:50M
交换空间大小:3.25GB
硬盘空间:10GB
1.	安装程序成功下载,将会得到如下2个文件:
解压文件将得到database文件夹,文件组织如下:
点击setup.exe执行安装程序,开始安装。
2.	点击安装程序将会出现如下安装界面,步骤 1/9:配置安全更新
填写电子邮件地址(可以不填),去掉复选框,点击下一步
3.	步骤2/9:选择安装选项
勾选第一个,安装和配置数据库,点击下一步
4.	步骤3/8:选择系统类
勾选第一个:桌面类,点击下一步
5.	步骤4/8:配置数据库安装
选择安装路径,选择数据库版本(企业版),选择字符集(默认值)
填写全局数据库名,管理口令
6.	步骤5/8:先决条件检查
如果你的电脑满足要求但仍然显示检查失败,这时候直接忽略,勾选全部忽略
7.	步骤6/8:概要信息
核对将要安装数据的详细信息,并保存响应文件,以备以后查看。然后点击完成数据库安装
8.	步骤7/8:安装产品
产品安装过程中将会出现以上2个界面
9.	步骤8/8:完成安装
	卸载Oracle
1.	在运行services.msc打开服务,停止Oracle的所有服务。
2.	oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat
3.	运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除)
4.	运行regedit命令,打开注册表窗口。删除注册表中与Oracle相关的内容,具体如下:       
	删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。
	删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键。
	删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle开头的键。
	删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。
	删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键。
	删除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。
	删除环境变量中的PATHT CLASSPATH中包含Oracle的值。
	删除“开始”/“程序”中所有Oracle的组和图标。
	删除所有与Oracle相关的目录,包括:
C:\Program file\Oracle目录。
ORACLE_BASE目录。
C:\Documents and Settings\系统用户名、LocalSettings\Temp目录下的临时文件。
七、	oracle中的数据库
八、	常用的工具
	Sql Plus
	Sql Developer
	Oracle Enterprise Manager
第二章	用户和权限
一、	用户介绍
ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户:
1.	sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,登录时不能用normal。
2.	system用户:超级用户,默认是SYSOPT(操作数据库的人),不过它也能以SYSDBA的权限登陆。拥有普通dba角色权限。
3.	scott用户:是个演示用户,是让你学习Oracle用的。
二、	常用命令
学习oracle,首先我们必须要掌握常用的基本命令,oracle中的命令比较多,常用的命令如下:
1.	登录命令(sqlplus)
说明:用于登录到oracle数据库
用法:sqlplus 用户名/密码 [as sysdba/sysoper]
注意:当用特权用户登录时,必须带上sysdba或sysoper
普通用户登录
sys用户登录
操作系统的身份登录
2.	连接命令(conn)
说明:用于连接到oracle数据库,也可实现用户的切换
用法:conn 用户名/密码 [as sysdba/sysoper]
注意:当用特权用户连接时,必须带上sysdba或sysoper
3.	断开连接(disc)
说明:断开与当前数据库的连接
用法:disc
4.	显示用户名(show user)
说明:显示当前用户名
用法:show user
5.	退出(exit)
说明:断开与当前数据库的连接并会退出
用法:exit
6.	编辑脚本(edit/ed)
说明:编辑指定或缓冲区的sql脚本
用法:edit [文件名]
7.	运行脚本 (start/@)
说明:运行指定的sql脚本
用法:start/@ 文件名
8.	印刷屏幕 (spool)
说明:将sql*plus屏幕中的内容输出到指定的文件
用法:开始印刷->spool 文件名 结束印刷->spool off
9.	显示宽度 (linesize)
说明:设置显示行的宽度,默认是80个字符
用法:set linesize 120
10.	显示页数 (pagesize)
说明:设置每页显示的行数,默认是14页
用法:set pagesize 20
三、	用户管理
1.	创建用户
说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。
用法:create user 新用户名 identified by 密码
2.	修改密码
说明:修改用户密码一般有两种方式,一种是通过命令password修改,另一种是通过语句alter user实现,如果要修改他人的密码,必须要具有相关的权限才可以
方式一 password [用户名] 
方式二 alert user 用户名 identified by 新密码
		修改当前用户(方式一)
修改当前用户(方式二)
修改其他用户(方式一)
修改其他用户(方式二)
3.	用户禁用与启用
说明:Oracle中想要禁用或启用一个账户也同样是使用alter user 命令来完成,只是语法和修改密码有所不同。
禁用 alert user 用户名 account lock
启用 alert user 用户名 account unlock
4.	删除用户
说明:Oracle中要删除一个用户,必须要具有dba的权限。而且不能删除当前用户,如果删除的用户有数据对象,那么必须加上关键字cascade。
用法:drop user 用户名 [cascade]
四、	用户权限与角色
1.	权限
Oracle中权限主要分为两种,系统权限和实体权限。
	系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
	DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
	RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
	CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
	授予系统权限
说明:要实现授予系统权限只能由DBA用户授出。
用法:grant 系统权限1[,系统权限2]… to 用户名1[,用户名2]….
	系统权限回收:
说明:系统权限只能由DBA用户回收
用法:revoke 系统权限 from 用户名
	实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。主要包括select, update, insert, alter, index, delete, all其中all包括所有权限。
	授予实体权限
用法:grant 实体权限1[,实体权限2]… on 表名 to用户名1[,用户名2]….
	实体权限回收
用法:revoke 实体权限 on 表名from 用户名
	查询用户拥有哪里权限:
SQL> select * from role_tab_privs;//查询授予角色的对象权限
SQL> select * from role_role_privs;//查询授予另一角色的角色
SQL> select * from DBA_tab_privs;//查询直接授予用户的对象权限
SQL> select * from dba_role_privs;//查询授予用户的角色
SQL> select * from dba_sys_privs;//查询授予用户的系统权限
SQL> select * from role_sys_privs;//查询授予角色的系统权限
SQL> Select * from session_privs;// 查询当前用户所拥有的权限
2.	角色
角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。
	系统预定义角色
预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下面我们就简单介绍些系统角色:
	CONNECT, RESOURCE, DBA这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。
	DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色主要用于访问数据字典视图和包。
	EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。
	自定义角色
Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户
	创建角色
SQL> create role admin;
	授权给角色
SQL> grant connect,resource to admin;
	撤销角色的权限
SQL> revoke connect from admin;
	删除角色
SQL> drop role admin;
第三章	Sql查询与函数
一、	SQL概述
SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。
	SQL语言主要包含5个部分
	数据定义语言Data Definition Language(DDL),用来建立数据库、数据对象和定义其列。例如:CREATE、DROP、ALTER等语句。
	数据操作语言Data Manipulation Language(DML),用来插入、修改、删除、查询,可以修改数据库中的数据。例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句
	数据查询语言 (Data Query Language, DQL) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询)
	数据控制语言Data Controlling Language(DCL),用来控制数据库组件的存取允许、存取权限等。例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。
	事务控制语言(Transactional Control Language,TCL),用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句
二、	Oracle的数据类型
类型	参数	描述
字符类型	char	1~2000字节	固定长度字符串,长度不够的用空格补充
	varchar2	1~4000字节	可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高
数值类型	Number(m,n)	m(1~38) 
n(-84~127) 	可以存储正数、负数、零、定点数和精度为38位的浮点数,其中,M表示精度,代表数字的总位数;N表示小数点右边数字的位数
日期类型	date	7字节	用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒
二进制数据类型	row	1~2000字节	可变长二进制数据,在具体定义字段的时候必须指明最大长度n
	long raw	1~2GB	可变长二进制数据
LOB数据类型	clob	1~4GB	只能存储字符数据
	nclob	1~4GB	保存本地语言字符集数据
	blob	1~4GB	以二进制信息保存数据
三、	DDL语言
1.	Create table命令
用于创建表。在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等
	语法结构
create table 表名(
   [字段名] [类型] [约束]
   ………..
   CONSTRAINT fk_column
FOREIGN KEY(column1,column2,…..column_n)
REFERENCES tablename(column1,column2,…..column_n)
	例子:
create table student(
stuNo char(32) primary key,--主键约束
stuName varchar2(20) not null,--非空约束
cardId char(20) unique,--唯一约束
sex char(2) check(sex='男' or sex='女'),--检查约束
address varchar2(100) default '地址不详'--默认约束
create table mark(
mid int primary key,--主键约束
stuNo char(32) not null,
courseName varchar2(20) not null,--非空约束
score number(3) not null check(score>=0 and scoreselect * from em--查询所有数据
SQL>select ename,job from em--查询指定的字段数据
SQL> select * from emp where sal>1000--加条件
2.	聚合函数
聚合函数对一组值执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。不能在 WHERE 子句中使用组函数。
	AVG(expression): 返回集合中各值的平均值
--查询所有人都的平均工资
select avg(sal) from emp
	COUNT(expression): 以 Int32 形式返回集合中的项数
--查询工资低于2000的人数
select count(*) from emp where sal2000
5.	连接查询
连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。
	内连接
内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
	等值连接:
select * from emp inner join dept on emp.deptno=dept.deptno
select * from emp,dept where emp.deptno=dept.deptno
	不等值连接:
select * from emp inner join dept on emp.deptno!=dept.deptno
	外连接
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。
	左外连接(left join): 是以左表的记录为基础的
select * from emp left join dept on emp.deptno=dept.deptno
	右外连接(right join): 和left join的结果刚好相反,是以右表(BL)为基础的
select * from emp right join dept on emp.deptno=dept.deptno
	全外连接(full join): 左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充
select * from emp full join dept on emp.deptno=dept.deptno
	交叉连接
交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。
select * from cross full join dept
6.	常用查询
	like模糊查询
--查询姓名首字母为S开始的员工信息
select * from emp where ename like 'S%'
--查询姓名第三个字母为A的员工信息
select * from emp where ename like '__A%'
	is null/is not null 查询
--查询没有奖金的雇员信息
select * from emp where comm is null
--查询有奖金的雇员信息
select * from emp where comm is not null
	in查询
--查询雇员编号为7566、7499、7844的雇员信息
select * from emp where empno in(7566,7499,7844)
	exists/not exists查询(效率高于in)
--查询有上级领导的雇员信息
select * from emp e where exists 
(select * from emp where empno=e.mgr)
--查询没有上级领导的雇员信息
select * from emp e where not exists 
(select * from emp where empno=e.mgr)
	all查询
--查询比部门编号为20的所有雇员工资都高的雇员信息
select * from emp where sal > all(select sal from emp where deptno=20)
	union合并不重复
select * from emp where comm is not null
union
select * from emp where sal>3000
	union all合并重复
select * from emp where comm is not null
union all
select * from emp where sal>3000
7.	子查询
当一个查询是另一个查询的条件时,称之为子查询。子查询是一个 SELECT 语句,它嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。
	在CREATE TABLE语句中使用子查询
--创建表并拷贝数据
create table temp(id,name,sal) as select empno,ename,sal from emp
	在INSERT语句中使用子查询
--当前表拷贝
insert into temp(id,name,sal) select * from temp
--从其他表指定字段拷贝
insert into temp(id,name,sal) select empno,ename,sal from emp
	在DELETE语句中使用子查询
--删除SALES部门中的所有雇员
delete from emp where deptno in
(select deptno from dept where dname='SALES')
	在UPDATE语句中使用子查询
--修改scott用户的工资和smith的工资一致
update emp set sal=(select sal from emp where ename='SMITH') where ename='SCOTT'
--修改black用户的工作,工资,奖金和scott一致
update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SCOTT') where ename='BLAKE'
	在SELECT语句中使用子查询
--查询和ALLEN同一部门的员工信息
select * from emp where deptno in
(select deptno from emp where ename='ALLEN')
--查询工资大于部门平均工资的雇员信息
select * from emp e 
(select avg(sal) asal,deptno from emp group by deptno) t 
where e.deptno=t.deptno and e.sal>t.asal
六、	TCL语言
1.	COMMIT
commit  --提交事务
2.	ROLLBACK
rollback to p1  --回滚到指定的保存点
rollback  --回滚所有的保存点
3.	SAVEPOINT
savepoint  p1  --设置保存点
4.	只读事务
只读事务是指只允许执行查询的操作,而不允许执行任何其它dml操作的事务,它的作用是确保用户只能取得某时间点的数据。
set transaction read only
七、	oracle函数
1.	字符串函数
字符串函数是oracle中比较常用的,下面我们就介绍些常用的字符串函数:
	concat:字符串连接函数,也可以使用’||’
--将职位和雇员名称显示在一列中
select concat(ename,concat('(',concat(job,')'))) from emp
select ename || '(' || job || ')' from emp
	length:返回字符串的长度
--查询雇员名字长度为5个字符的信息
select * from emp where length(ename)=5
	lower:将字符串转换成小写
--以小写方式显示雇员名
select lower(ename) from emp
	upper:将字符串转换成大写
--以大写方式显示雇员名
select upper (ename) from emp
	substr:截取字符串
--只显示雇员名的前3个字母
select substr(ename,0,3) from emp
	replace:替换字符串
--将雇员的金额显示为*号
select ename,replace(sal,sal,’*’) from emp
	instr:查找字符串
--查找雇员名含有’LA’字符的信息
select * from emp where instr(ename,’LA’)>0
2.	日期函数
	sysdate:返回当前session所在时区的默认时间
--获取当前系统时间
select  sysdate  from dual
	add_months:返回指定日期月份+n之后的值,n可以为任何整数
--查询当前系统月份+2的时间
select  add_months(sysdate,2)  from dual
--查询当前系统月份-2的时间
select  add_months(sysdate,-2)  from dual
	last_day:返回指定时间所在月的最后一天
--获取当前系统月份的最后一天
select  last_day(sysdate)  from dual
	months_between:返回月份差,结果可正可负,当然也有可能为0
--获取入职日期距离当前时间多少天
select  months_between(sysdate, hiredate) from emp
	trunc:为指定元素而截去的日期值
--获取当前系统年,其他默认
select  trunc(sysdate,'yy')  from dual
--查询81年2月份入职的雇员
select * from emp 
where trunc(hiredate,'mm')=trunc(to_date('1981-02','yyyy-mm'),'mm')
3.	转换函数
	to_char:将任意类型转换成字符串
--日期转换
select  to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')  from dual
--数字转换
select  to_char(-100.789999999999,'L99G999D999')  from dual 
	数字格式控制符
符号	描述
9	代表一位数字,如果当前位有数字,显示数字,否则不显示(小数部分仍然会强制显示)
0	强制显示该位,如果当前位有数字,显示数字,否则显示0
$	增加美元符号显示
L	增加本地货币符号显示
.	小数点符号显示
,	千分位符号显示
	to_date:将字符串转换成日期对象
--字符转换成日期
select to_date('2011-11-11 11:11:11', 'yyyy-mm-dd hh24:mi:ss') from dual 
	to_number:将字符转换成数字对象
--字符转换成数字对象
select to_number('209.976')*5 from dual 
select to_number('209.976', '9G999D999')*5 from dual 
4.	数学函数
	abs:返回数字的绝对值
select  abs(-1999) from dual 
	ceil:返回大于或等于n的最小的整数值
select  ceil(2.48) from dual 
	floor:返回小于等于n的最大整数值
select  floor(2.48) from dual 
	round:四舍五入
select  round(2.48) from dual 
select  round(2.485,2) from dual
	bin_to_num:二进制转换成十进制
select  bin_to_num(1,0,0,1,0) from dual 
第四章	锁
一、	概述
锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。
在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。
根据保护的对象不同,Oracle数据库锁可以分为以下几大类:
	DML锁(data locks,数据锁),用于保护数据的完整性
	DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义
	内部锁和闩(internal locks and latches),保护数据库的内部结构
二、	DML锁
DML锁的目的在于保证并发情况下的数据完整性,在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。
1.	行级锁
当事务执行数据库插入、更新、删除操作时,该事务自动获得操作表中操作行的排它锁
--不允许其他用户对雇员表的部门编号为20的数据进行修改
select * from emp where deptno=20 for update
--不允许其他用户对雇员表的所有数据进行修改
select * from emp for update
--如果已经被锁定,就不用等待
select * from emp for update nowait
--如果已经被锁定,更新的时候等待5秒
select * from emp for update wait 5
2.	锁模式
	0(none)
	1(null)
	2(rs):行共享
	3(rx):行排他
	4(s):共享
	5(srx):共享行排他
	6(x):排他
数字越大,锁级别越高
3.	表级锁
当事务获得行锁后,此事务也将自动获得该行的表锁(行排他),以防止其它事务进行DDL语句影响记录行的更新
	行共享锁(RS锁):允许用户进行任何操作,禁止排他锁
lock table emp in row share mode
	行排他锁(RX锁):允许用户进行任何操作,禁止共享锁
lock table emp in row exclusive mode
	共享锁(R锁):其他用户只能看,不能修改
lock table emp in share mode
	排他锁(X锁):其他用户只能看,不能修改,不能加其他锁
lock table emp in exclusive mode
	共享行排他(SRX锁):比行排他和共享锁级别高,不能添加共享锁
lock table emp in share row exclusive mode
4.	锁兼容性
S	X	RS	RX	SRX	N/A
S	Y	N	Y	N	N	Y
X	N	N	N	N	N	Y
RS	Y	N	Y	Y	Y	Y
RX	N	N	Y	Y	N	Y
SRX	N	N	Y	N	N	Y
N/Y	Y	Y	Y	Y	Y	Y
5.	死锁
当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就出现死锁。
1)	用户A修改A表,事务不提交
2)	用户B修改B表,事务不提交
3)	用户A修改B表,阻塞
4)	用户B修改A表,阻塞
Oracle系统能自动发现死锁,并会自动选择工作量最少的事务进行撤销和释放所有锁
6.	悲观锁和乐观锁
数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁
	悲观锁:就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。
	乐观锁:就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做。
三、	DDL锁
1.	排它DDL锁
创建、修改、删除一个数据库对象的DDL语句获得操作对象的排它锁。
2.	共享DDL锁
需在数据库对象之间建立相互依赖关系的DDL语句通常需共享获得DDL锁
3.	分析锁
分析锁是一种独特的DDL锁类型,ORACLE使用它追踪共享池对象及它所引用数据库对象之间的依赖关系
四、	内部锁和闩
这是ORACLE中的一种特殊锁,用于顺序访问内部系统结构。当事务需向缓冲区写入信息时,为了使用此块内存区域,ORACLE首先必须取得这块内存区域的闩锁,才能向此块内存写入信息。
第五章	数据库对象
一、	概述
ORACLE数据库主要有如下数据库对象:
	tablespace and datafile(表空间和数据文件)
	table(表)
	constraints(约束)
	index(索引)
	view(试图)
	sequence(序列)
	synonyms(同义词)
	DB-link(数据库链路)
二、	表空间和数据文件
表空间是数据库的逻辑组成部分,从物理上讲,数据库数据是存放在数据文件中,从逻辑上讲数据库则是存放在表空间中,表空间是由一个或多个数据文件组成。
	表空间
	某一时刻只能属于一个数据库
	由一个或多个数据文件组成
	可进一步划分为逻辑存储
	表空间主要分为两种
	System表空间
	随数据库创建
	包含数据字典
	包含system还原段
	非system表空间
	用于分开存储段
	易于空间管理
	控制分配给用户的空间量
	数据文件
	只能属于一个表空间和一个数据库
	是方案对象数据的资料档案库
	创建表空间
CREATE TABLESPACE tablespacename
[DATAFILE clause]
[MINIMUM EXTENT integer[k|m]]
[BLOCKSIZE integer[k]]
[LOGGING|NOLOGGING]
[DEFAULT storage_clause]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY]
[extent_management_clause]
[segment_management_clause]
--创建本地管理表空间
create tablespace firstSpance
datafile 'e:/firstspance.dbf'size 100M
extent management local uniform size 256k
--修改文件大小
alter database datafile 'e:/firstspance.dbf' resize 110m
--删除表空间
drop tablespace firstSpance INCLUDING CONTENTS and datafiles
--使用数据库表空间
--创建用户指定表空间
create user guest identified by 123456
default tablespace firstSpance
--表中指定表空间
create table account(
   accountid number(4),
   accountName varchar2(20)
)tablespace firstSpance
--表空间脱机
alter tablespace firstSpance offline
--表空间联机
alter tablespace firstSpance online
--表空间只读,不能进行dml操作
alter tablespace firstSpance read only
三、	同义词
Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。Oracle同义词有两种类型,分别是公用Oracle同义词与私有Oracle同义词。
	公有同义词
CREATE [OR REPLACE] PUBLIC SYNONYM sys_name FOR [SCHEMA.] object_name
	创建(需拥有CREATE PUBLIC SYNONYM权限才可以创建)
--创建同义词
create public synonym syn_emp for scott.emp
--访问同义词
select * from syn_emp
drop public synonym syn_emp
	私有同义词
CREATE [OR REPLACE] SYNONYM sys_name FOR [SCHEMA.] object_name
--创建同义词
create synonym syn_pri_emp for emp
--访问同义词
select * from syn_ pri _emp
drop public synonym syn_emp
四、	表分区
当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。
	优点:
	改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
	增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
	维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
	均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。
	使用场合
	表的大小超过2GB
	表中包含历史数据,新的数据被增加都新的分区中
	常见分区方法:
	范围   --- 8
	Hash   --- 8i
	列表   --- 9i
	组合   --- 8i
1.	范围分区
范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期。
	特点:
	最早、最经典的分区算法
	Range分区通过对分区字段值的范围进行分区
	Range分区特别适合于按时间周期进行数据的存储。日、周、月、年等。
	数据管理能力强(数据迁移、数据备份、数据交换)
	范围分区的数据可能不均匀
	范围分区与记录值相关,实施难度和可维护性相对较差
	按值划分
CREATE TABLE book (
   bookid NUMBER(5),
   bookname VARCHAR2(30),
   price NUMBER(8)
)PARTITION BY RANGE (price)--分区字段
   PARTITION P1 VALUES LESS THAN (4) TABLESPACE system,
   PARTITION P2 VALUES LESS THAN (8) TABLESPACE system,
   PARTITION P3 VALUES LESS THAN (maxvalue) TABLESPACE system,          
--MAXVALUE代表了一个不确定的值,这个值高于其它分区中的任何分区键的值
	按日期划分
CREATE TABLE student (
   stuno NUMBER(5),
   stuname VARCHAR2(30),
   birthday date
)PARTITION BY RANGE (birthday)--分区字段
   PARTITION P1990 VALUES LESS THAN (to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system,
   PARTITION P1991 VALUES LESS THAN (to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system           
2.	Hash分区(散列分区)
这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。散列分区为通过指定分区编号来均匀分布数据的一种分区类型。如果你要使用hash分区,只需指定分区的数量即可。建议分区的数量采用2的n次方,这样可以使得各个分区间数据分布更加均匀。
	基于分区字段的HASH值,自动将记录插入到指定分区。
	分区数一般是2的幂
	易于实施
	总体性能最佳
	适合于静态数据
	HASH分区适合于数据的均匀存储
	数据管理能力弱
	HASH分区对数据值无法控制
CREATE TABLE classes (
   clsno NUMBER(5),
   clsname VARCHAR2(30)
)PARTITION BY HASH(clsno)--分区字段
   PARTITION ph1 tablespace system,
   PARTITION ph2 tablespace system
3.	List分区(列表分区)
该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。
	List分区通过对分区字段的离散值进行分区
	List分区是不排序的,而且分区之间也没有关联
	List分区适合于对数据离散值进行控制
	List分区只支持单个字段
	List分区具有与range分区相似的优缺点
	数据管理能力强
	各分区的数据可能不均匀
CREATE TABLE users (
   userid NUMBER(5),
   username VARCHAR2(30),
   province char(5)
)PARTITION BY list(province)--分区字段
   PARTITION pl1 values('广东') tablespace system,
   PARTITION pl2 values('江西') tablespace system,
   PARTITION pl3 values('广西') tablespace system,
   PARTITION pl4 values('湖南') tablespace system
4.	组合分区
常见的组合分区主要有范围散列分区和范围列表分区
	既适合于历史数据,又适合于数据均匀分布
	与范围分区一样提供高可用性和管理性
	实现粒度更细的操作
	组合范围列表分区
这种分区是基于范围分区和列表分区,表首先按某列进行范围分区,然后再按某列进行列表分区,分区之中的分区被称为子分区。
CREATE TABLE student (
   stuno NUMBER(5),
   stuname VARCHAR2(30),
   birthday date,
   province char(5)
)PARTITION BY RANGE (birthday) --主分区字段
subpartition BY LIST(province)--子分区字符
   PARTITION P1990 VALUES LESS THAN(to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system
      SUBPARTITION pl1 values('广东') tablespace system,
      SUBPARTITION pl2 values('江西') tablespace system,
      SUBPARTITION pl3 values('广西') tablespace system,
      SUBPARTITION pl4 values('湖南') tablespace system
   PARTITION P1991 VALUES LESS THAN(to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system
      SUBPARTITION p21 values('广东') tablespace system,
      SUBPARTITION p22 values('江西') tablespace system,
      SUBPARTITION p23 values('广西') tablespace system,
      SUBPARTITION p24 values('湖南') tablespace system   
	组合范围散列分区
这种分区是基于范围分区和散列分区,表首先按某列进行范围分区,然后再按某列进行散列分区。
CREATE TABLE student (
   stuno NUMBER(5),
   stuname VARCHAR2(30),
   birthday date
)PARTITION BY RANGE(birthday) --主分区字段
SUBPARTITION BY HASH(stuno)--子分区字符
   PARTITION P1990 VALUES LESS THAN(to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system
      SUBPARTITION ph12 tablespace system,
      SUBPARTITION ph13 tablespace system
   PARTITION P1991 VALUES LESS THAN(to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system
      SUBPARTITION ph21 tablespace system,
      SUBPARTITION ph22 tablespace system   
5.	表分区常用操作
	添加分区
--添加主分区
alter table book add partition p4 values less than(maxvalue) tablespace system
--添加子分区
ALTER TABLE student MODIFY PARTITION P1990 
   ADD SUBPARTITION pl5 values('福建')
	删除分区
--删除主分区
ALTER TABLE student DROP PARTITION P1990
--删除子分区
ALTER TABLE student DROP SUBPARTITION p15
	重命名表分区
ALTER TABLE student RENAME PARTITION P21 TO P2
	显示数据库所有分区表的信息
select * from DBA_PART_TABLES
	显示当前用户所有分区表的信息
select * from USER_PART_TABLES
	查询指定表分区数据
select * from users partition(pl2)--主分区
select * from users subpartition(phl2)--子分区
	删除分区表一个分区的数据
alter table book truncate partition p11
第六章	视图
一、	概述
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。
	为什么使用视图
	控制数据访问
	简化查询
	数据独立性
	避免重复访问相同的数据
	使用修改基表的最大好处是安全性,即保证那些能被任意人修改的列的安全性
	Oracle中视图分类
	关系视图
	内嵌视图
	对象视图
	物化视图
二、	关系视图
关系视图是作为数据库对象存在的,创建之后也可以通过工具或数据字典来查看视图的相关信息。关系视图是4种视图中最简单,同时也最常用的视图。
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] 
AS subquery 
[WITH CHECK OPTION [CONSTRAINT constraint]] 
[WITH READ ONLY]
1.	OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图
2.	FORCE:不管基表是否存在ORACLE都会自动创建该视图
3.	NOFORCE:只有基表都存在ORACLE才会创建该视图
4.	Alias:为视图产生的列定义的别名
5.	subquery:一条完整的SELECT语句,可以在该语句中定义别名
6.	WITH CHECK OPTION:插入或修改的数据行必须满足视图定义的约束
7.	WITH READ ONLY:该视图上不能进行任何DML操作
create or replace view view_Account_dept
select * from emp where deptno=10
--只读视图
create or replace view view_Account_dept
select * from emp where deptno=10 order by sal
with read only
--约束视图
create or replace view view_Account_dept
select * from emp where deptno=10 
with check option
	查询视图
select * from emp where view_Account_dept
	修改视图
通过OR REPLACE 重新创建同名视图即可
	删除视图
DROP VIEW VIEW_NAME语句删除视图
	视图上的DML 操作原则
1.	简单视图可以执行DML操作; 
2.	在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字时不能执行delete语句
3.	在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字,ROWNUM为例,列定义为表达式时不能执行update语句
4.	在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字,ROWNUM为例,列定义为表达式,表中非空的列子视图定义中未包括时不能执行insert语句
5.	可以使用WITH READ ONLY来屏蔽DML操作
三、	内嵌视图
内嵌视图是在from语句中的可以把表改成一个子查询。内嵌视图不属于任何用户,也不是对象,内嵌视图是子查询的一种。
Select * from 
(select * from emp where deptno=10)
where sal>2000
四、	对象视图
对象类型在数据库编程中有许多好处,但有时,应用程序已经开发完成。为了迎合对象类型而重建数据表是不现实的。对象视图正是解决这一问题的优秀策略。
五、	物化视图
常用于数据库的容灾,不是传统意义上虚拟视图,是实体化视图,和表一样可以存储数据、查询数据。主备数据库数据同步通过物化视图实现,主备数据库通过data link连接,在主备数据库物化视图进行数据复制。当主数据库垮掉时,备数据库接管,实现容灾。
create materialized view materialized_view_name
build [immediate|deferred]  --1.创建方式
refresh [complete|fast|force|never]     --2.物化视图刷新方式
on [commit|demand]   --3.刷新触发方式
start with (start_date)   --4.开始时间
next (interval_date)   --5.间隔时间
with [primary key|rowid]  --默认 primary key
ENABLE QUERY REWRITE   --7.是否启用查询重写
as     --8.关键字
select statement;   --9.基表选取数据的select语句
1.	创建方式
	immediate(默认):立即
	deferred:延迟,至第一次refresh时,才生效
2.	物化视图刷新方式
	force(默认):如果可以快速刷新,就执行快速刷新,否则,执行完全刷新
	complete:完全刷新,即刷新时更新全部数据,包括视图中已经生成的原有数据
	fast:快速刷新,只刷新增量部分。前提是,需要在基表上创建物化视图日志。该日志记录基表数据变化情况,所以才能实现增量刷新
	never:从不刷新
3.	刷新触发方式
	on commit:基表有commit动作时,刷新视图,不能跨库执行(因为不知道别的库的提交动作)
	on demand,在需要时刷新,根据后面设定的起始时间和时间间隔进行刷新,或者手动调用dbms_mview包中的过程刷新时再执行刷新。
4.	开始时间和间隔时间
	4和5即开始刷新时间和下次刷新的时间间隔。如:start with sysdate next sysdate+1/1440表示马上开始,刷新间隔为1分钟。(与 on commit选项冲突)
5.	创建模式
	primary key(默认):基于基表的主键创建
	rowed:不能对基表执行分组函数、多表连结等需要把多个rowid合成一行的操作
6.	是否启用查询重写
	如果设置了初始化参数query_rewrite_enabled=true则默认就会启用查询重写。但是,数据库默认该参数为false。并且,不是什么时候都应该启用查询重写。所以,该参数应该设置为false,而在创建特定物化视图时,根据需要开启该功能。
7.	注意
	如果选择使用了上面第4,5选项,则不支持查询重写功能(原因很简单,所谓重写,就是将对基表的查询定位到了物化视图上,而4、5选项会造成物化视图上部分数据延迟,所以,不能重写)。
--创建增量刷新的物化视图时应先创建存储的日志空间
--在scott.emp表中创建物化视图日志
 create materialized view log on emp
 tablespace users with rowid;
--开始创建物化视图
--方式一
create materialized view mv_emp
tablespace users                   --指定表空间
build immediate                    --创建视图时即生成数据
refresh fast                       --基于增量刷新
on commit                          --数据DML操作提交就刷新
with rowid                         --基于ROWID刷新
as select * from emp
--方式二
create materialized view mv_emp2
tablespace users                   --指定表空间
refresh fast                       --基于增量刷新
start with sysdate                 --创建视图时即生成数据
next sysdate+1/1440                /*每隔一分钟刷新一次*/
with rowid                         --基于ROWID刷新
as select * from emp
--删除物化视图日志
drop materialized view mv_emp
第七章	索引
一、	概述
索引是建立在表上的可选对象,设计索引的目的是为了提高查询的速度。但同时索引也会增加系统的负担,进行影响系统的性能。
索引一旦建立后,当在表上进行DML操作时,Oracle会自动维护索引,并决定何时使用索引。
索引的使用对用户是透明的,用户不需要在执行SQL语句时指定使用哪个索引及如何使用索引,也就是说,无论表上是否创建有索引,SQL语句的用法不变。用户在进行操作时,不需要考虑索引的存在,索引只与系统性能相关。
	索引的原理
当在一个没有创建索引的表中查询符合某个条件的记录时,DBMS会顺序地逐条读取每个记录与查询条件进行匹配,这种方式称为全表扫描。全表扫描方式需要遍历整个表,效率很低。
	索引的类型
Oracle支持多种类型的索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类,以满足各种表和查询条件的要求。
	单列索引和复合索引
	B树索引
	位图索引
	函数索引
	创建索引
CREATE [UNIQUE] | [BITMAP] INDEX index_name
ON table_name([column1 [ASC|DESC],column2
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1]
[STORAGE (INITIAL n2)]
[NOLOGGING]
[NOLINE]
[NOSORT]
	UNIQUE:表示唯一索引,默认情况下,不使用该选项。
	BITMAP:表示创建位图索引,默认情况下,不使用该选项。
	PCTFREE:指定索引在数据块中的空闲空间。对于经常插入数据的表,应该为表中索引指定一个较大的空闲空间。
	NOLOGGING:表示在创建索引的过程中不产生任何重做日志信息。默认情况下,不使用该选项。
	ONLINE:表示在创建或重建索引时,允许对表进行DML操作。默认情况下,不使用该选项。
	NOSORT:默认情况下,不使用该选项。则Oracle在创建索引时对表中记录进行排序。如果表中数据已经是按该索引顺序排列的,则可以使用该选项。
二、	单列索引和复合索引
一个索引可以由一个或多个列组成。基于单个列所创建的索引称为单列索引,基于两列或多列所创建的索引称为多列索引。
三、	B树索引
B树索引是Oracle数据库中最常用的一种索引。当使用CREATE INDEX语句创建索引时,默认创建的索引就是B树索引。B树索引就是一棵二叉树,它由根、分支节点和叶子节点三部分构成。叶子节点包含索引列和指向表中每个匹配行的ROWID值。叶子节点是一个双向链表,因此可以对其进行任何方面的范围扫描。
B树索引中所有叶子节点都具有相同的深度,所以不管查询条件如何,查询速度基本相同。另外,B树索引能够适应各种查询条件,包括精确查询、模糊查询和比较查询。
--创建B树索引,属于单列索引
create index idx_emp_job on emp(job)
--创建B树索引,属于复合索引
create index idx_emp_nameorsal on emp(ename,sal)
--创建唯一的B树索引,属于单列索引
create unique index idx_emp_ename on emp(ename)
--删除索引
drop index idx_emp_job
drop index idx_emp_nameorsal
drop index idx_emp_ename
--如果表已存在大量的数据,需要规划索引段
create index idx_emp_nameorsal on emp(ename,sal)
  pctfree 30 tablespace system
四、	位图索引
在B树索引中,保存的是经排序过的索引列及其对应的ROWID值。但是对于一些基数很小的列来说,这样做并不能显著提高查询的速度。所谓基数,是指某个列可能拥有的不重复值的个数。比如性别列的基数为2(只有男和女)。
因此,对于象性别、婚姻状况、政治面貌等只具有几个固定值的字段而言,如果要建立索引,应该建立位图索引,而不是默认的B树索引。
--创建位图索引,单列索引
create bitmap index idx_bm_job on emp(job)
--创建位图索引,复合索引
create bitmap index idx_bm_jobordeptno on emp(job,deptno)
--删除位图索引
drop index idx_bm_job
drop index idx_bm_jobordeptno
五、	函数索引
函数索引既可以使用B树索引,也可以使用位图索引,可以根据函数或表达式的结果的基数大小来进行选择,当函数或表达式的结果不确定时采用B树索引,当函数或表达式的结果是固定的几个值时采用位图索引。
--合并索引
alter index idx_emp_ename COALESCE
六、	并和重建索引
表在使用一段时间后,由于用户不断对其进行更新操作,而每次对表的更新必然伴随着索引的改变,因此,在索引中会产生大量的碎片,从而降低索引的使用效率。有两种方法可以清理碎片:合并索引和重建索引。
	合并索引就是将B树叶子节点中的存储碎片合并在一起,从而提高存取效率,但这种合并并不会改变索引的物理组织结构。
--创建B树类型的函数索引
create index idx_fun_emp_hiredate on emp(to_char(hiredate,'yyyy-mm-dd'))
--创建位图类型的函数索引
create index idx_fun_emp_job on emp(upper(job))
	重建索引相当于删除原来的索引,然后再创建一个新的索引,因此,CREAT INDEX语句中的选项同样适用于重建索引。如果在索引列上频繁进行UPDATE和DELETE操作,为了提高空间的利用率,应该定期重建索引。
七、	管理索引的原则
使用索引的目的是为了提高系统的效率,但同时它也会增加系统的负担,进行影响系统的性能,因为系统必须在进行DML操作后维护索引数据。
在新的SQL标准中并不推荐使用索引,而是建议在创建表的时候用主键替代。因此,为了防止使用索引后反而降低系统的性能,应该遵循一些基本的原则:
1.	小表不需要建立索引。
2.	对于大表而言,如果经常查询的记录数目少于表中总记录数目的15%时,可以创建索引。这个比例并不绝对,它与全表扫描速度成反比。
3.	对于大部分列值不重复的列可建立索引。
4.	对于基数大的列,适合建立B树索引,而对于基数小的列适合建立位图索引。
5.	对于列中有许多空值,但经常查询所有的非空值记录的列,应该建立索引。
6.	LONG和LONG RAW列不能创建索引。
7.	经常进行连接查询的列上应该创建索引。
8.	在使用CREATE INDEX语句创建查询时,将最常查询的列放在其他列前面。
9.	维护索引需要开销,特别时对表进行插入和删除操作时,因此要限制表中索引的数量。对于主要用于读的表,则索引多就有好处,但是,一个表如果经常被更改,则索引应少点。
10.	在表中插入数据后创建索引。如果在装载数据之前创建了索引,那么当插入每行时,Oracle都必须更改每个索引。
八、	ROWID和ROWNUM
1.	ROWID
rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行。rowid是存储在索引中的一组既定的值(当行确定后)。我们可以像表中普通的列一样将它选出来, 利用rowid是访问表中一行的最快方式。rowid的是基于64位编码的18个字符显示(数据对象编号(6)+文件编号(3) +块编号(6)+行编号(3)=18位)
select rowid from emp
	ROWID的使用
--快速删除重复的记录
delete from temp t where rowid not in(
       select max(rowid) from temp 
       where t.id=id and t.name=name and t.sal = sal
2.	ROWNUM
ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。
select rownum,emp.* from emp
	ROWID的使用
--取前3条记录
select * from emp where rownum<=3--方式一
select * from emp where rownum!=4--方式二
select * from emp where empno not in(
     select empno from emp where rownum<5--方式一  
) and rownum <4
第八章	PL/SQL编程
一、	介绍
PL/SQLoracle在标准sql语言上的扩展,PL/SQL不仅允许嵌入sql语言,还可以定义变量和常量,允许使用例外处理各种错误,这样使它的功能变得更加强大。
PL/SQL也是一种语言,叫做过程化sql语言(procedural language/sql),通过此语言可以实现复杂功能或者复杂的计算。
1.	提高应用程序的运行性能
2.	模块化的设计思想
3.	减少网络传输量
4.	提高安全性
1.	可移植性差
2.	违反MVC设计模式
3.	无法进行面向对象编程
4.	无法做成通用的业务逻辑框架
5.	代码可读性差,相当难维护
二、	PL/SQL基础
1.	编写规范
1)	注释
--单行注释
/*块注释*/
2)	标识符的命名规范
	定义变量:建议用v_作为前缀v_price
	定义常量:建议用c_作为前缀c_pi
	定义游标:建议用_cursor作为后缀emp_cursor
	定义例外:建议用e_作为前缀e_error
2.	块结构
PL/SQL块由三个部分组成:定义部分、执行部分、例外处理部分
Declare
定义部分(可选):定义常量、变量、游标、例外,复杂数据类型
begin
  执行部分(必须):要执行的PL/SQL语句和SQL语句
exception
/*例外部分(可选):处理运行各种错误*/
案例一	:只定义执行部分
begin
dbms_output是oracle提供的包(类似java开发包)
该包包含一些过程,put_line就是其一个过程
dbms_output.put_line('HELLO WORLD'); --控制台输出
案例二	:定义声明部分和执行部分
declare
  --声明变量
  v_name varchar2(20);
  v_sal number(7,2);
begin
  --执行查询
  select ename,sal into v_name,v_sal 
         from emp where rownum=1;
  --控制台输出
  dbms_output.put_line('用户名:' || v_name);
  dbms_output.put_line('工资:' || v_sal);
案例三	:定义声明部分、执行部分和例外部分
declare
  --声明变量
  v_name varchar2(20);
  v_sal number(7,2);
begin
  --执行查询,条件中的&表示从控制接受数据
  select ename,sal into v_name,v_sal 
         from emp where empno=&no;
  --控制台输出
  dbms_output.put_line('用户名:' || v_name);
  dbms_output.put_line('工资:' || v_sal);
exception
--例外处理(no_data_found)
  when no_data_found then
  dbms_output.put_line('执行查询没有结果');
3.	预定义例外
1)	case_not_found预定义例外
在开发pl/sql块中编写case语句时,如果在when子句中没有包含必须的条件分支,就会触发case_not_found例外。
2)	cursor_already_open预定义例外
当重新打开已经打开的游标时,会隐含的触发cursor_already_open例外。
3)	dup_val_on_index预定义例外
在唯一索引所对应的列上插入重复的值时,会隐含的触发例外
4)	invalid_cursorn预定义例外
当试图在不合法的游标上执行操作时,会触发该例外
5)	invalid_number预定义例外
当输入的数据有误时,会触发该例外
6)	no_data_found预定义例外
当执行select into没有返回行,就会触发该例外
7)	too_many_rows预定义例外
当执行select into语句时,如果返回超过了一行,则会触发该例外
8)	zero_divide预定义例外
当执行2/0语句时,则会触发该例外
9)	value_error预定义例外
当在执行赋值操作时,如果变量的长度不足以容纳实际数据,则会触发该例外value_error
10)	others
4.	变量类型分类
在编写PL/SQL时,可以定义变量和常量,常用的类型主要有:
	标量类型(scalar)
	复合类型(composite)
	参照类型(reference)
	lob(large object)
5.	标量类型:常用类型
declare
--定义一个变长字符串
v_name varchar2(20);
--定义小数,并赋值
v_sal number(7,2) :=9.8;
--定义整数
v_num number(4);
--定义日期
v_birthday date;
--定义布尔类型,不能为空,初始值为false
v_flg boolean not null default false;
--使用%type类型
v_job emp.job%type;
begin
 v_flg := true;
 v_birthday :=sysdate;
 dbms_output.put_line('当前时间:' || v_birthday);
6.	复合类型:可以存放多个值。主要包括PL/SQL记录、PL/SQL表、嵌入表和varray这四种类型
记录类型:类似于c中的结构体
declare
  --定义记录类型
  type emp_record_type is record(
       empno emp.empno%type,
       ename emp.ename%type,
       sal emp.sal%type
  --定义变量引用记录类型
  v_record emp_record_type;
begin
  --使用记录类型
  select empno,ename,sal into v_record from emp where rownum=1;
  --控制台输出
  dbms_output.put_line('雇员编号:' || v_record.empno);
  dbms_output.put_line('雇员姓名:' || v_record.ename);
  dbms_output.put_line('雇员工资:' || v_record.sal);
表类型:类似于java语言中的数组
declare
  --声明表类型
  type emp_table_type is table of varchar2(20)
  index by PLS_INTEGER;--表示表按整数来排序
  v_enames emp_table_type;--定义变量引用表类型
begin
  select ename into v_enames(0) from emp where rownum=1;
  select ename into v_enames(1) from emp where empno=7499;
  select ename into v_enames(2) from emp where empno=7698;
  dbms_output.put_line('下标0:' || v_enames(0));
  dbms_output.put_line('下标1:' || v_enames(1));
  dbms_output.put_line('下标2:' || v_enames(2));
varray类型:可变长数组
declare
  --定义varray类型
  type varray_list is varray(20) of number(4);
  --定义变量引用varray类型
  v_list varray_list:=varray_list(7369,7499,7566);
begin
  --for i in v_list.first..v_list.last
  for i in 1..v_list.count
      dbms_output.put_line(v_list(i));
  end loop;
PL/SQL集合方法
1)	exists():用于确定特定集合元素是否存在
2)	count:用于返回集合变量的元素总个数
3)	limit:用于返回varray变量所允许的最大元素个数
4)	first:用于返回集合变量中的一个元素的下标
5)	last:用于返回集合变量中最后一个元素的下标
6)	prior():返回当前元素前一个元素的下标
7)	next():返回当前元素后一个元素的下标
8)	extend:为集合变量添加元素,此方法适合用于嵌套表和varray
9)	trim:从集合变量尾部删除元素,此方法适用于嵌套表和varray
10)	delete:从集合变量中删除特定的元素,此方法适用于嵌套表和index-by表
7.	参照类型:类似c语言中的指针,oracle的游标
三、	PL/SQL控制语句
1.	条件分支语句
1)	if—then
declare
  --声明变量
  v_empno emp.empno%type;
  v_sal emp.sal%type;
begin
  --根据雇员编号查询工资
  select empno,sal into v_empno,v_sal from emp where empno=&no;
  --如果工资小于2000就加100
  if v_sal<2000
     --工资加100
     update emp set sal = sal+100 where empno=v_empno;
     commit;
  end if;
2)	if—then—else
declare
  --声明变量
  v_loginname varchar2(10);
  v_password varchar2(10);
begin
  --从控制台接收数据
  v_loginname := '&ln';
  v_password := '&pw';
  if v_loginname = 'admin' and v_password = '123456'
     dbms_output.put_line('用户登录成功!');
     dbms_output.put_line('用户登录失败!');
  end if;
3)	if—then—elsif—else
declare
  --声明变量
  v_empno emp.empno%type;
  v_job emp.job%type;
begin
  --根据雇员编号查询职位
  select empno,job into v_empno,v_job from emp where empno=&no;
  /*如果雇员所属职位是manager工资加1000
         职位是salesman工资加500
         其他职位加200
  if v_job = 'MANAGER' then
     --MANAGER职位工资加1000
     update emp set sal = sal+1000 where empno=v_empno;
  elsif v_job = 'SALESMAN' then
     --SALESMAN职位工资加500
     update emp set sal = sal+500 where empno=v_empno;
     --其他职位工资加200
     update emp set sal = sal+200 where empno=v_empno;
  end if;
  commit;
4)	case
declare
  --声明变量
  v_mark number(4);
  v_outstr varchar2(40);
begin
  --从控制台接收成绩
  v_mark := &m;
       when v_mark=90 then
       v_outstr := '优秀';
       when v_mark=80 then
       v_outstr := '良好';
       when v_mark=70 then
       v_outstr := '中等';
       when v_mark=60 then
       v_outstr := '及格';
       when v_mark=0 then
       v_outstr := '不及格';
       v_outstr := '成绩输入有误';
   end case;
   --控制台输出
   dbms_output.put_line(v_outstr);    
2.	循环语句
1)	loop
LOOP 要执行的语句; 
EXIT WHEN  /*条件满足,退出循环语句*/
END LOOP;  
其中:EXIT WHEN 子句是必须的,否则循环将无法停止。
declare
 v_num number(4):=1;
begin
  --从控制台接收数据并插入到account表中
  insert into account values(v_num,'&name');
  exit when v_num =10;
  v_num :=v_num+1;
  end loop;
2)	while
WHILE  LOOP要执行的语句;END LOOP; 
	循环语句执行的顺序是先判断的真假,如果为真则循环执行,否则退出循环 
	在WHILE循环语
serializable:
说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 
并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 
值范围: TRUE | FALSE 
默认值: FALSE
row_locking:
说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取行锁。如果设置为 INTENT,
只有行锁将用于SELECT FOR UPDATE, 但在更新时将获取表锁。 
值范围: ALWAYS | DEFAULT | INTENT 
默认值: ALWAYS
shared_servers
说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 
值范围: 根据操作系统而定。 
默认值 : 1
circuits:
说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。 
默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。
Mts_multiple_listeners:
说明: 指定多个监听程序的地址是分别指定的, 还是用一个 ADDRESS_LIST 字符串指定。如果该值为 TRUE, 
MTS_LISTENER_ADDRESS 参数可被指定为:
(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(PORT=5000)(HOST=zeus))
(ADDRESS=(PROTOCOL=decnet)(OBJECT=outa)(NODE=zeus))
此参数在 8.1.3 版中已废弃。
值范围: TRUE | FALSE
默认值: FALSE
mts_servers:
说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 
值范围: 根据操作系统而定。 
默认值 : 1
mts_service:
说明 : 一个共享服务器参数, 用于指定已在调度程序上注册, 
用来建立数据库连接的唯一服务名。如果要在没有调度程序的情况下仍能连接到数据库, 请将该值设置为与例程名相同。此参数自 
8.1.3 版起已废弃。
值范围: 根据操作系统而定。
默认值 :0
mts_sessions:
说明 : 指定允许的共享服务器体系结构用户会话的总数。设置此参数可为专用服务器保留一些用户会话。
值范围: 0 到 SESSIONS - 5 
默认值 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者中的较小值
shared_server_sessions:
说明 : 指定允许的共享服务器体系结构用户会话的总数。设置此参数可为专用服务器保留一些用户会话。
值范围: 0 到 SESSIONS - 5 
默认值 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者中的较小值
mts_max_dispatchers
说明 : 指定在一个共享服务器环境中可同时运行的调度程序进程的最大数量。
值范围: 根据操作系统而定。 
默认值 : 如果已配置了调度程序, 则默认值为大于 5 的任何数目或配置的调度程序的数目
mts_max_servers:
说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。
值范围: 根据操作系统而定。
默认值 : 20
dispatchers:
说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息, 
请参阅“Oracle8i 管理员指南”和“Oracle Net Administrator's Guide”。这是字符串值的一个示例: 
'(PROTOCOL=TCP)(DISPATCHERS=3)'。 
值范围: 参数的有效指定值。
默认值 : NULL
max_shared_servers:
说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。
值范围: 根据操作系统而定。
默认值 : 20
mts_circuits:
说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。 
默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。
Mts_listener_address:
说明 : 指定共享服务器的监听程序配置。监听程序进程需要一个监听地址, 以便处理系统所用的各个网络协议的连接请求。 除非 
MTS_MULTIPLE_LISTENERS=TRUE, 否则每个条目都必须有一个独立的相邻值。此参数自 8.1.3 版起已废弃
语法 : (ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=7002))
默认值 : NULL
mts_dispatchers:
说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息, 
请参阅“Oracle8i 管理员指南”和“Oracle Net Administrator's Guide”。这是字符串值的一个示例: '(PROTOCOL=TCP)(DISPATCHERS=3)'。 
值范围: 参数的有效指定值。
默认值 : NULL
max_dispatchers:
说明 : 指定在一个共享服务器环境中可同时运行的调度程序进程的最大数量。
值范围: 根据操作系统而定。 
默认值 : 如果已配置了调度程序, 则默认值为大于 5 的任何数目或配置的调度程序的数目
nls_nchar_conv_excp:
说明: (如果值为 TRUE) 当在隐式转换中丢失数据时返回错误的参数。
值范围: FALSE | TRUE 
默认值: TRUE
nls_numeric_characters:
说明: 指定将用作组分隔符和小数位的字符。组分隔符就是用来分隔整数位组 (如千, 百万等等) 的字符。小数分隔符用来将一个数字的整数部分与小数部分分隔开。其格式是 
<decimal_character><group_separator>。 
值范围: 任何单字节字符, '+', '-', '<', '>' 除外。
默认值: 从 NLS_TERRITORY 中获得
nls_sort:
说明: 指定 ORDER BY 查询的比较顺序。对于二进制排序, ORDER BY 查询的比较顺序是以数值为基础的。对于语言排序,
则需要进行全表扫描, 以便将数据按照所定义的语言排序进行整理。 
值范围: BINARY 或有效的语言定义名。 
默认值: 从 NLS_LANGUAGE 中获得
nls_territory:
说明: 为以下各项指定命名约定, 包括日期和星期的编号, 默认日期格式, 默认小数点字符和组分隔符, 以及默认的 ISO 和本地货币符号。可支持的区域包括美国, 法国和日本。有关所有区域的信息, 请参阅 Oracle8i National Language Support Guide。 
值范围: 任何有效的地区名。 
默认值: 根据操作系统而定
nls_timestamp_format:
说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认值, 该数据类型既存储YEAR, MONTH 和 DAY 这几个日期值, 也存储 HOUR, MINUTE 和 SECOND 这几个时间值。 
语法: TIMESTAMP '1997-01-31 09:26:50.10' (将值存储为 11 个字节)。 
默认值: 从 NLS_TERRITORY 中获得
nls_time_format:
说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 
语法: TIME '09:26:50' (将值存储为 7 个字节)。 
默认值: 从 NLS_TERRITORY 中获得
nls_time_tz_format:
说明: 指定一对值 (UTC,TZD), 设置 TIME WITH TIME ZONE 数据类型的默认值, 该数据类型包含 HOUR, MINUTE, SECOND, TIMEZONE_HOUR 和 TIMEZONE_MINUTE 这几个日期时间字段。UTC 是世界时而 TZD 是当地时区。 
语法: TIME '09:26:50.20+ 02:00' (将值存储为 9 个字节)。 
默认值: 从 NLS_TERRITORY 中获得
nls_length_semantics:
说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2, nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时, 应以该字符集所定义的字符来衡量字符串。现有的列将不受影响。
值范围: BYTE 或 CHAR。
默认值: nls_length_semantics 的数据库字符集的字符所使用的度量单位。BYTE。
nls_date_format:
说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY 确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 
值范围: 任何有效的日期格式掩码, 但不得超过一个固定长度。 
默认值: 派生
nls_timestamp_tz_format:
说明: 与 NLS_TIME_TZ_FORMAT 相似, 其中的一对值指定 TIMESTAMP 数据类型的默认值, 该类型除存储 YEAR, MONTH 和 DAY 日期值, HOUR, MINUTE 和 SECOND 时间值, 还存储 TIMEZONE_HOUR 和 TIMEZONE_MINUTE。 
语法: TIMESTAMP '1997- 01- 31 09:26:50+ 02:00' (将值存储为 13 个字节)。 
默认值: 从 NLS_TERRITORY 中获得
nls_language:
说明: 指定数据库的默认语言, 该语言将用于消息, 日期和月份名, AD, BC, AM 和 PM 的符号, 以及默认的排序机制。可支持的语言包括英语, 法语和日语等等。 
值范围: 任何有效的语言名。 
默认值: 根据操作系统而定
nls_comp:
说明: 在 SQL 语句中, 应避免使用繁琐的 NLS_SORT 进程。正常情况下, WHERE 子句中进行的比较是二进制的, 但语言比较则需要 NLSSORT 函数。可以使用 NLS_COMP 指定必须根据NLS_SORT 会话参数进行语言比较。 
值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 
默认值: BINARY 
nls_currency:
说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认值由 NLS_TERRITORY 确定。 
值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 
默认值: 从 NLS_TERRITORY 中获得
nls_date_language:
说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。该参数的默认值是由 NLS_LANGUAGE指定的语言。 
值范围: 任何有效的 NLS_LANGUAGE 值。 
默认值: NLS_LANGUAGE 的值
nls_dual_currency:
说明: 用于覆盖 NLS_TERRITORY 中定义的默认双重货币符号。如果不设置该参数, 就会使用默认的双重货币符号; 否则就会启动一个值为双重货币符号的新会话。 
值范围: 任何有效的格式名。。 
默认值: 双重货币符号
nls_iso_currency:
说明: 为 C 数字格式元素指定用作国际货币符号的字符串。该参数的默认值由 NLS_TERRITORY 确定。 
值范围: 任何有效的 NLS_TERRITORY 值。 
默认值: 从 NLS_TERRITORY 中获得
nls_calendar:
说明: 指定 Oracle 使用哪种日历系统作为日期格式。例如, 如果 NLS_CALENDAR 设置为 'Japanese Imperial', 那么日期格式为 'E YY-MM-DD'。即: 如果日期是 1997 年 5 月 15 日, 那么 SYSDATE 显示为 'H 09-05-15'。 
值范围: Arabic Hijrah, English Hijrah, Gregorian, Japanese Imperial, Persian, ROC Official (Republic of China) 和 Thai Buddha。 
默认值: Gregorian
plsql_native_c_compiler:
说明: 指定用于将生成的 C 文件编译为目标文件的 C 编译程序的完整路径名。此参数是可选的。随每个平台附带的特有的 make 
文件中包含此参数的默认值。如果为此参数指定了一个值, 则该值将覆盖 make 文件中的默认值。
值范围: C 编译程序的完整路径。
默认值: 无
remote_dependencies_mode:
说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP, 只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE, 在签名安全的情况下即可执行该过程。 
值范围: TIMESTAMP | SIGNATURE 
默认值: TIMESTAMP
utl_file_dir:
说明: 允许数据库管理员指定 PL/SQL 文件 I/O 许可的目录。使用多个 UTL_FILE_DIR 参数即可指定多个目录。请注意所有用户均可读取或写入 UTL_FILE_DIR 参数中指定的所有文件。 
值范围: 任何有效的目录路径。 
默认值: 无
plsql_v2_compatibility:
说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为; 否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。 
值范围: TRUE | FALSE 
默认值: FALSE
plsql_native_make_utility:
说明: 指定 make 实用程序 (如 UNIX 中的 make 或 gmake, 即 GNU make) 的完整路径名。要从生成的 C 源中生成共享对象或 DLL, 需要使用 make 实用程序。
值范围: make 实用程序的完整路径名。
默认值: 无
plsql_native_library_dir:
说明: 由 PL/SQL 编译程序使用。它指定目录名, 其中存储了本机编译程序生成的共享对象。
范围值: 目录名。
默认值: 无
plsql_compiler_flags:
说明: 由 PL/SQL 编译程序使用。它将编译程序标志列表指定为一个用逗号分隔的字符串列表。
值范围: native (PL/SQL 模块将按本机代码来编译。), interpreted (然后 PL/SQL 模块将被编译为 PL/SQL 字节代码格式), debug (PL/SQL 模块将用探测调试符号来编译), non_debug。
默认值: " interpreted, non_debug "
plsql_native_linker:
说明: 此参数指定链接程序 (如: UNIX 中的 ld, 或用于将目标文件链接到共享对象或 DLL 的 GNU ld) 的完整路径名。此参数是可选的。随每个平台附带的特有的 make 文件中包含此参数的默认值。如果为此参数指定了一个值, 则该值将覆盖 make 文件中的默认值。
值范围: 链接程序的完整路径名。
默认值: 无
plsql_native_make_file_name:
说明: 指定 make 文件的完整路径名。make 实用程序 (由 PLSQL_NATIVE_MAKE_UTILITY 指定) 使用此 make 文件生成共享对象或 DLL。每个平台附带有端口专用的 make 文件, 该文件包含使用 make 
实用程序在该平台上生成 DLL 时要遵循的规则。
值范围: make 文件的完整路径名。
默认值: 无
plsql_v2_compatibility:
说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为; 否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。 
值范围: TRUE | FALSE 
默认值: FALSE
remote_dependencies_mode:
说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP, 
只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE, 在签名安全的情况下即可执行该过程。 
值范围: TIMESTAMP | SIGNATURE 
默认值: TIMESTAMP
shared_memory_address:
说明: SHARED_MEMORY_ADDRESS 和 HI_SHARED_MEMORY_ADDRESS 指定运行时 SGA 的起始地址。许多平台在链接时间指定 SGA 起始地址, 在这类平台上这些参数将被忽略。如果两个参数都设置为 0 或 NULL, 那么地址将根据平台而定。 
值范围: 任何整数值。 
默认值: 0
lock_sga:
说明: 用于将整个 SGA 锁定在物理内存中。在不支持这种功能的平台上, 该值将被忽略。
值范围: TRUE | FALSE 
默认值: FALSE
hi_shared_memory_address:
说明: 指定系统全局区 (SGA) 的运行时起始地址。在指定 SGA 连接时起始地址的平台上, 该值被忽略。在 64 位平台上, 请使用该值来指定高 32 位和低 32 位。如果不指定该值, 默认值是平台指定的位置。 
值范围: 任何整数值。 
默认值: 0
pre_page_sga:
说明: 一个根据平台而定的参数, 如果该参数为 TRUE, 将把所有 SGA 页装载到内存中, 以便使该例程迅速达到最佳性能状态。这将增加例程启动和用户登录的时间, 但在内存充足的系统上能减少缺页故障的出现。 
值范围: TRUE | FALSE 
默认值: FALSE
sga_max_size:
说明: 指定例程存活期间所占用的系统全局区的最大大小。
值范围: 0 到各操作系统所允许的最大值。请注意, 由于该参数值的最小值在启动时已经调整完毕, 因而它无关紧要。
默认值: 如果未指定值, sga_max_size 的默认值将与启动时 SGA 的最初大小 (比如说 X) 相同。该大小取决于 SGA 中各种池的大小, 如缓冲区高速缓存, 共享池, 大型池等。如果指定的值小于 X, 则所使用的 sga_max_size 的值将为 X。也就是说, 它是 X 与用户指定的 sga_max_size 值两者之间的较大值。
Fast_start_parallel_rollback:
说明: 执行并行回退时确定进程的最大数量。在多数事务处理的运行时间都较长的系统上, 该值很有用。 
值范围: FALSE | LOW | HIGH 
默认值: LOW (2 * CPU_COUNT)
transaction_auditing:
说明: 确定事务处理层是否生成一个特殊的重做记录, 其中包含用户登录名, 用户名, 会话 ID, 部分操作系统信息以及客户机信息。在使用某一重做日志分析工具时, 这些记录可能很有用。 
值范围: TRUE | FALSE 
默认值: TRUE
transactions:
说明: 指定并行事务处理的最大数量。如果将该值设置得较大, 将增加 SGA 的大小, 
并可增加例程启动过程中分配的回退段的数量。默认值大于 SESSIONS, 以实现递归事务处理。 
值范围: 一个数值。 
默认值: 派生 (1.1 * SESSIONS)
enqueue_resources:
说明: 入队可使并行进程能够共享资源。例如, Oracle 允许一个进程以共享模式锁定一个表, 以共享更新模式锁定另一个表。 
值范围: 10 - 65535 (7.3) 或 10 - 无限制 (8.1)。 
默认值: 派生 (该值大于 DML_LOCKS + 20 即已足够)
dml_locks:
说明: 所有用户获取的表锁的最大数量。对每个表执行 DML 操作均需要一个 DML 锁。例如, 如果 3 个用户修改 2 个表, 就要求该值为 6。 
值范围: 0 或 20 到无限制。 
默认值: 4 * TRANSACTIONS (派生)
hash_join_enabled:
说明: 如果设置为 TRUE, 优化程序将在计算最有效的联接方法时考虑散列联接。Oracle 建议数据仓库应用程序应使用 TRUE值。 
值范围: TRUE | FALSE 
默认值: TRUE
optimizer_features_enable:
说明: 允许更改 init.ora 参数, 该参数控制着优化程序的行为。受此影响的参数包括 PUSH_JOIN_PREDICATE,
FAST_FULL_SCAN_ENABLED, COMPLEX_VIEW_MERGING 和 
B_TREE_BITMAP_PLANS。 
值范围: 8.0.0; 8.0.3; 8.0.4; 8.1.3。 
默认值: 8.0.0
query_rewrite_integrity:
说明: Oracle Server 执行的查询重写的程度。如果设置为 ENFORCED, Oracle 
将保证其一致性和完整性。如果设置为 TRUSTED, 将使用明确声明的关系来允许重写。如果设置为 
STALE_TOLERATED, 即使实体化视图与基础数据不一致, 也仍可以进行重写。 
值范围: ENFORCED, TRUSTED, STALE_TOLERATED 
默认值: ENFORCED
query_rewrite_enabled
说明: 启用或禁用对实体化视图的查询重写。一个特定实体化视图只在如下条件下启用: 会话参数和单独实体化视图均已启用, 
并且基于成本的优化已启用。 
值范围: TRUE | FALSE 
默认值: FALSE
partition_view_enabled:
说明: 如果将 PARTITION_VIEW_ENABLED 设置为 TRUE, 该优化程序将剪除 (或跳过) 
分区视图中不必要的表访问。该参数还能更改基于成本的优化程序从基础表统计信息计算分区视图统计信息的方式。 
值范围: TRUE | FALSE 
默认值: FALSE
optimizer_max_permutations:
说明: 对带有大量联接的查询进行语法分析时, 
优化程序将会考虑限制表的交换数。这有助于确保对查询进行语法分析的时间保持在可接受的限制范围内, 
但代价是无法找到最佳计划。如果该值小于 1000, 就应该可以确保每次查询的时间仅为几秒钟或更短。 
值范围: 4-2^32 (~4.3 G)。 
默认值: 80,000
optimizer_index_cost_adj:
说明: 在考虑太多或太少索引访问路径的情况下, 可以用来优化优化程序的性能。该值越低, 优化程序越容易选择一个索引。也就是说, 
如果将该值设置为 50%, 索引访问路径的成本就是正常情况下的一半。 
值范围: 1 -10000 
默认值: 100 (一个索引访问路径的常规成本)
star_transformation_enabled:
说明: 确定基于成本的查询转换是否将被应用到星型查询中。如果设置为 TRUE, 优化程序将考虑将基于成本的转换应用于星型查询中; 
如果设置为 FALSE, 将不使用任何转换; 如果设置为 TEMP_DISABLE, 将考虑查询转换, 但不使用临时表。 
值范围: TRUE | FALSE | TEMP_DISABLE 
默认值: FALSE
optimizer_mode:
说明: 指定优化程序的行为。如果设置为 RULE, 就会使用基于规则的优化程序, 除非查询含有提示。如果设置为 CHOOSE, 
就会使用基于成本的优化程序, 除非语句中的表不包含统计信息。ALL_ROWS 或 FIRST_ROWS 
始终使用基于成本的优化程序。 
值范围: RULE | CHOOSE | FIRST_ROWS | ALL_ROWS 
默认值: CHOOSE
optimizer_index_caching:
说明: 调整基于成本的优化程序的假定值, 
即在缓冲区高速缓存中期望用于嵌套循环联接的索引块的百分比。它将影响使用索引的嵌套循环联接的成本。将该参数设置为一个较高的值,
可以使嵌套循环联接相对于优化程序来说成本更低。 
值范围: 0 - 100 %。 
默认值: 0
job_queue_processes:
说明: 只用于复制环境。它指定每个例程的 SNP 作业队列进程的数量 (SNP0, ... SNP9, SNPA, ... 
SNPZ)。要自动更新表快照或执行由 DBMS_JOB 创建的请求, 请将该参数设置为 1 或更大的值。 
值范围: 0 到 36 
默认值: 0
max_transaction_branches:
说明: 控制分布式事务处理中分支的数量。将 MAX_TRANSACTION_BRANCHES 设置为较低的值, 可以根据 
MAX_TRANSACTION_BRANCHES * DISTRIBUTED_TRANSACTIONS * 72 字节, 
略微减少共享池的空间量。此参数在 8.1.3 版中已废弃。
值范围: 1 - 32 
默认值: 8
compatible:
说明: 允许您使用一个新的发行版, 同时保证与先前版本的向后兼容性。 
值范围: 默认为当前发行版。 
默认值: 由发行版确定
archive_lag_target:
说明: 此参数与基于时间的线程高级功能相关联。
值范围: 0 或 [60, 7200] 中的任意整数。
默认值: 0 为默认值, 此时将禁用基于时间的线程高级功能。否则, 值将代表秒数
aq_tm_processes:
说明: 如果大于零, 就会启用对队列消息的时间监视。该时间值可用于指定消息的延迟和失效属性 (用于应用程序的开发)。 
值范围: 0 - 10 
默认值: 0
tracefile_identifier:
spfile:
说明: 指定当前使用的服务器参数文件的名称。
值范围: 静态参数 
默认值: SPFILE 参数可在客户端 PFILE 中定义, 以指明要使用的服务器参数文件的名称。服务器使用默认服务器参数文件时, SPFILE 的值要由服务器在内部设置。
Logmnr_max_persistent_sessions:
Standby_file_management:
Trace_enabled:
Ifile:
说明: 用于在当前参数文件中嵌入其他参数文件。您可以在一个参数文件的多个行上多次使用该参数, 但最多只能有三级嵌套。 
值范围: 任何有效的参数文件名 (语法是 IFILE = parameter_file_name)。 
默认值: NULL
remote_listener:
global_context_pool_size:
说明: 从 SGA 分配的用于存储和管理全局应用程序环境的内存量。
值范围: 任意整数值。
默认值: 1 M
plsql_native_library_subdir_count:
fixed_date:
说明: SYSDATE 返回的数据。对于必须始终返回固定日期而非系统日期的测试, 
该值很有用。使用双引号或不使用引号。请勿使用单引号。 
值范围: YYYY-MM-DD-HH24:MI:SS (或默认的 Oracle 日期格式)。 
默认值: NULL
db_name:
说明: 一个数据库标识符, 应与 
CREATE DATABASE 语句中指定的名称相对应。 
值范围: 任何有效名称最多可有 8 个字符。 
默认值: 无 (但应指定)
cluster_database:
cluster_interconnects:
cluster_database_instances:
sql_version:
replication_dependency_tracking:
说明: 跟踪相关性对复制服务器以并行方式传播所作的更改至关重要。如果设置为 FALSE, 数据库上的读/写操作将运行得更快, 
但无法为复制服务器产生并行传播的相关性信息。 
值范围: TRUE | FALSE 
默认值: TRUE (即启用读/写相关性跟踪)
remote_os_roles:
说明: 将 REMOTE_OS_ROLES 设置为 TRUE, 允许由远程客户机的操作系统来分配角色。如果设置为 FALSE, 
则由远程客户机的数据库来识别和管理角色。 
值范围: TRUE | FALSE 
默认值: FALSE
remote_os_authent:
说明: 将 REMOTE_OS_AUTHENT 设置为 TRUE, 允许使用 OS_AUTHENT_PREFIX 
的值来验证远程客户机。 
值范围: TRUE | FALSE 
默认值: FALSE
open_links:
说明: 指定在一次会话中同时打开的与远程数据库的连接的最大数量。该值应等于或超过一个引用多个数据库的单个 SQL 
语句中引用的数据库的数量, 这样才能打开所有数据库以便执行该语句。 
值范围: 0 - 255 (如果为 0, 不允许分布式事务处理)。 
默认值: 4
open_links_per_instance:
说明: 指定 XA 应用程序中可移植的打开连接的最大数量。XA 事务处理使用可移植的打开的连接, 
以便在提交一个事务处理后能将这些连接高速缓存。如果创建连接的用户就是拥有事务处理的用户, 各事务处理则可共享连接。 
值范围: 0 - UB4MAXVAL 
默认值: 4
remote_login_passwordfile:
说明: 指定操作系统或一个文件是否检查具有权限的用户的口令。如果设置为 NONE, Oracle 将忽略口令文件。如果设置为 
EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进行验证。如果设置为 SHARED, 多个数据库将共享 
SYS 和 INTERNAL 口令文件用户。 
值范围:NONE | SHARED | EXCLUSIVE 
默认值: NONE
hs_autoregister:
说明: 启用或禁用“异构服务 (HS)”代理的自动自注册。如果启用, 信息将被上载到数据字典中, 
以便在通过同一代理建立后续连接时降低开销。 
值范围: TRUE | FALSE 
默认值: TRUE
global_names:
说明: 指定是否要求数据库链接与所连接的数据库同名。如果该值为 FALSE, 则不执行检查。要使分布式处理中的命名约定一致, 
请将该参数设置为 TRUE。 
值范围: TRUE | FALSE 
默认值: TRUE
distributed_transactions:
说明: 一个数据库一次可参与的分布式事务处理的最大数量。如果由于网络故障异常频繁而减少该值, 将造成大量未决事务处理。 
值范围: 0 - TRANSACTIONS 参数值。 
默认值: 根据操作系统而定
commit_point_strength:
说明: 一个用于确定分布式事务处理中提交点的位置的值。 
值范围: 0 -255 
默认值: 根据操作系统而定
db_domain:
说明: 指定数据库名的扩展名 (例如:US.ORACLE.COM) 为使一个域中创建的数据库名唯一, 建议指定该值。 
值范围: 由句点分隔的任何字符串, 最长可以有 128 个字符。 
默认值: WORLD
dblink_encrypt_login:
说明: 在连接到其他 Oracle Server 时, 数据库链接是否使用加密口令。 
值范围: TRUE | FALSE 
默认值: FALSE
backup_tape_io_slaves:
说明: 一个恢复管理器参数, 用于确定读取或写入磁带是否要使用服务器进程或一个附加的 I/O 从属。 
值范围: TRUE | FALSE 
默认值: FALSE
tape_asynch_io:
说明: 用于控制对顺序设备的 I/O 操作 (例如, 将 Oracle 数据备份或复原到磁带上, 或从磁带上备份或复原 
Oracle 数据) 是否异步。只有在您的平台支持对顺序设备的异步 I/O 操作的情况下, 将该值设置为 TRUE 
才有效; 如果异步 I/O 的执行情况不稳定, 请将该值设置为 FALSE。 
值范围: TRUE | FALSE 
默认值: FALSE
log_file_name_convert:
说明: 将主数据库上的一个日志文件的文件名转换为备用数据库上对等的路径和文件名。将一个日志文件添加到一个主数据库后, 
必须将一个相应的文件添加到备用数据库中。该参数替代 Oracle7 中的 LOG_FILE_NAME_CONVERT 
值范围: 任何格式为 ''主体日志文件的路径/文件名'' 和 ''备用日志文件的路径/文件名'' 的有效路径/文件名
默认值: NULL
fal_server:
说明: 指定此备用数据库的 FAL 服务器。该值是一个 Oracle Net 服务名。此 Oracle Net 
服务名被假定为已在备用数据库系统上正确配置, 可指向期望的 FAL 服务器。
值范围: Oracle Net 服务名的字符串值。
Fal_client:
说明: 指定供 FAL 服务 (通过 FAL_SERVER 参数配置) 来引用 FAL 客户机的 FAL 
客户机名称。该参数的值是一个 Oracle Net 服务名。此 Oracle Net 服务名被假定为已在 FAL 
服务器系统上正确配置, 可指向 FAL 客户机 (即: 此备用数据库)。
值范围: Oracle Net 服务名的字符串值。
Drs_start:
说明: 使 Oracle 可以确定是否应启动 DRMON 进程。DRMON 是一种不会导致致命错误的 Oracle 后台进程, 
只要例程存在, 该进程就存在。
值范围: TRUE | FALSE。
默认值: FALSE
remote_archive_enable:
说明: 控制是否可向远程目标执行重做日志文件归档操作。必须将该参数值设置为 "TRUE", 以便 Oracle 
数据库例程对重做日志文件进行远程归档, 并且/或者接收远程归档的重做日志文件。
值范围: FALSE | TRUE 
默认值: TRUE
standby_preserves_names:
说明: 表明备用数据库上的文件名是否与主数据库上的文件名相同。
值范围: TRUE 或 FALSE。注: 如果将值设置为 True, 且备用数据库与主数据库位于同一系统上, 则主数据库文件可能被覆盖。
默认值: FALSE。
Standby_archive_dest:
说明: 指定来自一个主例程的归档日志的到达位置。STANDBY_ARCHIVE_DEST 和 LOG_ARCHIVE_FORMAT
用于在备用位置上虚拟完全合格的归档日志文件名。备用数据库上的 RFS 服务器将使用该值, 而不是 
ARCHIVE_LOG_DEST。 
值范围: NULL 字符串或非 RAW 类型的有效路径/设备名。 
默认值: NULL
db_file_name_convert:
说明: 将主数据库上的一个新数据文件的文件名转换为备用数据库上的文件名。 
值范围: 一个有效的主/备用目录和文件名对。 
默认值: 无
max_enable_roles:
说明: 指定一个用户可以启用的数据库角色 (包括子角色) 的最大数量。用户可启用的角色的实际数量是 2 加上 
MAX_ENABLED_ROLES 的值, 因为每个用户都有两个附加的角色: PUBLIC 和用户自己的角色。 
值范围: 0 -148 
默认值: 20
O7_DICTIONARY_ACCESSIBILITY:
说明: 主要用于从 Oracle7 移植到 Oracle8i。如果该值为 TRUE, SYSTEM 权限 (如 
SELECT ANY TABLE) 将不限制对 SYS 方案中各对象的访问 (Oracle7 行为)。如果该值为 
FALSE, 只有被授予了 SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE 或 
DELETE_CATALOG_ROLE 权限的用户才能访问 SYS 方案中的各对象。 
值范围: TRUE | FALSE 
默认值: TRUE
sql92_security:
说明: 指定要执行一个更新或删除引用表列的值是否需要具有表级的 
SELECT 权限。 
值范围: TRUE | FALSE 
默认值: FALSE
audit_trail:
说明: 启用或禁用数据库审计。如果该参数为 TRUE 或 DB, 审计记录将被写入 SYS.AUD$ 表中; 如果参数为 OS, 
则写入一个操作系统文件。
值范围: NONE | FALSE | DB | TRUE | OS
默认值: NONE
rdbms_server_dn:
说明: RDBMS 服务器的唯一判别名。它用于在一个企业目录服务中检索企业角色。有关详细信息, 请参阅“Oracle 
Advanced Security Administrator's Guide”。 
值范围: 所有 X.500 唯一判别名格式值。 
默认值: 无
os_roles:
说明: 确定操作系统或数据库是否为每个用户标识角色。如果设置为 TRUE, 将由操作系统完全管理对所有数据库用户的角色授予。否则,
角色将由数据库标识和管理。 
值范围: TRUE | FALSE 
默认值: FALSE
os_authent_prefix:
说明: 使用用户的操作系统帐户名和口令来验证连接到服务器的用户。该参数的值与各用户的操作系统帐户连接在一起。要去除 OS 帐户前缀,
请指定空值。 
值范围: 任何标识符。 
默认值: 根据操作系统而定 (通常是 'OPS$')
object_cache_max_size_percent:
说明: 指定会话对象的高速缓存增长可超过最佳高速缓存大小的百分比, 
最大大小等于最佳大小加上该百分比与最佳大小的乘积。如果高速缓存大小超过了这个最大大小, 
系统就会尝试将高速缓存缩小到最佳大小。 
值范围: 0% 到根据操作系统而定的最大值。 
默认值: 10%
object_cache_optimal_size:
说明: 指定在高速缓存超过最大大小的情况下, 会话对象高速缓存将被缩小到的大小。 
值范围: 10K 到根据操作系统而定的最大值。 
默认值: 100K
session_max_open_files:
说明: 指定可在任一给定会话中打开的 BFILE 的最大数量。一旦达到这个数量, 
此后将无法在该会话中打开更多文件。该参数还取决于操作系统参数 MAX_OPEN_FILES。 
值范围: 1 - 至少为 (50, OS 级上的 MAX_OPEN_FILES)。 
默认值: 10
parallel_execution_message_size:
说明: 指定并行执行 (并行查询, PDML, 并行恢复和复制) 消息的大小。如果值大于 2048 或 4096, 
就需要更大的共享池。如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 
将在大存储池之外指定消息缓冲区。 
值范围: 2148 - 无穷大。 
默认值: 如果 PARALLEL_AUTOMATIC_TUNING 为 FALSE, 通常值为 2148; 如果 PARALLEL_AUTOMATIC_TUNING 为 TRUE , 则值为 4096 (根据操作系统而定)。
Paralle_min_percent:
说明: 指定并行执行要求的线程的最小百分比。设置该参数, 可以确保并行执行在没有可用的恰当查询从属进程时, 会显示一个错误消息, 
并且该查询会因此而不予执行。 
值范围: 0 -100 
默认值: 0, 表示不使用该参数。
Parallel_automatic_tuning:
说明: 如果设置为 TRUE, Oracle 将为控制并行执行的参数确定默认值。除了设置该参数外, 
你还必须为系统中的表设置并行性。 
值范围: TRUE | FALSE 
默认值: FALSE
parallel_threads_per_cpu:
说明: 说明一个 CPU 在并行执行过程中可处理的进程或线程的数量, 
并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数值。 
值范围: 任何非零值。 
默认值: 根据操作系统而定 (通常为 2)
parallel_broadcast_enabled:
说明 : 通过使用一个散列联接或合并联接, 可以在将多个大结果集联接到一个小结果集 (以字节而不是行为单位来衡量大小) 
时改善性能。如果该值设置为 TRUE, 优化程序可以将小结果集内的每个行都传播到大型集内的每个集群数据库处理行中。
值范围: TRUE | FALSE 
默认值 : FALSE
parallel_adaptive_multi_user:
说明: 启用或禁用一个自适应算法, 旨在提高使用并行执行方式的多用户环境的性能。通过按系统负荷自动降低请求的并行度, 
在启动查询时实现此功能。当 PARALLEL_AUTOMATIC_TUNING = TRUE 时, 其效果最佳。 
值范围: TRUE | FALSE 
默认值: 如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 则该值为 TRUE; 否则为 FALSE
parallel_max_servers:
说明: 指定一个例程的并行执行服务器或并行恢复进程的最大数量。如果需要, 例程启动时分配的查询服务器的数量将增加到该数量。 
值范围: 0 -256 
默认值: 由 CPU_COUNT, PARALLEL_AUTOMATIC_TUNING 和 PARALLEL_ADAPTIVE_MULTI_USER 确定
parallel_min_servers
说明: 指定为并行执行启动例程后, Oracle 创建的查询服务器进程的最小数量。 
值范围: 0 - PARALLEL_MAX_SERVERS。 
默认值: 0
log_archive_dest_state_3:
说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_3) 的可用性状态。如果启用, 
日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 
值范围: ENABLE | DEFER 
默认值: ENABLE
log_archive_dest_state_4:
说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_4) 的可用性状态。如果启用, 
日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 
值范围: ENABLE | DEFER 
默认值: ENABLE
log_archive_dest_state_5:
说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_5) 的可用性状态。如果启用, 
日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 
值范围: ENABLE | DEFER 
默认值: ENABLE
log_archive_dest_state_6:
说明: 标识特定日志归档目标的最近的用户定义状态。
值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。
log_archive_dest_state_7:
说明: 标识特定日志归档目标的最近的用户定义状态。
值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。
log_archive_dest_state_8:
说明: 标识特定日志归档目标的最近的用户定义状态。
值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。
log_archive_dest_state_9:
说明: 标识特定日志归档目标的最近的用户定义状态。
值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。
Log_archive_start:
说明: n只在数据库处于“归档日志”模式的情况下适用。它指定重做日志是自动还是手动复制。建议值是 TRUE, 即执行自动归档; 
否则就需要手动干预, 使用 
ALTER SYSTEM ARCHIVE LOG ... 命令来阻止例程挂起。 
值范围: TRUE | FALSE 
默认值: FALSE
log_archive_duplex_dest:
说明: 指定 LOG_ARCHIVE_DEST 外的另一个归档目标。在 Oracle8i 企业版中, 该参数被 
LOG_ARCHIVE_DEST_n 代替。 
值范围: 一个 NULL 字符串, 或者任何有效的路径或设备名, 原始分区除外。 
默认值: NULL
log_archive_format:
说明: LOG_ARCHIVE_FORMAT 只在数据库处于“归档日志”模式的情况下有用。文本字符串与变量 %s (日志序列号) 
和 %t (线程号) 结合使用, 用于指定各归档重做日志文件的唯一文件名。该字符串被附加到 
LOG_ARCHIVE_DEST 参数。 
值范围: 任何有效的文件名。 
默认值: 根据操作系统而定
log_archive_max_processes:
说明: 指定要求的 ARCH 进程的数量。如果 LOG_ARCHIVE_START = TRUE, 该值可以在例程启动时被评估; 
也可以在通过 SQL*Plus 或 SQL 语法调用 ARCH 进程时评估。 
值范围: 1 - 10 (包括端点) 的任何整数。 
默认值: 1
log_archive_dest_2:
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第二个, 
归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
log_archive_min_succeed_dest:
说明: 定义在可以覆盖日志文件前必须将其复制到的目标的最小数量。该值应大于或等于 LOG_ARCHIVE_DEST_n 中 
MANDATORY 目标的数量。 
值范围: 1 - 5 (如果与 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 共同使用, 则限制在 1-2)。 
默认值: 1
log_archive_trace:
说明: 控制归档日志进程生成的输出。此进程可以通过下列方式启动
ARCn 后台进程 (在输出日志中指定为 ARCn)
明确的会话调用的前台进程 (在输出日志中指定为 ARCH) 或
“受管备用数据库”的远程文件服务器 (RFS) 进程。
0: 禁用归档日志跟踪 (这是默认设置)
1: 重做日志文件的追踪归档
2: 每个归档日志目标的追踪归档状态
4: 追踪归档操作阶段
8: 追踪归档日志目标活动
16: 追踪详细的归档日志目标活动
32: 追踪归档日志目标参数修改
64: 追踪 ARCn 进程状态活动
默认值: 0
log_archive_dest_10:
log_archive_dest_3:
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第三个, 
归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
log_archive_dest:
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第三个, 
归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
log_archive_dest_state_2:
说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_2) 的可用性状态。如果启用, 
日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 
值范围: ENABLE | DEFER 
默认值: ENABLE
log_archive_dest_5:
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第五个, 
归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
log_archive_dest_6:
log_archive_dest_1:
log_archive_dest_8:
log_archive_dest_9:
log_archive_dest_state_1:
说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_1) 的可用性状态。如果启用, 
日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 
值范围: ENABLE | DEFER 
默认值: ENABLE
log_archive_dest_state_10
说明: 指定归档日志的目标。
值范围: 本地文件系统位置 (磁盘位置) 或通过 Oracle Net 服务名 (tns 服务) 指定的远程归档位置。:
log_archive_dest_4:
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第四个, 
归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
create_bitmap_area_size:
说明: CREATE_BITMAP_AREA_SIZE 指定为创建位图索引而分配的内存量。 
值范围: 根据操作系统而定。 
默认值: 8 MB
pga_aggregate_target:
说明: 指定连接到例程的所有服务器进程的目标 PGA 总内存。请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在
SGA 中。数据库将此参数值用作它所使用的目标 PGA 内存量。设置此参数时, 要将 SGA 从可用于 Oracle 
例程的系统内存总量中减去。然后可将剩余内存量分配给 pga_aggregate_target。
值范围: 整数加字母 K, M 或 G, 以将此限值指定为千字节, 兆字节或千兆字节。最小值为 10M, 最大值为 4000G 
默认值: "未指定", 表示完全禁用对工作区的自动优化。
Sort_area_size:
说明: SORT_AREA_SIZE 以字节为单位, 指定排序所使用的最大内存量。排序完成后, 各行将返回, 
并且内存将释放。增大该值可以提高大型排序的效率。如果超过了该内存量, 将使用临时磁盘段。 
值范围: 相当于 6 个数据库块的值 (最小值) 到操作系统确定的值 (最大值)。 
默认值: 根据操作系统而定
sort_area_retained_size
说明: 以字节为单位, 指定在一个排序运行完毕后保留的用户全局区 (UGA) 内存量的最大值。最后一行从排序空间中被提取后, 
该内存将被释放回 UGA, 而不是释放给操作系统。 
值范围: 从相当于两个数据库块的值到 SORT_AREA_SIZE 的值。 
默认值: SORT_AREA_SIZE 的值
bitmap_merge_area_size:
说明: 指定合并从对索引的某一范围进行扫描而检索得到的位图要使用的内存量。 
值范围: 根据系统而定。 
默认值: 1MB
workarea_size_policy:
说明: 指定调整工作区大小的策略。此参数控制优化工作区时所处的模式。
值范围: AUTO, MANUAL。
默认值: 如果设置了 PGA_AGGREGATE_TARGET, 则为 AUTO; 否则为 MANUAL。
Hash_area_size:
说明: 与并行执行操作和 DML 或 DDL 语句相关。它以字节为单位, 指定要用于散列联接的最大内存量。有关详细信息, 
请参阅手册 Oracle8i Concepts。 
值范围: 0 到根据操作系统而定的值。 
默认值: 派生:2 * SORT_AREA_SIZE 参数值
db_create_online_log_dest_4:
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
db_create_online_log_dest_3:
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
Db_files:
说明: 可为该数据库打开的数据文件的最大数量。 
值范围: MAXDATAFILES - 根据操作系统而定。 
默认值: 根据操作系统而定 (在 Solaris 系统上为 200)
db_create_online_log_dest_2:
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
db_create_online_log_dest_1:
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
Db_create_file_dest:
说明: 设置所创建的数据文件, 控制文件和联机日志的默认位置。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
Control_files:
说明: 指定一个或多个控制文件名。Oracle 建议对于不同设备或 OS 文件镜象使用多个文件。 
值范围: 1 - 8 文件名 (带路径名)。 
默认值: 根据操作系统而定
db_create_online_log_dest_5:
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
Large_pool_size:
说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作会话内存, 用作并行执行的消息缓冲区以及用作 RMAN 
备份和恢复的磁盘 I/O 缓冲区。
值范围: 600K (最小值); >= 20000M (最大值是根据操作系统而定的)。
默认值 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES
shared_pool_size:
说明: 以字节为单位, 指定共享池的大小。共享池包含如: 共享游标, 存储的过程, 
控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能。 
值范围:300 KB - 根据操作系统而定。 
默认值: 如果是 64 位操作系统, 值为 64MB; 其他情况下, 值为 16MB。
Java_pool_size:
说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存中的表示法, 
以及在调用结束时移植到 Java 会话空间的 Java 对象。有关详细信息, 请参阅 Oracle8i Java 
Developer's Guide。 
值范围: 根据操作系统而定。 
默认值: 根据操作系统而定
shared_pool_reserved_size:
说明: 指定要为较大连续共享池内存请求而保留的空间, 
以避免由碎片引起的性能下降。该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所有大型过程和程序包。 
值范围: SHARED_POOL_RESERVED_MIN_ALLOC 到 
SHARED_POOL_SIZE 的一半 (字节)。 
默认值: SHARED_POOL_SIZE 值的 5%
cursor_sharing:
说明: 控制可以终止共享相同的共享游标的 SQL 语句类型。
强制: 强制表达方式不同但语句意思相同的语句共享一个游标。
EXACT: 只令完全相同的 SQL 语句共享一个游标。
默认值: EXACT
open_cursors:
说明: 指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL 
游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高, 
这样才能防止应用程序耗尽打开的游标。 
值范围: 1 - 操作系统限制值。 
默认值: 64
serial_reuse:
说明: 指定何种类型的 SQL 游标应利用串行可重用内存功能。如果 CURSOR_SPACE_FOR_TIME = TRUE, 
那么 SERIAL_REUSE 值将被忽略, 当作被设置为 
DISABLE 或 NULL 的情况处理。 
值范围: DISABLE | SELECT | DML | PLSQL | ALL | NULL 
默认值: NULL
session_cached_cursors:
说明: 指定要高速缓存的会话游标的数量。对同一 SQL 语句进行多次语法分析后, 
它的会话游标将被移到该会话的游标高速缓存中。这样可以缩短语法分析的时间, 因为游标被高速缓存, 无需被重新打开。 
值范围: 0 到根据操作系统而定的值。 
默认值: 0
cursor_space_for_time:
说明: 在一个游标引用共享 SQL 区时, 确定将 SQL 区保留在共享池中还是从中按过期作废处理。 
值范围: TRUE | FALSE 
默认值: FALSE (过期作废)
rollback_segments:
说明: 指定要在例程启动过程中获取的一个或多个回退段, 即使其数量超过了 TRANSACTIONS / 
TRANSACTIONS_PER_ROLLBACK_SEGMENT 的值。公式为 ROLLBACK_SEGMENTS = 
(rbseg_name [, rbseg_name] ...) 
值范围:除 SYSTEM 外, DBA_ROLLBACK_SEGS 中列出的任何回退段。 
默认值: NULL (默认情况下使用公用回退段)
undo_suppress_errors:
说明: 允许用户在 SMU 模式下尝试执行 RBU 操作 (如 
ALTER ROLLBACK SEGMENT ONLINE) 时忽略错误。这样能让用户在将所有应用程序和脚本转换到 SMU
模式之前即可使用 SMU 功能。
值范围: True 或 False 
默认值: False。
Max_rollback_segments:
说明: 指定 SGA 中高速缓存的回退段的最大大小。该数值指定一个例程中可同时保持联机状态 (即状态为 INUSE) 
的回退段的最大数量。 
值范围: 2 -65535 
默认值: 最大值 (30, TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)
undo_retention:
说明: UNDO_RETENTION 
参数用来指定要在数据库中保留的已提交的撤消信息总量。可在例程启动时设置该参数值。可以计算满足撤消保留要求所需的撤消空间量:
UndoSpace = RD * UPS, 其中 UndoSpace 以撤消块数来表示, RD 用以秒为单位的 
UNDO_RETENTION 来表示, UPS 以每秒撤消块数来表示。
值范围: 所允许的最大值为 (2 ** 32) 秒。
默认值: 30 秒。
Transactions_per_rollback_segment:
说明: 指定每个回退段允许的并行事务处理的数量。启动时获取的回退段的最小数量为 TRANSACTIONS 
除以该参数值的结果。如果在参数 ROLLBACK_SEGMENTS 中命名了其他回退段, 就可以获取这些回退段。 
值范围: 1 - 根据操作系统而定。 
默认值: 5
undo_management:
说明: 指定系统应使用哪种撤消空间管理模式。如果设置为 AUTO, 例程将以 SMU 模式启动。否则将以 RBU 模式启动。在 
RBU 模式下, 撤消空间会象回退段一样在外部分配。在 SMU 模式下, 撤消空间会象撤消表空间一样在外部分配。
值范围: AUTO 或 MANUAL 
默认值: 如果启动第一个例程时忽略了 UNDO_MANAGEMENT 参数, 则将使用默认值 MANUAL, 并且例程将以 RBU 模式启动。如果这不是第一个例程, 则将按其他现有例程启动时使用的撤消模式来启动该例程。
Undo_tablespace:
说明: 撤消表空间仅用于存储撤消信息。UNDO_TABLESPACE 仅允许在系统管理撤消 (SMU) 
模式下使用。例程将使用指定的撤消表空间, <undoname>。如果该表空间不存在, 或不是撤消表空间, 
或正在由另一例程使用, 则例程 STARTUP 将失败。
默认值: 每个数据库都包含 0 个或更多的撤消表空间。在 SMU 模式下, 将为每个 ORACLE 例程分配一个 (且仅限一个) 撤消表空间。
Instance_name
说明: 在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库例程。INSTANCE_NAME 不应与 SID 混淆, 
它实际上是对在一台主机上共享内存的各个例程的唯一标识。 
值范围: 任何字母数字字符。 
默认值: 数据库 SID
service_names:
说明 : 为 Oracle Net 监听程序用来识别一个服务 (如: 复制环境中的一个特定数据库) 
的例程指定服务名。如果该服务没有域, 将附加 DB_DOMAIN 参数。 
语法 : SERVICE_NAMES = name1.domain, name2.domain 
默认值 : DB_NAME.DB_DOMAIN (如果已定义)
local_listener:
说明 : 一个 Oracle Net 地址列表, 用于标识 Oracle Net 
监听程序所在的同一台计算机上的数据库例程。所有例程和调度程序都在该监听程序上注册, 以便启用客户机连接。该参数覆盖在 
8.1 版本中废弃的 MTS_LISTENER_ADDRESS 和 MTS_MULTIPLE_LISTENERS 参数。
值范围: 一个有效的 Oracle Net 地址列表。
默认值: (ADDRESS_LIST=(Address=(Protocol=TCP)(Host=localhost)(Port=1521)) (Address=(Protocol=IPC)(Key=DBname)))
license_sessions_warning:
说明: 指定对并行用户会话数量的警告限制。达到该限制后, 其他用户仍然可以连接, 但一条消息将被写入 ALERT 文件。具有 
RESTRICTED SESSION 权限的用户将收到一条警告消息, 表明系统已接近最大容量。 
值范围: 0 - LICENSE_MAX_SESSIONS 
默认值: 0
license_max_sessions:
说明: 指定允许同时进行的并行用户会话的最大数量。达到该限制后, 只有具有 RESTRICTED SESSION 
权限的用户才能连接到服务器。所有其他用户都会收到一条警告消息, 表明已达到系统最大容量的限制。 
值范围: 0 - 会话许可的数量。 
默认值: 0
license_max_users:
指定您可在该数据库中创建的用户的最大数量。并行会话使用许可和用户使用许可不应被同时启用。LICENSE_MAX_SESSIONS
或 LICENSE_MAX_USERS 或这两者的值应为零。 
值范围: 0 - 用户许可的数量。 
默认值: 0
db_block_checksum:
说明: DBWn, ARCH 和 SQL*loader 是否为每一个数据块读或写计算或校验块的校验和。 
值范围: TRUE | FALSE 
默认值: FALSE
shadow_core_dump:
说明: 一个针对 UNIX 的参数, 用于指定是否将 SGA 信息转储到一个生成的核心文件中。如果设置为 FULL, SGA 
将被包括在核心转储中。如果设置为 PARTIAL, SGA 将不被转储。 
值范围: FULL | PARTIAL 
默认值: FULL
db_block_checking:
说明: 用于控制是否检查事务处理管理的块有无损坏。 
值范围: TRUE | FALSE 
默认值: FALSE
background_core_dump:
说明: 是否将 SGA 信息转储到一个生成的核心文件中 (用于 UNIX)。 
值范围: FULL | PARTIAL 
默认值: FULL
event:
说明: 由 Oracle 技术支持人员使用, 以调试系统。一般情况下, 不应变更该值。 
值范围:不可用。 
默认值: 无
user_dump_dest:
说明: 为服务器将以一个用户进程身份在其中写入调试跟踪文件的目录指定路径名。例如, 该目录可这样设置: NT 操作系统上的 C:/
ORACLE/UTRC; UNIX 操作系统上的 /oracle/utrc; 或 VMS 操作系统上的 
DISK$UR3:[ORACLE.UTRC]。 
值范围: 一个有效的本地路径名, 目录或磁盘。 
默认值: 根据操作系统而定
timed_statistics:
说明: 收集操作系统的计时信息, 这些信息可被用来优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销, 
请将该值设置为零。将该值设置为 TRUE 对于查看长时间操作的进度也很有用。 
值范围: TRUE | FALSE 
默认值: FALSE
timed_os_statistics:
说明 : 由系统管理员使用, 以收集操作系统统计信息。为了有效地使用资源, 请只在需要时才设置该值。对于专用服务器, 
会在用户连接, 断开连接以及弹出调用 (如果超出了指定的时间限制) 的情况下收集操作系统统计信息。对于共享服务器, 
将为推入或弹出的调用收集统计信息。
值范围: 以秒为单位的时间。
默认值 : 0 (操作系统统计信息不被刷新)
core_dump_dest:
说明: 指定核心转储位置的目录名 (用于 UNIX)。 
值范围: 任何有效的目录名。 
默认值: ORACLE_HOME/dbs
oracle_trace_collection_name:
说明: 指定 Oracle Trace 收集名, 并在输出文件名中使用 (收集定义文件 .cdf 和数据收集文件 
.dat)。如果该参数不为空, 且 ORACLE_TRACE_ENABLE = TRUE, 就会启动一个默认的 
Oracle Trace 收集, 直到该值再次设置为 NULL。 
值范围: 一个有效的收集名, 最长可为 16 个字符 (使用 8 个字符文件名的平台除外)。 
默认值: NULL
oracle_trace_collection_path:
说明: 指定 Oracle Trace 收集定义文件 (.cdf) 和数据收集文件 (.dat) 所在的目录路径名。 
值范围: 完整的目录路径名。 
默认值: 根据操作系统而定 (通常是 ORACLE_HOME/otrace/admin/cdf)
background_dump_dest:
说明: 指定在 Oracle 操作过程中为后台进程 (LGWR, DBW n 等等) 写入跟踪文件的路径名 
(目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。 
值范围: 任何有效的目录名。 
默认值: ORACLE_HOME/rdbms/log (根据操作系统而定)
oracle_trace_enable:
说明: 要为服务器启用 Oracle Trace 收集, 请将该值设置为 TRUE。如果设置为 TRUE, 该服务器就可以使用 
Oracle Trace。要启动一个收集过程, 请为 ORACLE_TRACE_COLLECTION_NAME 
指定一个非空值; 或者使用 Oracle Trace Manager 来启动一个收集。 
值范围: TRUE | FALSE 
默认值: FALSE
oracle_trace_collection_size:
说明: 以字节为单位, 指定 Oracle Trace 收集文件的最大大小。一旦该收集文件的大小达到这个最大值, 
收集就会被禁用。如果值范围指定为零, 就表示没有大小限制。 
值范围: 0 -4294967295 
默认值: 5242880
oracle_trace_facility_path:
说明: 指定 Oracle TRACE 工具的定义文件 (.fdf) 所在的目录路径名。 
值范围: 完整的目录路径名。 
默认值: ORACLE_HOME/otrace/admin/fdf/ (根据操作系统而定)
sql_trace:
说明: 禁用或启用 SQL 跟踪设备。如果设置为 TRUE, 将收集优化信息, 这些信息对改善性能很有用。由于使用 SQL 
跟踪设备将引发系统开销, 只应在需要优化信息的情况下使用 TRUE。 
值范围: TRUE | FALSE 
默认值: FALSE
oracle_trace_facility_name:
说明: 指定 Oracle Trace 产品定义文件名 (.fdf 文件名)。该文件包含可为使用 Oracle Trace 
数据收集 API 的产品收集的所有事件和数据项的定义信息。Oracle 建议使用默认的文件 ORCLED.FDF。 
值范围: 一个有效的设备名, 最长可有 16 个字符。 
默认值: oracled
max_dump_file_size:
说明: 指定每个跟踪文件的最大大小。如果您担心跟踪文件会占用太多空间, 可更改该限制。如果转储文件可以达到操作系统允许的最大大小,
请将该值指定为“无限制”。 
值范围: 0 - 无限制 (可以用 'K' 或 'M' 为单位) 
默认值: 10000 块
resource_limit:
说明: 确定是否在数据库概要文件中实行资源限制。如果设置为 FALSE, 将禁用资源限制。如果值为 TRUE, 即启用资源限制。 
值范围: TRUE | FALSE 
默认值: FALSE
resource_manager_plan:
说明: 如果指定该值, 资源管理器将激活计划和例程的所有子项 (子计划, 指令和使用者组)。如果不指定, 资源管理器将被禁用, 
ALTER SYSTEM 命令还可以启用。 
值范围: 任何有效的字符串。 
默认值: NULL
sessions:
说明: 指定用户会话和系统会话的总量。默认数量大于 PROCESSES, 以允许递归会话。 
值范围: 任何整数值。 
默认值: 派生 (1.1 * PROCESSES + 5)
java_soft_sessionspace_limit:
说明: 以字节为单位, 指定在 Java 会话中使用的 Java 内存 的 '软限制'。如果用户的会话持续时间 Java 
状态使用过多的内存, Oracle 将生成一个警告并向跟踪文件写入一则消息。 
值范围: 0 - 4GB 
默认值: 0
cpu_count:
说明: Oracle 可用的 CPU 的数目 (用于计算其他参数值)。请勿更改该值。 
值范围: 0 - 无限制。 
默认值: 由 Oracle 自动设置
java_max_sessionspace_size:
说明: 以字节为单位, 指定可供在服务器中运行的 Java 程序所使用的最大内存量。它用于存储每次数据库调用的 Java 
状态。如果用户的会话持续时间 Java 状态超过了该值, 则该会话会由于内存不足而终止。 
值范围: 根据操作系统而定。 
默认值: 0
processes:
说明: 指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量。该值应允许执行所有后台进程, 如: 
作业队列 (SNP) 进程和并行执行 (Pnnn) 进程。 
值范围: 6 到根据操作系统而定的一个值。 
默认值: 由 PARALLEL_MAX_SERVERS 确定
control_file_record_keep_time:
说明: 控制文件中可重新使用部分中的记录必须保留的最短时间 (天数)。 
值范围: 0 -365 
默认值: 7
log_checkpoint_timeout:
说明: 指定距下一个检查点出现的最大时间间隔 (秒数)。将该时间值指定为 0, 
将禁用以时间为基础的检查点。较低的值可以缩短例程恢复的时间, 但可能导致磁盘操作过量。 
值范围: 0 - 无限制。 
默认值: Oracle8i:900 秒。企业版: 1800 秒
recovery_parallelism:
说明: 指定参与例程或介质恢复的进程的数量。如果值为 0 或 1, 就表明恢复将由一个进程以串行方式执行。 
值范围: 根据操作系统而定 (不能超过 PARALLEL_MAX_SERVERS)。 
默认值: 根据操作系统而定
fast_start_mttr_target:
说明: 指定从单个数据库例程崩溃中恢复所需的时间 (估计秒数)。FAST_START_MTTR_TARGET 
将在内部被转换为一组参数, 用于修改数据库的操作, 从而将它的恢复时间控制在总 "恢复平均时间 (MTTR)" 
中的一定范围之内。只有具有 "快速启动故障恢复" 功能的版本才支持此参数。
值范围: [0, 3600]。它将计算数据缓冲区高速缓存条目数之上, 且大于最大日志中的块数的限值。
默认值: 0
log_checkpoints_to_alert:
说明: 指定将检查点信息记录到预警文件中。该参数对于确定检查点是否按所需频率出现很有用。 
值范围: TRUE | FALSE 
默认值: FALSE
fast_start_io_target:
说明: 指定在系统崩溃或例程恢复期间需要的 I/O 数量。该值比 DB_BLOCK_MAX_DIRTY_TARGET 
对恢复过程的控制更加精确。 
值范围: 0 (禁用 I/O 恢复限制) 或 1000, 到高速缓存中的所有缓冲区数。 
默认值: 高速缓存中的所有缓冲区数
log_checkpoint_interval:
说明: 指定在出现检查点之前, 必须写入重做日志文件中的 OS 块 (而不是数据库块) 的数量。无论该值如何, 
在切换日志时都会出现检查点。较低的值可以缩短例程恢复所需的时间, 但可能导致磁盘操作过量。 
值范围: 无限制 (指定 0 即可禁用该参数)。 
默认值: 根据操作系统而定
log_buffer:
说明: 以字节为单位, 指定在 LGWR 将重做日志条目写入重做日志文件之前, 
用于缓存这些条目的内存量。重做条目保留对数据
				
1、获取当天是礼拜几:select to_char(sysdate,'d') from dual; --礼拜天为1,礼拜一为2,类推 2、获取 两个时间段间的 工作日: select (trunc(&end_dt - &start_dt) - ((case WHEN (8 - to_number(to_char(&start_dt,'D'))) > trun
jjr_id VARCHAR2(36) not null, jjr_time DATE not null, jjr_state NUMBER(2) default 0, jjr_remark VARCHAR2(200), jjr_creattime TIMESTAMP(6) default sysdate not null, jjr_creatu --创建视图:VIEW_WORKDAYS CREATE OR REPLACE VIEW VIEW_WORKDAYS AS select cast(bdate as nvarchar2(10)) bdate from( SELECT to_char(TRUNC(SYSDATE, 'YYYY') + ROWNUM - 1,'YYYY-MM-... CREATE TABLE "T_WEEKDAY" ( "FYEAR" VARCHAR2(100 BYTE), "FDATE" VARCHAR2(100 BYTE) NOT NULL, "FFLAG" VARCHAR2(100 BYTE), "FWEEK" VARCHAR2(100 BYTE), "FTIME" VARCHAR2(100 BYTE), "FEMPID" VARCH
我们在之前的文章《 区分工作日,你就跟我这么做 》中讲过关于工作时间差的相关计算方法,今天我们要介绍的是如何计算两列日期时间格式数据的工作时间差。 1 计算思路 首先我们思考一下,如果不考虑工作日的话,计算两列值的时间差怎么计算呢? 按照之前文章的思路是判断开始时间和结束时间区间内日期表的行数,如果我们要改成小时,那么可以考虑把日期表扩展成小时就可以计算了。 想到这个,问题就转换为如何将日期表扩展为按小时的时间序列。这是第一种计算方式,这种方式公式比较简单。但是如果日期年份比较多,那么日期时间表行数一年.