Q:什么是DBA?他的日常工作是什么?
A:DBA是database administratior 的缩写,平时的工作有一下几种。
管理数据库可用性(比如淘宝的网站是7*24的,是不可以宕机的,这就是高可用性。)
设计并创建数据库
管理物理结构
管理基于设计的存储
管理安全性
网络管理
备份与恢复(*很重要*)
数据库调整与优化(所谓的优化,就是一种经验的问题,就好像你虽然拿了驾照,但是第一次去高速开车还是会紧张,但是开多了就会习惯这节奏了。)
第一章 Oracle数据库概述
什么是数据库管理系统呢?
数据库就是存放用户数据的存储仓库,存入数据库中的数据可以方便的维护和高效灵活的读取。
DBMS = database management system 数据库管理系统
DBMS提供了数据的存储,访问,安全,一致性,并发操作,恢复等功能。
DBMS分为关系型和非关系型数据库
为了更好的组织数据以利于性能的提高,出现了进一步的数据规范原则--三范式,通过三范式将数据有效的组织成多个有特定数据关系的对象,这些对象叫做实体,而对象之间存在着数据关系,所以现有的数据库基本上都是关系型数据库(简称RDBMS)。
关系型数据库的组成
多个表数据之间存在着关系
关系用来描述多个表之间的数据依存,包括了一对一,一对多,多对多的关系
这些关系在oracle数据库中表现为主键、外键这些约束条件
RDBMS就是一个简历在这些关系模型基础上的
Oracle从7.3的版本就完全支持关系型数据库
Oracle公司简介
全球最大的数据库厂商---oracle 第二大的是IBM--sql语句就是IBM发明的
全球第二大软件供应商
以数据库为核心,提供了广泛应用于企业的大量应用软件
Oracle数据库的发展
Oracle于1976年成立,开始研发第一个商用的数据库Oracle DB
Oracle产品
·数据库
Oracle发布产品有个特点,就是第一个版本都不是很稳定,都是第二个版本才稳定
Oracle 10g release1----->不稳定版本
Oracle 10g release2----->稳定版本
g 代表支持网格计算
网格计算是云计算当中的一种安全访问控制
·应用服务器 IAS
里面包含了数据库,操作系统等等都是他公司开发的东西,这样一起卖给你他赚钱你也方便。
·开发工具包 IDS
developer2000
oracle数据库的优点
支持大数据量,多用户的并发事物处理
提供高强度下的高性能
遵守数据存取语言,操作系统、用户接口和网络通信协议的工业标准
提供安全性公职和完整性控制
支持分布式数据库和分布处理
具有可移植性、可兼容性和可连接性
全球化、跨平台的数据库
Oracle的主要开发工具和管理工具
开发工具:sql*plus, Pro*c ,Sqlj,form,report,jdeveloper
管理工具:Sql*plus(可以解决任何问题),OEM(图形界面的管理后台),sql*loader Grid control,isqlpus,sqldevelop
第三方的管理工具:Toad,PL/SQLDevelop(中国人用的最多)
Oracle数据库的一些基本概念
数据库对象:
表table
约束constraint(允不允许有重复的记录等等。。)
视图view(一种查询语句的别名,比如有个sql语句有2k行,你每次用都要打2k行,就很麻烦,如果存储成为一个view就方便了,下次查询这个view的语句就好了)
索引index(比如表之中有2W记录,但是要访问10条记录,如果不使用索引,那就会访问2W条记录,也就是全表扫描。使用了index以后,建立一个index信息,记录了那些行有哪些信息,如果要访问这10条记录,只要访问这10条记录所在的块就可以了,加快查找数据的速度)
同义词synonym(数据库中的表,视图,索引,行数,包的别名)
存储过程produre(高级)
函数function(高级)
包package(高级)
触发器trigger(高级)
数据库安全:
用户 user(密码长度,大小写,字符)
方案 schema(模式对象,用户下面的表,用户下面的视图,用户下面的索引,用户下面的包用户加上这些对象就是这里的方案。)
权限 privilege(用户的权限:远程连接,允许访问表的权限,允许执行某个脚本的权限)
角色 role(比如说有10个权限,但是公司里面有100个用户,这个时候就太累了,简化权限管理,把10个权限做成一个整体,再把整体赋给用户,这个时候,这个整体就是rolo。也就是多种权限的集合)
配额 quota(控制用户使用表空间能够使用多大的大小,如果不控制的话,就会有人把数据都塞满了。虚拟主机托管商。买了一个空间,50M的空间,那么这个用户只能用这么大的空间。)
数据库文件与存储:
数据文件datafile(你的操作系统当中,通过你的文件访问方式能够看得到的东西。就是物理系统中存在的一个文件)
表空间 tablespace(数据文件当中,是按照什么方式去存放的,首先是以表空间为单位,是一种逻辑的东西。表空间由段空间组成,段空间由区空间组成,区空间以后组成才是块,块才写到数据文件里面)
控制文件 controlfile(记录数据库的结构和行为,比如说这个数据库有多少的数据文件,有多少的日志文件,在什么时间数据库启动了,什么时候关闭了,什么时候宕机了。都会记录在控制文件里面)
重做日志文件redo log(也称为联机日志文件:监控的作用,进程的调度,都会记录下来。假如发现删错文件,就可以根据这个恢复。没有完成的任务,可以根据日志文件当中记录的东西进行重做。比如做一个insert操作没有做完,事务已经提交,这个时候断电,系统会自动根据日志当中的内容,重新把你提交之前的数据都写到文件里面去这样数据就不会丢失)
初始化参数文件 pfile spfile(有两种参数文件:1.文本参数2.服务器的2进制参数文件。都是可以用的。9I以后才可以用)
数据库网络访问:
数据库名称 db_name(通过create database 创建出来的数据库名称)
实例名 instance_name(一种访问oracle的方式,oracle不能进入数据库以后,不能直接访问数据库里面的内容,必须先通过他的实例,然后再调用相关的后台进程去访问数据库里面的物理文件,然后才得到相应的内容。)
服务名 service_name(用于进行远程访问,调用网络的方式去进行相关的操作。怎么定义服务名呢?是网络配置的一个功能)
连接字符串 ip:port/tnsname(有好多种~1.可以通过sql*plus连接,2.通过jdbc连接.3.通过OCI连接)
ip:(description)
服务命名 tnsname(你的服务名通过什么方式命名出来。。。不懂什么意思。。。)
监听器listener(如果要进行远程访问,就要把远程的功能打开,把某个端口打开。这个就是网络管理中的范畴)
DBA的原则
第一守则--备份重于一切!(系统总是要崩溃的,没有有效的备份只是等哪一天over)数据无价!
第二守则--三思而后行
第三守则--rm是危险的(恢复不了)
第四守则--你来指定规范!(良好的规范是减少故障的基础)