数据库发展概述:
网状数据库、关系数据库、对象数据库
其中oracle数据库属于关系数据库
实例:数据库中的一些相关进程启动起来,调入到内存中,起到一个协调作用
数据库:指的是一些文件系统
控制文件.CTL 数据文件.DBF 日志文件.LOG
联机日志文件 REDO.DBF 归档日志文件
数据库打开时首先启动控制文件。由控制文件启动数据文件和日志文件
sqlplus "sys/passwd as sysdba"
DESC v$controlfile ##查看控制文件
SELECT status,name FROM v$controlfile; ##查看控制文件的状态和名字
同理 datafile、logfile
参数文件:并不直接参与工作,只是控制文件是由参数文件寻找的
物理结构:
参数文件
控制文件 控制文件
数据文件 数据文件 日志文件 日志文件
内存结构:
1.数据库高速缓存区 内存中用来频繁访问的数据的区域
保持缓存池:在内存中长期保存的,频繁访问的。如 代码表 本缓存池在关闭数据库前一直保留
再生缓存池 :想尽快从内存中排除的对象 如 频繁访问的大表
默认缓存池 :
2.共享池
库缓存区
共享SQL区:不用再解释,提高了数据库速度
PL/SQL区:
字典缓存区:缓存数据字典信息,把最频繁使用的字典语句缓存到内存中
3.REDO日志缓存区:缓存日志 先进先出
4.大共享区
5.固定SGA
逻辑结构:
块(block):存储数据的最基本单位
盘区(extent):由若干的块组成
段(segment):一个段包含多个盘区
表空间(tablespace):一个表空间对应若干个数据文件 一个表空间对应着多个段
数据文件(datafile):在数据文件中不可直接解读对应的表的信息
SQL*PLUS
什么是SQL*PLUS:一个输入以及执行SQL语句以及PL SQL块的一个交互工具 能够运行脚本语言,生成一些简单的报表,以格式化的方式输出。在8.0以后可以启动和关闭数据库
基本操作:
sqlplus "sys/passwd as sysdba"
其他自建用户则不需要输入as 例如:sqlplus "lcd/12345"即可
若实例没打开:sqlplus/nolog
connect sys/passwd as sysdba
startup ##启动 分为三个步骤:启动实例 打开控制文件 打开数据文件
有时候热备份需要归档模式,就需要启动的时候不打开数据文件:startup mount
alter database archievelog
alter database open
即可将数据库非归档方式改为归档方式
当控制文件有丢失时,无法打开控制文件,需要 startup nomount 只启动实例,不打开控文件和数据文件。在启动实例后重新创建控制文件
关闭实例:shutdown immediate 迫使每个用户执行完当前sql语句后立即断开连接 (最常用)
shutdown:正常关闭,后不跟参数时,等所有用户断开连接后,正常关闭。但是会有空闲用户长时间链接,所以很少用此命令
shutdown transactional 迫使用户当前执行完毕后,断开连接,回复破坏的文件
shutdown about 强行关闭,很可能造成文件破坏
浏览器访问oracle数据库:
http://主机名:5560/sqlplus
ps.连接标识符输入实例名
help index ##查询sqlplus支持的命令
? set ##查看set命令如何使用
select * from dept where deptno=10 ##查询部门编号为10的数据
select * from dept where deptno=&tt ##可以自定义tt的值,方便查询任何值的数据
list ##查看缓冲区中所写过的命令 简写为l
l2 4 ##查看list第2到第4行的命令
若不小心写错,如:select * fron dept 我们会发现把from错写为fron,此时可以如下操作
l ##查看命令,发现写错
c/n/m ##把n替换为m
/ ##执行缓冲区的命令
DEL 4 ##删除缓冲区中第4行命令 DEL 2 4 删除第二到第四行命令
A 命令 ##在缓冲区追加命令 如:目前缓冲区是select * 我们可以输入A from dept 再输入l 就会发现变成了select * from dept
save c:\oracle\test.txt ##把缓冲区命令保存到路径中(test.txt若不存在会自建)
@ c:\oracle\test.txt ##执行路径中的命令
get c:\oracle\test.txt ##获取路径中文本的内容(不执行)
edit ##默认打开记事本编辑缓冲区中的命令(不需要写;)
desc ##描述
break on XXX ##XXX列重复的只显示一遍
col ttittle btittle comp 等命令
spool c:\oracle\spool.txt
select * from dept
spool off ##把sql语句输出的数据保存到路径 再edit c:\oracle\spool.txt编辑