Oracle数据备份和恢复
Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法。
本文涉及的备份与恢复的其它概念都是狭义的,不完整的或不完全准确的,仅供参考。
一、备份与恢复的概念
1、什么是备份
备份就是把数据库中的数据复制到存储设备的过程,存储设备包括磁盘、磁带、光盘等,随着存储技术的发展,磁带和光盘已经很少使用。
2、备份的方法
1)物理备份
对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(rman)或操作系统命令进行数据库的物理备份。
2)逻辑备份
对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的exp,数据泵(expdp),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。
3、备份的策略
1)完全备份
每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依 ...
Oracle的启动和关闭
Oracle数据库的启用和关闭需要DBA权限,本文介绍的全部操作由sysdba来执行。
在运行数据库实例的操作系统的shell里执行以下命令就可以获得sysdba权限。
1sqlplus / as sysdba
一、数据库的启动
Oracle数据库实例的启动要经历三个阶段。
1)nomount:启动实例(Start an instance)。
2)mount:装载数据库(Mount the database)。
3)open:打开数据库(Open the database)。
1、启动实例
执行以下命令启动数据库实例:
1startup nomount;
nomount状态启动Oracle的可执行程序,初始化数据库实例,包括以三步骤:
1)读取参数文件pfile或spfile,pfile是文本文件,spfile是二进制文件,它们的内容相同,只是格式不一样,oracle推荐使用spfile。spfile存放在$ORACLE_HOME/dbs目录下,默认名字是spfile$ORACLE_SID.ora,如/oracle/home/dbs/spfilesnorcl11g.ora。
2 ...
Oracle表空间和数据文件
一、表空间的概念
Oracle数据库的数据存放在表空间中,表空间是一个逻辑的概念,它是由数据文件组成,表空间大小由数据文件的数量和大小决定。
表空间有三种:Permanent Tablespaces(永久表空间)、Temporary Tablespaces(临时表空间)、Undo Tablespaces(回滚表空间),Oracle在创建数据库实例的时候,默认会创建三个永久表空间(SYSTEM、SYSAUX、USERS),一个临时表空间(TEMP),一个回滚表空间(UNDOTBS1)。
1、SYSTEM表空间
SYSTEM表空间主要用于存放Oracle数据库内部的数据字典,它是Oracle数据库最重要的表空间,在创建数据库实例时被最先创建,包含了数据库的元数据,对于数据库来说生死攸关。
2、SYSAUX表空间
SYSAUX表空间是SYSTEM表空间的辅助表空间,主要用于存储数据字典以外的其他数据对象,它在一定程度上降低了SYSTEM表空间的负荷。
3、UNDOTBS1表空间
UNDO是回滚表空间,主要有四方面的用途,分别是:事物回滚、数据库恢复、读一致性、闪回查询。
1)事物回滚 ...
Oracle用户和权限管理
当创建一个新数据库实例时,Oracle会创建sys、system和scott数据库用户。sys和system是管理员用户,它们的密码在创建数据库时指定。scott是示范用户(用于学习),里面包括了一些测试数据(DEPT、EMP、BONUS和SALGRADE表),scott用户缺省是锁定状态。
一、数据库管理员
数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统的相关工作人员的统称,属于运维工程师的一个分支,主要负责数据库的设计、部署、运维和管理,侧重于运维管理。
DBA的核心目标是保证数据库系统的稳定性、安全性、完整性和高性能,保证数据库服务7*24小时的稳定高效运转。
数据库实例创建后,在数据库服务器上,用 sqlplus / as sysdba 可以以DBA身份登录数据库,如下:
二、用户管理
1、创建用户
创建用户的命令是 create user,它的选项非常多,在这里我介绍一些常用的选项。
语法:
12345create user 用户名 identified by 密码 [default tablesp ...
Oracle union多表查询
union就是把两个结果集合并起来,被合并的两个结果集的字段数量要相同,数据类型要相似(兼容)。
union在合并两个结果集的时候,会自动去除重复的数据。
union all在合并两个结果集的时候,只是简单的将两个结果集中的数据进行连接,不会去除重复的数据。
我通过一些示例来向大家介绍子查询的常用方法。
一、生成测试数据
1、创建超女基本信息历史表(T_GIRL_HIS)
123456789101112131415161718192021222324create table T_GIRL_HIS( id char(4) not null, -- 编号 name varchar2(10) not null, -- 姓名 yz varchar2(10) null, -- 颜值 sc varchar2(10) null, -- 身材 weight number(4,1) not null, -- 体重 height number(3) ...
Oracle join多表查询
join(连接)是一个查询,它将来自两个或多个表、视图的数据组合在一起。
我通过一些示例来向大家介绍join的常用方法。
一、生成测试数据
1、创建超女基本信息历史表(T_GIRL_HIS)
123456789101112131415161718192021222324create table T_GIRL_HIS( id char(4) not null, -- 编号 name varchar2(10) not null, -- 姓名 yz varchar2(10) null, -- 颜值 sc varchar2(10) null, -- 身材 weight number(4,1) not null, -- 体重 height number(3) not null, -- 身高 birthday date not null, -- 出生时间 memo varchar2(1 ...
Oracle子查询
如果SQL语句中包含了另一个select语句的时候,就称为子查询,子查询在select、insert、update或delete命令中都可以包含子查询,子查询还可以包含在另外一个子查询中,以便完成更为复杂的查询。
我通过一些示例来向大家介绍子查询的常用方法。
一、生成测试数据
1、颜值参数表
编号(主键)
颜值描述
显示顺序
备注
1
倾国倾城
1
第一等美女。
2
风华绝代
2
第二等美女。
3
迷倒众生
3
第三等美女。
4
漂亮
4
普通美女。
5
一般
5
6
猪扒
6
2、身材参数表
编号(主键)
身材描述
显示顺序
备注
1
火辣
1
前凸后翘。
2
丰满
2
体态丰腴。
3
苗条
3
风姿绰约。
4
一般
4
5
膘肥体壮
5
强悍无比。
3、超女基本信息表
编号 (主键)
姓名
颜值代码 (外键)
身材代码 (外键)
身高
备注
0101
西施
2
4
170
这是一个非常漂亮姑娘,老公是夫差,男朋友是范蠡。
0102
貂禅
1
2
168
王允真不是男人,干不过 ...
Oracle的主键和外键
一、表的主键
在现实世界中,很多数据具有唯一的特性,例如身份证号码,在国家人口基本信息表中,一定不会存在多个人用同一个身份证号码的情况,再例如手机号码、QQ号码、银行帐号等等,还有学生管理系统,学生的年级、班级和学号三个字段组合起来是唯一的标识。
如果表中一个字段或多个字段组合起来的值是唯一的,就可以作为表的主键,在创建或修改表时用primay key关键字来指定主键。一个表只能有一个主键,而且组成主键的每个字段值都不能为空。
主键的作用:
1)体现数据结构设计的合理性。
2)提升数据操作的速度。
3)保证数据的完整性,在表中添加或修改记录时,数据库会检查该记录主键的值,不允许与其它记录主键的值重复,这种做法有个专业的名词:主键约束。
例如超女基本信息表,编号的字段名是id,在超女选秀活动中,每个超女的编号肯定是唯一的,不可能存在两个编号相同的超女,否则会引起混乱,我们可以把id字段设置为T_GIRL表的主键,后面的工作交给数据库,如果试图往表中插入多条id相同的记录,数据库将拒绝。
指定表的主建有两种方法。
1)在create table时指定。
123456789101112cr ...
Oracle的distinct关键字
distinct关键字用于从查询的结果集中筛选出唯一值的记录。
我们通过示例来介绍distinct关键字的用法。
一、生成测试数据
用以下SQL创建超女基本信息表(T_GIRL),插入一些测试数据。
1234567891011121314151617181920212223create table T_GIRL( id char(4) not null, -- 编号 name varchar2(30) not null, -- 姓名 yz varchar2(20) null, -- 颜值 sc varchar2(20) null, -- 身材 weight number(4,1) not null, -- 体重 height number(3) not null, -- 身高 birthday date not null, -- 出生时间 memo varchar2(1000 ...
Oracle的别名
在SQL语句中,可以给表和列起别名,这是临时的别名,与同义词不一样,同义词是永久的别名。
别名是多表查询和嵌套查询语句的基础知识,本文只介绍别名的语法,不涉及别名的应用技巧,大家在学习的时候可能觉得别名没什么意义,其实不然。
一、生成测试数据
用以下SQL创建超女基本信息表(T_GIRL),插入一些测试数据。
1234567891011121314151617181920212223create table T_GIRL( id char(4) not null, -- 编号 name varchar2(30) not null, -- 姓名 yz varchar2(20) null, -- 颜值 sc varchar2(20) null, -- 身材 weight number(4,1) not null, -- 体重 height number(3) not null, -- 身高 birthday date ...