该数据库在企业里普遍应用
1.Oracle的发展史
1.1:1970年IBM的codd提出关系模型理论。
1.2:Larry Ellison、Bob Miner、Ed Oates+Bruce Scott组成的SDL(software development laboratories)研究出的第一个Demo产品取名为Oracle
1.3:SDL更名为RSI(relational software Inc),并发布了用于特定系统的商用Oracle2.0。
1.4:RSI更名为Oracle;Oracle3.0具有可移植性、事务处理单元、非阻塞查询、SQL语句。
1.5:Oracle4.0、Oracle5.0改善数据库的稳定性。
1.6:重写数据库核心的Oracle6.0bug众多,性能不稳。具有行级锁、PL/SQL语言、联机热备份
1.7:Oracle7.0具有分布式处理、基于开销的优化器
1.8:Oracle8i支持Internet、java;Oracle9i支持RAC(多机单服务器)
1.9:Oracle10g数据库网格计算功能。
1.10:Oracle11g数据压缩技术、
2.Oracle的结构——实例与数据库是怎样的对应关系一对一还是多对一
2.1:实例——内存结构和后台进程
2.1.1:内存
2.1.1.1:PGA(program global area)——存放服务器进程的数据和控制信息。
2.1.1.1.1:排序区(sort area)——排序的信息。
2.1.1.1.2:会话信息(session informaiton)——会话的权限、角色,会话的性能统计信息
2.1.1.1.3:游标状态(cursor state)——当前SQL的状态;指针
2.1.1.1.4:堆栈空间(stack space)——会话的变量信息
2.1.1.2:SGA(system global area)——可以提高效率和性能
2.1.1.2.1:数据库缓存区(database buffer cache)——缓存命中;减少数据存取时造成的磁盘读写动作。
2.1.1.2.2:重做日志缓冲区(redo log buffer)——对数据库的修改按序记录在缓冲区中。
2.1.1.2.3:共享池(shared pool)——library cache(SQL编译代码)+dictionary cache(数据字典)
2.1.1.2.4:java pool
2.1.1.2.5:large pool
2.1.2:进程
2.1.2.1:数据写进程(DBWR)
2.1.2.2:日志写进程(LGWR)
2.1.2.3:系统监控(SMON)——Oracle非正常关闭后,由smon进行必要的数据库修复。
2.1.2.4:进程监控(PMON)——失败进程的清除。
2.1.2.5:检查点进程(CKPT)——当数据永久记录时,更新控制文件和数据文件的数据库状态信息。
2.1.2.6:归档进程(ARCH)——将已满的日志组备份或归档。
2.2:数据库——一系列的物理文件和与之对应的逻辑结构
2.2.1:物理(操作系统)——文件
2.2.1.1:数据文件——逻辑数据库对象
*Oracle数据——没有Boolean和%type类型,对大小写敏感,
2.2.1.2:日志文件——联机重做日志文件、归档重做日志文件
2.2.1.3:参数文件——激活前的配置参数
2.2.1.4:控制文件——数据库的实体信息
2.2.1.5:口令文件——指令
2.2.2:逻辑(数据库内部)
2.2.2.1:表空间()——业务系统
2.2.2.2:段()——数据类型
2.2.2.3:区(4块)——最小分配(存取)单位;DB的块与OS的块成整倍数关系。
2.2.2.4:块(8k)——最小存储单位
2.2.2.5:
3.特点
3.1:跨操作系统和硬件
3.2:稳定性
3.3:安全性
3.4:高效率
3.5:为什么选择Oracle
3.5.1:安全。
3.5.2:数据量可以很大
3.5.3:分析特别灵活,例如不同应用中的排名。
3.5.4:性能调优手段很多
3.5.5:Oracle发展好,国内应用广泛。
3.5.6:
4.数据字典中的数据库对象
4.1:数据字典(系统表)——对象描述的信息库;只读对象;
4.2:模式(schema)——数据库对象组合的一个集合;一个数据用户只能有一个schema且与用户同名。
4.3:数据库对象
4.3.1:用户:
4.3.2:角色
4.3.3:表空间
4.3.4:表
4.3.4.1:数据类型——char;varchar2;number默认38位;date;
4.3.5:视图(view)=虚表——从一个或多个表中通过查询语句得到的结果,以表的形式存在。
4.3.4.1:视图对应的数据未实际存储在数据库中,只是在字典里存放了视图的定义。
4.3.4.2:作用——封装查询语句;简化复杂查询;简化权限管理;
4.3.4.3:格式——create view 视图名 as 查询语句;
4.3.6:簇
4.3.7:类型
4.3.8:同义词(synonym)=别名——尽量避免直接引用表、视图、其它数据库对象。
4.3.8.1:分类——分为公用的和私有(默认)的。
4.3.8.2:格式——create public synonym 同义词名 for 数据库对象;
4.3.8.3:数据库对象组成——SYSTEM(px上的用户).auths(SYSTEM用户的对象)@PX(服务器).orcl(实例)
4.3.9:序列(sequence)——与identity类似,但sequence解决了高并发的问题。
4.3.9.1:格式——create sequence 序列名 increment by 步频 start with 起数 maxvalue 止数
4.3.9.2:属性——nextVal/currVal(只是获得当前的固定值,没有nextval的辅助是无意义的)【SELECT ABC.NEXTVAL FROM DUAL;初始序列——>SELECT ABC.NEXTVAL FROM DUAL;获得下一个序列——>SELECT ABC.CURRVAL FROM DUAL;】
4.3.9.3:DUAL——默认只有一行一列;任何用户都可使用;类似java中的超类object;属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用 ;
*dual包含的信息——user(当前用户);sysdate(系统日期);表达式计算后的值;序列号;
*
*
4.3.9.4:查看序列信息——SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM
USER_SEQUENCES;
4.3.10:索引
4.3.11:数据库链接
4.3.12:存储过程
4.3.13:函数
4.3.13.1:sysdate——作用于数据的函数
4.3.13.2:to_date(日期串,日期格式,地区语言)——
4.3.13.2.1:日期格式—— 'DD/MM/yyyy HH24:MI:SS ';
*YEAR——y;y的个数代表年的位数
*MONTH——mm(纯2位数)/mon(缩写词)/month spelled out(全词)
*DAY——dd(月中天)/ddd(年中天)/dy abbreviated(星期的缩写)/day spelled out(星期的全词)
*HOUR——hh(1:00:00~12:59:59)/hh24(24小时制0:00:00~23:59:59)
*MINUTE——mi
*SECONDE——ss
*Q(季度)/W(月中周)/WW(年中周)
4.3.13.2.2设置时间语言——alter session set NLS_DATE_LANGUAGE='AMERICAN';==TO_DATE('2002-4-3','YYYY-MM-DD','NLS_DATE_LANGUAGE=AMERICAN');
4.3.13.2.3:时间差—— select floor(sysdate-to_date('20020405','yyyymmdd'))from dual;
4.3.13.2.4:next_day(date,day);
4.3.13.2.5:extract()——找出时间段或日期的字段值
4.3.13.2.
4.3.13.3:to_char(数字值,格式,返回字符)
*NLS_NUMERIC_CHARACTERS="d(小数点)g(分组)"
*NLS_CURRENCY="NUD"——本地货币
* NLS_ISO_CURRENCY =TERRITORY——国际货币
*格式——fm:去空格;0起占位作用,9对应的位置有才显示无则影藏。
4.3.13.
4.3.13.
4.3.13.
4.3.14:包
4.3.15:触发器
5.Oracle执行SQL
5.1:语法检查
5.2:语义检查——访问数据字典,检查访问对象存在否+是否有权限
5.3:SQL解析——生成解析树、执行计划——存放在library cache的共享SQL区
*私有SQL——专用服务器连接(PGA)/共享服务器连接(SGA)
5.4:执行SQL,返回结果。
6.远程访问oracle的配置
6.1:打开工具net manager
6.2:配置LISTENER——监听的远程服务器和端口(1521)
6.3:在服务命名中新建服务——给予引用名,服务器ip,oracle服务名(从oracleservice服务的属性中的可执行文件路劲的最后一个单词)
6.4:打开服务TNSListener;