Oracle1

Oracle, SQL Server, MySQL 是当今最热的三大数据库 。让我们从 Oracle 数据库开始。

编写者:张东 00290412

2015/5/29

1. 序言

Oracle数据库,是当今最热门的一种数据库,在我们的工作中也常常遇到。

我知道,很多人想学,不得其法,最后就放弃了。

在我看来,学习是一个由简到繁、由粗到细的过程。

我将通过任务式的场景,用简单粗暴的方式,让初学者快速串联Oracle的基础知识,完成简单的数据库迁移过程。

这就是《零基础学习Oracle》初级篇的前3篇。本篇进行知识准备。

2. 数据库安装

2.1 概述

据我所知,有很多的Oracle初学者,不是止步不前在数据库安装这里,就是在这个地方,耗费了太多的时间和精力。原因在于,没有人告诉他们怎么直达目标。这就是我写本文的原因之一。

Oracle数据库,必须安装在操作系统上。我们选择Linux。因为只有很少的Oracle的数据库安装在Windows上,而是Linux是通向Unix之门。

所以,本文所说的零基础,是指Oracle零基础,不是IT零基础。对初学者也是有要求的,要求熟悉Linux操作系统:

1.    能够安装操作系统;

2.    熟悉文件系统的操作;

3.    熟悉常用命令。

我们对软件版本也是有要求的,而这些要求,是为了不走弯路。

Linux版本,我们选择Oracle Unbreakable Linux 6.4, 是最流行的RedHat Linux的变种。数据库版本,我们选择11g R2请注意版本号是11.2.0.4,很多初学者倒在了这里(必须≥ 11.2.0.3)。说白了,就是Oracle数据库与操作系统的兼容性问题。

2.2 Linux操作系统安装

2.2.1 软件包下载

Unbreakable Linux的网站是http://linux.oracle.com

没有账号,注册一个啊。再搞不定,找我啊,呵呵。

请下载Oracle Linux Release 6 Update 6 for x86_64(64bit)

2.2.2 操作系统安装

本节未形成闭环

在虚拟机里安装操作好Oracle Linux 6.4,分配4G以上内存,100G硬盘空间。

这里我就不做详细描述了。在将来的某一天,我会写一篇叫做《零基础学习Linux》,敬请期待。

请注意以下事项:

1.    Linux的软件包关联性是令人相当头疼的。要怎么才能不被它困扰呢?方法就是选择完全安装。

2.    使用文件系统,不使用卷。把除交换分区外的空间都分给/分区。

3.    设置好主机名和静态IP


2.3 Oracle数据库安装

2.3.1 软件包下载

很遗憾的是,无法直接从网上下载到Oracle 11.2.0.4版本。需要通过metalink网站。

点这里下载

只需要下载p13390677_112040_Linux-x86-64_1of7p13390677_112040_Linux-x86-64_2of7就好了。

需要账号才能登录?找我啊。

为了方便大家,我把这些软件包都放到onebox

2.3.2 准备工作

本步骤可能需要互联网支持

你知道的,安装准备工作是很麻烦的。我们有没有办法,简化操作呢。答案是有的。

请看以下文章How I Simplified Oracle Database 12c and 11g Installations on Oracle Linux 6

oracle-rdbms-server-11gR2-preinstall出马,就不用去修改一个一个配置文件了。

然后看这篇文章Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6

模仿进行安装。
2.3.3 开始安装

准备工作做完,我们就开始安装了。

麦肯锡告诉我们,不要重新发明轮胎。

那我们就继续看这篇文章吧。Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6

注意:

1.    创建的Oracle数据库名请选择DB11G

2.    数据库文件放在文件系统上

这里讲述的都是知识。要把知识转换为你的能力,还要依靠你的汗水和实践。

3. Oracle数据库的状态

Oracle数据库可以处于四种状态,我们简单地讲一下四种状态

 

上一个状态

下一可能状态

当前状态描述

可做操作

shutdown

其它任意状态

其它任意状态

数据库不可用,不能执行除startup外的SQL命令

通过操作系统命令复制数据库

nomount

shutdown

mount, shutdown

读取了参数文件,启动了数据库实例

恢复控制文件

mount

shutdown, nomount

open, shutdown

nomount基础上,加载了控制文件

恢复数据文件,启用归档模式,冷备份

open

shutdown, mount

shutdown

mount基础上,加载了数据文件

通常状态,可以读取写入数据

四种状态之间的转换关系如下:

·        shutdown → nomount → mount → open

·        shutdown → mount → open

·        shutdown → open

·        后三种状态可以直接 → shutdown

从左的状态到右的状态,需要执行的SQL命令:

 

shutdown

nomount

mount

open

shutdown

/

startup nomount

startup mount

startup

nomount

shutdown immediate

/

alter database mount

/

mount

shutdown immediate

/

/

alter database open

open

shutdown immediate

/

/

/

其中,切换到shutdown状态的SQL命令都一样

SQL> shutdown immediate 

那么问题来了:

1.    我怎么进行SQL命令的操作界面呢?

su - oracle

sqlplus "/ as sysdba"

然后就看见SQL>提示符了。注意阅读提示信息。

如果你看到“Connected to an idle instance.”,这表示数据库处于shutdown状态。

2.    我要查询数据库现在的状态,怎么做?

SQL> select status from v$instance;

SQL>之后,才是需要你输入的。

4. 参数文件,控制文件和数据文件

4.1 参数文件

我们也把它叫做spfile文件,是一个二进制文件。

启动Oracle数据库的第一步操作就是先启动实例,而启动实例的第一步操作就是要找到初始化参数文件。

它告诉操作系统怎么启动Oracle数据库。没有它,无法启动Oracle数据库。

它指出了控制文件的位置。

4.2 控制文件

控制文件,是一个二进制文件,是数据库的非常关键、非常重要的文件。它知道数据文件、重做日志的存放位置,数据库最新的状态点(CheckPoint),归档日志文件信息、备份信息等。

因为控制文件非常重要,所以控制文件至少要求有2个副本。

查询控制文件位置的SQL命令是:

SQL> show parameter control_files 

或者

SQL> select name from v$controlfile; 


4.3 数据文件

数据文件是用来存储实际数据的,是表的存放空间。可以这样说,数据库的核心就是数据文件。

数据库文件是进行数据库迁移的主要对象。

查看数据文件的信息

SQL> set linesize 160
SQL> col name format a60
SQL> select file#,name from v$datafile;


5. 重做日志和归档日志

5.1 重做日志

英文全名叫做online redo log,它实时记录数据库的数据更新,换句话说,实时保存已执行的SQL命令到在线日志文件中(按特定的格式)。

重做日志默认有3组,循环使用。每组最少1个成员文件。组内文件互为副本。所有重做日志文件大小相同。

重做日志文件是一个按线性写入的文件,当文件写满后(因为组内文件互为副本,所以整个日志组也被写满),会切换到下一组。在没有启用归档日志模式的情况下,上一个日志文件组会自动设置为可写状态,可以在下一次循环时被使用。

Oracle数据库基于“日志在先”原则,数据的更改有没有写入数据文件不重要,但必须要先写入重做日志。当没有可用的重做日志组时,数据库将不能被写入。

5.2 归档日志

如果启用了归档日志模式,每次切换重做日志组,都会把重做日志复制到归档日志目录,生成归档日志文件。归档日志的文件名是自动生成、顺序增长(形如11,12,13,14……),不会重复。

一句话总结:活着是重做日志(online redo log),死了变成归档日志(archived redo log)

在复制完成前,该重做日志组不能被写入;复制完成后,会把该重做日志组设置为可写状态。

常见的故障情况是,归档日志目录所在的文件系统被占满,无法完成重做日志的归档过程,重做日志不能被写入,导致数据库不可写入。

所以,一般情况下,生产系统的Oracle数据库启用了归档日志模式,会有相应的备份软件,自动地进行归档日志进行备份及备份后删除(调用RMAN命令删除归档日志,不能使用操作系统命令手动删除)。

5.3 启用归档日志模式

检查数据库是否启用归档日志模式

SQL> archive log list; 

回看第3章,它告诉了我们,我们需要在mount模式下启用归档日志模式。一般情况下,数据库处于Open状态,而Open状态的下一步状态是shutdown状态,也就意味着我们启用归档日志模式,需要先关闭数据库,再启动到mount状态。

启用归档日志模式

SQL> alter database archivelog; 

检查确认已经启用归档日志模式。

然后再把数据库切换到open状态。

6. 下一步行动

你对Oracle数据库已经不再无知了。

楼上的知识有何用?我将在下一篇告诉你。


谢谢大家的耐心阅读。你学习中的疑问和困惑,将是我改进的方向。如果我有幸能帮到你一点点,请赞一下,谢谢。你的鼓励,是我前进的动力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值