编写者:张东 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_1of7和p13390677_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 → nomount → mount → open
· shutdown → mount → open
· shutdown → open
· 后三种状态可以直接 → shutdown
从左的状态 → 到右的状态,需要执行的SQL命令:
其中,切换到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数据库已经不再“无知”了。
楼上的知识有何用?我将在下一篇告诉你。
谢谢大家的耐心阅读。你学习中的疑问和困惑,将是我改进的方向。如果我有幸能帮到你一点点,请赞一下,谢谢。你的鼓励,是我前进的动力