`
lieyao.pk
  • 浏览: 7891 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论
阅读更多
-----------------概要
Oracle系统的体系结构是指组成Oracle系统的主要组成部分,这些组成部分之间的关系,以及这些部分的工作方式。
在Oracle系统的体系结构中,主要涉及到以下5个组件:
连接数据库实例的能力,这是Oracle系统的体系结构中协同工作的方式;
服务器进程;
文件系统的结构层次;
内存区域的管理,尤其是系统全局区域(system global area,SGA)的特点和作用;
后台进程。

-------------服务器进程
当Oracle Net Services接收到用户进程的连接请求之后,就会将用户进程路由到一个服务器进程(server process),此服务器进程可能是新创建的。
服务器进程就是代表客户会话完成工作的进程。负责在用户进程和Oracle实例之间调度请求和响应。
当用户进程提交查询之后,服务器进程则负责执行该查询语句,即将数据从磁盘读入缓存,获取查询结果,然后向用户进程返回结果。即使响应出现了某些错误,服务器进程也会把错误信息发回用户进程,以便用户进程进行合适的处理。

--------------构成数据库和实例的文件类型
与实例相关的文件
参数文件(parameter file)
跟踪文件(trace file)
警告文件(alert file)
构成数据库的文件
数据文件(data file)
临时文件(temp file)
控制文件(control file)
重做日志文件(redo log file)
密码文件(password file)
Oracle 10g新增的文件类型:
修改跟踪文件
闪回日志文件

---------------Oracle逻辑存储结构
数据库由一个或多个表空间组成;
表空间由一个或多个数据文件组成,表空间中包含段;
段(表、索引等)由一个或多个盘区组成。段存在于表空间中,但是在表空间中可以有许多数据文件中的数据;
盘区是在磁盘上连续的块的组。一个盘区在一个表空间中,且在表空间中单一的文件中;
块是数据库中最小的分配单元,也是数据库使用的最小I/O单元。
----表空间
表空间是用户可以在Oracle系统中使用的最大的逻辑存储结构。用户在数据库中建立的所有内容都会存储在表空间中。每个Oracle数据库都提前配置了system表空间,它存储了数据字典和系统管理信息。
一般情况下,用户和应用程序使用自己的表空间来存储数据。写入到临时表中的数据、为大规模排序操作写入磁盘的数据块以及其他许多类型的临时数据都会被写入到临时表空间中。
---段是用户建立的数据库对象的存储表示。用户建立的每一个表都会有一个在表空间中存储的逻辑段。为用户所建立的对象生成的段都要在磁盘上占用空间。在Oracle系统中,有3种类型的段,即数据段、临时段和回滚段(有时也称为撤销段)。
---区
段是由一个或多个盘区构成的。盘区是用来为段存储数据的逻辑上连续的数据块的集合。当建立数据库对象时(无论如何,该对象都会消耗空间),系统就会建立一个或多个盘区来存储数据。当段中已分配的区都写满后,Oracle将为段分配一个新的区,以便容纳更多的数据。
盘区数量和盘区大小可以在正在建立对象的storage子句中规定。
在Oracle系统中,默认的表空间的盘区管理风格是本地化管理,而不是字典管理。
---盘区的字典管理方式
表空间的管理——字典管理方式
字典管理方式下,表空间使用数据字典来管理存储空间的分配。

当表空间中分配新的区或回收已分配的区时,Oracle将对数据字典中的相关基础表进行更新。
--------块(block) 数据库中最小、最基本的逻辑存储单元,也是Oracle从磁盘读写的最小单元。

当Oracle从磁盘读取数据的时候,读取数据的量总是数据块容量的整数倍。数据块容量总是操作系统块容量的整数倍。
Oracle的块常见大小可以是2KB, 4KB,8KB,16KB等。块的标准大小由初始参数DB_BLOCK_SIZE指定,具有标准大小的块被称为标准块。

----表空间
System表空间
Sysaux表空间
UNDO表空间
临时表空间
普通的用户表空间

-----Oracle逻辑存储结构
System表空间

System表空间中存储数据库数据字典。

存储所有的PL/SQL程序的源代码和解析码,包括存储过程和函数、包、数据库触发器等。

存储数据库对象(如视图,对象类型说明,同义词和序列)的定义。
-----Oracle逻辑存储结构
Sysaux表空间

System表空间的辅助空间。

该空间在数据库建立/升级时自动创建。

存储元数据,有效减小system表空间的大小。
-----------模式
Oracle数据库中的模式是指:数据库对象的逻辑集合

一般而言,一个用户使用一个属于自己的模式
--------内存
在Oracle系统的体系结构中,有许多不同的内存区域。不同的内存区域用于不同的目的。Oracle的服务器进程和许多后台进程负责在内存区域中写入、更新、读取和删除数据。
理解内存区域的用途,有助于理解数据库操作期间的数据和进程流程。
------PGA
为每个连接到数据库的用户进程保留的内存空间
当一个进程创建的时候分配
当一个进程终止释放
只能由一个进程使用
包含
会话信息
排序区
游标状态
堆栈空间
------后台进程
无论用户是否连接数据库,有些进程都会作为数据库的一部分运行。这些进程被称为后台进程。每一个后台进程都有自己的职责。如果这些后台进程崩溃了,那么数据库也就随着崩溃了。实际上,Oracle实例是由后台进程和内存结构共同组成的。

Oracle的后台进程主要是用来提高数据库的性能和可靠性,它可以由多个用户共同使用,为这些并发用户进程提供各种服务。Oracle的后台进程执行输入/输出操作,并监视Oracle服务器的其他进程。
-------总结
概述
实例和数据库
连接数据库实例
(用户进程,Oracle监听器,Oracle网络客户)
服务器进程
(专用服务器模式,共享服务器模式)
文件系统
(参数文件,控制文件,重做日志文件,临时文件、数据文件)
Oracle逻辑存储结构
(表空间,段,盘区,数据块)
(表空间类型)
内存
后台进程
--------------SGA
系统全局区由系统自动分配,用来存储由数据库进程共享的数据库信息,包含了Oracle数据库的数据和控制信息
--------------PGA
进程全局区域是为单独的服务器进程存储私有数据的内存区域。与所有服务器进程都可以访问的共享内存区域SGA不同,数据库写入器、日志写入器和许多其他的后台进程,都只为各个服务器进程提供一个PGA。PGA只能由他们的服务器进程访问。
















oracle   功能强大,性能好,跨平台,数据迁移 把表空间和数据文件分离开来 高可用
db2是IBM的  IBM从事硬件到操作系统,到数据库到中间件(应用服务器),应用软件。 70年代层次数据库 IBM提出的关系数据库
两个数据库同时插入数据    透明网关 DB_link
并发      锁
并发量大  要控制好锁  锁的时间越短越好
select * from AA,BB 笛卡尔集
所以表都会放到一个表空间中,    XXX.DBF 物理地址

pro_test(....)
vc_date=to_date('20100903');
vc_str varchar(1);
pro_test(vc_date,vc_str);

是10 G  基于网格的   8 i基于英特网
oracle 总裁
M。。。程序高手
关系数据库
oracle 6 差点破产  ceo自信吹
oracle 7 革命性产品  后面的很多新功能都基于它
  

int   number(10,2)   char    varchar    varchar2  默认4000 ---255  date   timestamp  
Blob 二进制     clob 字符   --可存4G

create table 表(x number,constraint 主键名 primary key(x));
create index idx_wen on 表(x);建立索引
insert into 表(x1,x2,x3) select x1,x2,x3 from bb
create job/sequece/view/index/table
DDL不能回滚,DML可以
alter table 表 modify 字段 varchar2(20)
alter table 表 modify 字段 varchar2(10)不一定行,有数据不行,无数据行
水位线 delete 数据 水位线不变
create table 表 as select*from 表 where 1=0;
select*from 表 for update;可以修改表了
select rownum from zhouyao_1;********************rownum<=/<都可以  >是不行的

grant connect to test
Savepoint     Rollback可用到,
设置一个点回滚到那里,

select*from 表 where 字段 between 5 and 7/between '5' and '7'
like xx%    xx_  补充一个字符
select distinct 字段 from 表

select ascii('a') from dual;给个字符的阿斯科马
select chr(65) form dual;转
查是不有回车
select*from 表 where 字段 like '%'||chr(10)||'%'
upper('')改为大写
select upper(字段) from 表
substr截取字符串
substr(‘abcdef’,-3)从尾部取起    标准是三个参数
substrb汉字时字符算两位
instr   instrb
select sysdate from dual;
mode  siqn

select months_between(sysdate,to_date('20090302','yyyymmdd'))from dual;
select add_months(sysdate+25,5) from dual;
select to_date('2010-09-06 17:48:58','yyyy-mm-dd hh24:mi:ss') from dual;
列x(值='x')=1你不转型oracle会默认把‘x’转化数字这样就出错了
查别人的表要带用户
scott第一个员工 例SCOTT.emp;

SELECT empno,
         ename,
         sal,
         DECODE(deptno,
                10,
                '一般工资',
                20,
                '中等工资',
                30,
                '比较高了',
                '农民工') 工资评价
    FROM scott.emp;///////////// 比较死只有==才满足 但是简单
SELECT empno,
       ename,
       sal,
       CASE
         when sal<1500 then
          '一般工资'
         WHEN sal>=1500 and sal<3000 then
          '中等工资'
         WHEN sal>=3000 then
          '比较高了'
         ELSE
          '平民'
       END 工资评价
  FROM scott.emp;/////////////  比较活比较常规。
  
   EXP 用户名/密码@数据库 FILE=D:/导出文件名.DMP 导出表
  IMP 用户名/密码@数据库 FILE=D:/引入文件名.DMP FROMUSER = TEST TOUSER = zhouyao
  还有最常规的方法  输入exp回车跟着他的部分走
  
实例:内存+后台进程
一个实例只能带一个数据库,但一个数据库可由多个实例带   SID实例名
数据库:PMON LGWR等是数据库文件加载实例时启用内存在启用进程再把数据库等重要的信息加载进去
加载数据库第一找pfile找路径加载到control file起中间件作用,保证数据一致完整
每个insert  update时都放入重做日志文件

监听
内存:SGA系统全局区:share-pool共享池(数据字典数据等)、数据高速缓冲(select语句下去就暂时会放在这,)、日志缓冲池(日志超过3分之一也写在日志中,commit也会写入)、java池、大池
    PGA是排序,建索引,私有的内存区
sga:日志缓冲区,共享缓冲区,数据缓冲区
LGWE日记读写 DBWR数据库读写
CKPT保证日记,系统文件等一致
PMON process
SMON是用来该回滚的回滚好,该提交的提交好
Rald1直接放入盘中
RALD5有个校验盘
RALD10把一个盘分成多个盘读取,速度就会快多了,如一个数据磁盘分成10就快10倍或很多倍
一个出口好还是多个出口好?
services.msc

控制,参数,密码,警告

模式会存在表空间,表存在表空间就会有一个物理文件,数据库和模式是一对多
用户进程:用户发送请求到服务器,服务器会有一个进程,是服务器为了响应用户请求而创建的一个进程
表空间->(1-n)段->(1-n)区->(1-n)块
一个段可以对应两个物理数据空间,区是不能跨数据空间的,区里是连续的块
回滚断升级为undo回滚表空间
union 相同过滤出去,union all 两个表所有记录
块默认是8k  基本是一个表一个块
为每个连接到数据库的用户进程保留内存空间。这个很重要,dba分配内存不好的话,会导致用户登录不进去

数据文件与表空间 一个表空间可以对应多个数据文件
实例与数据库????????????? 一个实例对多个用户,多个用户对应一个实例
lgwr 进程
admin 警告日志等
db_1  安装。。。密码文件
flush_.......缓存
oradata 数据文件,控制文件,重做日志文件等
逻辑结构:表空间,段,区,块,区<=是连续的 改内存块空间只有建数据库的时候设置
undo 可用于回滚
如果内存不过,oracle有一种算法最小用的内存的会先出
要考虑为空  如果为空的话???????
                 <>这个是什么意思??????????                  all
要了解一下 exists /not exists
*************可以把select出来的语句作为一个表      
能在where条件做觉得不要在having语句后面做
union minus相减 还有一个交集的函数intersect
求多少条数据到多少条数据的时候,用rownum的时,最好把rownum作为一个字段给个别名,和select出来的信息在select 用rownum的别名在外面算多少条到多少条 不然不成功的
============================================索引
一种用于提升查询效率的数据库对象;
通过快速定位数据的方法,减少磁盘I/O操作;
索引信息与表独立存放;减少磁盘I/O操作;
ORACLE数据库自动使用和维护索引; 不过有些还是要手动维护
select*from v$version  这个是查看oracle的信息
alx IBM的系统  sun有自己的系统s                moc是苹果的操作系统
使用索引一定好吗?
不一定,查询超过10%的话就不如使用全表扫描,数据少的时候插入修改等如果使用索引的话需要维护,
数据少的时候可以不使用索引,因为索引是要维护的
根据rowId查找数据比较快
建索引一般是根据group by/order by/where等
小于5M的表最好不要建所以,一般规范1000不要建立索引
where条件多或选择性比较高使用复合索引要好
B树索引????????????????????????
函数索引 学号+课程号/substr()
位图索引容易引起锁表,比如我修改了,没有提交,那别个就不能操作 特点:一般建在唯一性比较差的上面
octp在线事务处理系统
聚处索引,分区索引,反转索引
水位线???????????????????????????????
什么叫索引
函数????????????????????????
------Materialized views 物化视图 提升查询数据,如果数据库更新物化视图也会更新数据
例多个表关联的时候 where a.xxx=b.xxx and b.xxx=c.xxx。。。这个时候建一个物化视图就很好了  
空间换时间   时时更新,定时更新
create view 视图名 as select*from emp
------sequences序列
oracle无自动增长的主键
------Database links   桥梁 把数据库放在一个事务里
------DBMS_jobs定时执行
------Triggers触发器
------分区 一些特殊数据按时间,地点等分区,这样要是数据多的时候我们不要全不查询,只要查询特别的区就行了
分区还可以放在不同表空间,平均  I/O
-------synonym同义词 分公有和私有  建同义词是为了方便

====================================================语法:
**********(+) =号左部 左连接 =号右边 右连接
例:
select*from scott.emp e,scott.dept d where e.deptno=d.deptno(+);

sqlplus /nolog
conn / as sysdba
alter user scott identified by scott;
alter user scott account unlock;
grant create view to scott;这个是在给视图权利给scott

select sql_emp_bak_id.nextval from dual
select sql_emp_bak_id.currval from dual
这个是要创建一个sequence,sql_emp_bak_id这个是sequence的名字

复制表格create table 新表名 as select*from 复制的表 where 1=0 这样只是复杂表结构,但是也有点不足,比如说number(16,2)复制过来可能丢失了精确度
插入表数据  insert into 表 select*from 要插入的表

存储过程:
create or replace procedure 存储过程名字
(参数1  in  类型 varchar2。。,参数2 out  类型 varchar2。。,...)
is////////////as?
//命名变量
变量1  类型;
...
begin
select to_char(to_date(参数1,'YYYYMMDD'),'DAY')
into 变量1 from dual;
参数2 :=变量1;
exception
when others then
null;//捕获异常
end;

使用方式:
declare
变量 类型;
begin
存储过程名(参数1,变量);
dbms_output.put_line('sdfsdfsd随便打写字'||变量);
end;
有时候存储过程可以替换触发器,如果要在多个表里同时操作sql插入,修改等,这个如果使用触发器,触发器如果失败的话,
有些插入了有些没插入,我们要是想恢复数据,这个时候就很痛苦。如果存储过程,要么一起成功,要么一起失败。

存储过程处理复杂的操作,函数一般是小功能。
////////////////////////////把刚刚老师写的存储过程代码发给我

create or replace function 函数名
(参数   in 类型)
return   类型
is
变量名   类型;
begin
  select to_char(参数,‘DAY’)
  into 变量名
  from dual
  return(变量名);
  end 函数名;//函数也有输出参数,有且只有一个返回值
  函数调用:
  select ename,job,hiredate,函数名(hiredate),sal from emp
===============================================================================================================
基于成本或规则
ALL_ROWS和FIRST_ROWS基于成本的 分页用FIRST_ROWS比较快,翻一页再读一页
commit的数据还是可以回滚的
绑定变量
共享变量--------------------------------------------
select*from A,B,C  从右至左
where A.a=B.a
A.b=B.b
B.c=B.c从下到上   选择性最强的也可以关联最大的放在最后 这就是解析顺序。

select语句时共享锁,update独占锁 锁数据
select*from scott.emp where deptno in(select deptno from scott.dept where dname='SALES')
改exists
select*from scott.emp emp where exists (select deptno[可以] from scott.dept where emp.deptno=deptno and dname='SALES');
*********避免在索引列上使用计算 算术运算,逻辑运算,隐式转换 有些字符型的要加‘’,不加内部会转换。

ER模型:实体(正方体),属性(矩形),关系(◇)













PC   Seashols
Enterprise Manager Database Control URL - (orcl) :

http://PC-200910131720:1158/em


数据库配置文件已经安装到 E:\oracle\product\10.2.0,同时其他选定的安装组件也已经安装到 E:\oracle\product\10.2.0\db_1。

iSQL*Plus URL 为:

http://PC-200910131720:5560/isqlplus


iSQL*Plus DBA URL 为:

http://PC-200910131720:5560/isqlplus/dba
doc:
dbca 装oracle服务器
netca监听
sqlplus /nolog
conn / as sysdba
create user test identified by test default tablespace users;
用户已创建
grant connect,resource to test;
授权成功
PLSQL:
alter user test identified by test
grant dba to test
分享到:
评论

相关推荐

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer)

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer 不用安装Oracle客户端也可以使用PLSQL Developer 绿色! 安全! 轻便! 可靠! 1、本软件可作为简单的Oracle9i客户端...

    oracle10G和oracle11G的OCI.dll

    oci.dll是Oracle Call Interface的缩写,它是Oracle数据库的一个核心组件,允许开发者使用各种编程语言与Oracle数据库进行交互。在Oracle 10G和11G版本中,oci.dll扮演了至关重要的角色,为应用程序提供了访问数据库...

    oracle.jdbc.driver.oracledriver Oracle JDBC驱动包 ojdbc6

    Oracle JDBC驱动包是Oracle数据库与Java应用程序之间进行通信的关键组件,它使得Java程序员能够通过编写Java代码来操作Oracle数据库。标题中的"ojdbc6"指的是Oracle JDBC驱动的一个特定版本,适用于Java SE 6环境。...

    cx_Oracle使用手册

    cx_Oracle是Python编程语言中用于连接Oracle数据库的一个模块。该模块遵循Python数据库API规范,并且适用于Oracle 11.2和12.1版本,同时兼容Python 2.x和3.x版本。cx_Oracle模块通过使用Oracle客户端库来实现与...

    基于C#连接Oracle数据库Oracle.ManagedDataAccess

    首先,Oracle.ManagedDataAccess是Oracle公司提供的一个纯.NET框架的客户端驱动,它允许开发者在不安装Oracle客户端的情况下,直接与Oracle数据库进行交互。这个库包含了所有必要的组件,使得C#程序可以方便地执行...

    Python连接oracle工具cx_Oracle官方文档

    cx_Oracle是Python数据库API规范的实现,用于访问Oracle数据库。目前,该模块经过对Oracle客户端版本11.2、12.1和12.2以及Python版本2.7、3.4、3.5和3.6的测试。cx_Oracle遵循开源的BSD许可证,这表示用户可以自由地...

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle...

    Mysql转Oracle软件 DBMover for Mysql to Oracle

    Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...

    OracleClient-19C Oracle客户端,包括windows和Linux

    Oracle Client是Oracle公司提供的数据库连接工具,用于与Oracle数据库服务器进行通信。19C是Oracle Database的一个版本,代表第19个主要版本。这个压缩包包含的Oracle Client适用于Windows和Linux操作系统,使得...

    Oracle11g客户端精简版

    Oracle 11g客户端是Oracle数据库的一个轻量级版本,主要供开发人员和系统管理员用于连接到Oracle数据库服务器,执行查询、管理和维护数据库任务。这个精简版在保持基本功能的同时,减少了安装体积,便于快速部署和...

    Tianlesoftware Oracle 学习手册(v1.0)高清完整PDF版

    ### Tianlesoftware Oracle 学习手册(v1.0)中的关键知识点 #### 1. ORACLE基础知识 ##### 1.1 OLAP与OLTP介绍 **1.1.1 什么是OLTP** OLTP(Online Transaction Processing,在线事务处理)是一种主要针对企业...

    利用python-oracledb库连接Oracledb数据库,使用示例

    python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...

    Oracle Ojdbc各版本驱动包

    Oracle各版本驱动包,有需要的可以下载使用,支持目前常用的不同版本oracle和JDK,根据自己需要调整和使用 主要包括的jar有: ojdbc5.jar 适用JDK版本:JDK 1.5 对应Oracle数据库版本:Oracle数据库版本(如Oracle ...

    Oracle19c-Windows客户端

    Oracle 19c是Oracle数据库的一个重要版本,尤其在Windows平台上,它提供了全面的功能和优化,使得数据库管理和开发更为高效。以下将详细讲解Oracle 19c Windows客户端的关键知识点: 1. **Oracle Client**: Oracle...

    Oracle Instant Client 11.2.0.1.0 轻量级Oracle客户端

    Oracle Instant Client 11.2.0.1.0是轻量级Oracle客户端,用于连接访问Oracle 9i、10g、11g 11.2.0.1.0版本的Oracle数据库。 Oracle Instant Client11.2.0.1.0 安装程序包含OCI/ OCCI、JDBC-OCI SDK(软件开发工具...

    Veeam 备份恢复oracle数据库详细配置文档

    Veeam 备份恢复 Oracle 数据库详细配置文档 本文档旨在详细介绍如何使用 Veeam 备份恢复 Oracle 数据库的配置过程。该文档将指导读者从环境准备到推送 Oracle RMAN Plugin,再到创建备份作业和运行备份作业,最后...

    oracle 客户端 64位

    Oracle客户端是用于与Oracle数据库服务器交互的软件工具,主要功能是提供对数据库的查询、更新、管理等操作。Oracle客户端支持多种操作系统,包括Windows,且有32位和64位之分。在这个场景中,我们关注的是"Oracle...

    解决System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本

    标题中的“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”是一个常见的错误提示,它涉及到在.NET环境中使用Oracle数据库时遇到的问题。这个错误表明,当你试图在应用程序中使用System.Data....

    无需安装oracle客户端直接连接使用oracle数据库的解决方案

    本人琢磨了下使用VS .Net 2005开发的客户端程序,需要访问oracle数据库,但不想在客户端安装oracle客户端的解决方法。终于给弄清楚了,其实根本不需要在安装oracle客户端就可以轻松实现了。方法是将相关的9个oracle...

    SqlDbx连接oracle

    首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种无需完整Oracle客户端的方式来实现连接。这种连接方式通常依赖于Oracle的Instant ...

Global site tag (gtag.js) - Google Analytics