标题：Oracle数据库
概论
ORACLE 数据库系统是美国ORACLE公司（甲骨文）提供的以分布式数据库为核心的一组软件产品，是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统，作为一个通用的数据库系统，它具有完整的数据管理功能；作为一个关系数据库，它是一个完备关系的产品；作为分布式数据库它实现了分布式处理功能。但它的所有知识，只要在一种机型上学习了ORACLE知识，便能在各种类型的机器上使用它。
特点
[1]1、完整的数据管理功能：
1）数据的大量性
2）数据的保存的持久性
3）数据的共享性
4）数据的可靠性
2、完备关系的产品：
1）信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法，即表中的值显式地表示；
2）保证访问的准则
3）视图更新准则---只要形成视图的表中的数据变化了，相应的视图中的数据同时变化
4）数据物理性和逻辑性独立准则
3、分布式处理功能：
1）ORACLE数据库自第5版起就提供了分布式处理能力，到第7版就有比较完善的分布式数据库功能了，一个ORACLE分布式数据库由oracle rdbms、sql*Net、SQL*CONNECT和其他非ORACLE的关系型产品构成。
4、用ORACLE能轻松的实现数据仓库的操作。
这是一个技术发展的趋势，不在这里讨论。
优点　
■ 可用性强 
■ 可扩展性强 
■ 数据安全性强 
■ 稳定性强 
比较
在了解了ORACLE数据库[2]后，我们有必要对ORACLE和Sybase SQL Server的比较， Oracle采用的是并行服务器模式，而Sybase SQL Server采用的是虚拟服务器模式，它没有将一个查询分解成多个子查询，再在不同的CPU上同时执行这些子查询。我们可以说在对称多处理方面Oracle的性能优于Sybase的性能。业务量往往在系统运行后不断提高，如果数据库数量达到GB以上时，我们在提高系统的性能方面可以从两方面入手，一种是提高单台服务器的性能，还有就是增加服务器数目。基于此，如果我们是提高单台服务器的性能,选择Oracle 数据库较好,因为它们能在对称多CPU的系统上提供并行处理。相反,由于Sybase的导航服务器使网上的所有用户都注册到导航服务器并通过导航服务提出数据访问请求,导航服务器则将用户的请求分解,然后自动导向由它所控制的多台SQL Server,从而在分散数据的基础上提供并行处理能力，我们可以选择它。这些都是在其他条件和环境相同的情况下比较的，这样才有可比性。在数据的分布更新方面,Oracle采用的是基于服务器的自动的2PC(两阶段提交),而Sybase采用的则是基于客户机DB-Library或CT-Library的可编程的2PC，因此我们在选择数据库方面，必须根据需要进行选择，比如，从事的社会保险软件的开发，考虑到数据量大，并发操作比较多，实时性要求高，我们后台基本采取的是ORACLE数据库。Oracle服务器由Oracle数据库和Oracle实例组成。Oracle实例由系统全局区内存结构和用于管理数据库的后台进程组成。
就业前景
从就业与择业的角度来讲，计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。
其一、就业面广：ORACLE帮助拓展技术人员择业的广度，全球前100强企业99家都在使用ORACLE相关技术，中国政府机构，大中型企事业单位都能有ORACLE技术的工程师岗位，大学生在校期间兴趣广泛，每个人兴趣特长各异，不论你想进入金融行业还是电信行业或者政府机构，ORACLE都能够在你的职业发展中给你最强有力的支撑，成为你最贴身的金饭碗。
其二、技术层次深：如果期望进入IT服务或者产品公司（类似毕博、DELL、IBM等），Oracle技术能够帮助提高就业的深度。Oracle 技术已经成为全球每个IT公司必选的软件技术之一，熟练掌握Oracle技术能够为从业人员带来技术应用上的优势，同时为IT技术的深入应用起到非常 关键的作用。掌握 Oracle技术，是IT从业人员了解全面信息化整体解决方案的基础。
其三、职业方向多：Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向.
客户端
为数据库用户操作端，由应用、工具、SQL* NET组成，用户操作数据库时，必须连接到一服务器，该数据库称为本地数据库（Local DB）。在网络环境下其它服务器上的 DB称为远程数据库（Remote DB）。用户要存取远程 DB上的数据时，必须建立数据库链。 
Oracle数据库的体系结构包括物理存储结构和逻辑存储结构。由于它们是相分离的，所以在管理数据的物理存储结构时并不会影响对逻辑存储结构的存取。
存储结构
它由至少一个表空间和数据库模式对象组成。这里，模式是对象的集合，而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构：表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围，用于描述怎样使用数据库的物理空间。而其中的模式对象和关系形成了数据库的关系设计。 
数据块（Block）：
是数据库进行IO操作的最小单位，它与操作系统的块不是一个概念。oracle数据库不是以操作系统的块为单位来请求数据，而是以多个Oracle数据库块为单位。 
段（Segment）：
是表空间中一个指定类型的逻辑存储结构，它由一个或多个范围组成，段将占用并增长存储空间。 
其中包括： 
数据段：用来存放表数据；
索引段：用来存放表索引； 
临时段：用来存放中间结果； 
滚段：用于出现异常时，恢复事务。 
范围（Extent）：是数据库存储空间分配的逻辑单位，一个范围由许多连续的数据块组成，范围是由段依此分配的，分配的第一个范围称为初始范围，以后分配的范围称为增量范围。
恢复技术
恢复意义当我们使用一个ORACLE数据库时，总希望数据库的内容是可靠的、正确的，但由于计算机系统的故障（硬件故障、网络故障、进程故障和系统故障）影响数据库系统的操作，影响数据库中数据的正确性，甚至破坏数据库，使数据库中全部或部分数据丢失。因此当发生上述故障后，希望能重新建立一个完整的数据库，该处理称为数据库恢复。恢复子系统是数据库管理系统的一个重要组成部分。恢复处理随时随地所发生的故障类型所影响的结构而变化。恢复方法IMPORT方法：
利用IMPORT，将最后一次EXPORT出来的数据文件IMPORT到新的数据库中，这种方式可以将任何数据库对象恢复到它被导出时的状态，此后的变化将无法挽回。IMPORT的命令可以交互式进行，各参数的具体含义见Oracle EXP/IMP参数详解。这种方式适用于没有采用archive 模式的环境。
安全的恢复方法：
如果数据库运行在archive 模式下，那么一旦数据库损坏则可以通过冷备份(热备份)和归档备份将数据库恢复到断点状态。
数据库控制文件恢复（假设所有控制文件均被破坏）：
数据库基于文件系统： 利用操作系统的tar、cp等命令即可。
数据库基于裸设备：dd if=$ORACLE_BASE/con.bak of=/dev/rdrd/drd1 seek=12
数据库数据文件恢复数据及索引表空间、系统表空间的恢复：回拷相关的数据库文件和该数据文件备份以来所有生成的所有逻辑日志文件并执行如下命令：
svrmgrl > startup mount 
svrmgrl > alter database recover automatic 
如果控制文件被破坏，则：
svrmgrl > alter database recover using backup controfile; 按照提示输入log文件名和redolog文件名 
svrmgrl > alter database open resetlogs; 
数据库临时文件和回滚表空间的恢复：简单地offline drop 并重建即可 。
注意：如果数据库不运行在archive 模式下，则恢复只能恢复到上次备份时的状态。
安装过程
[3]一、准备安装
基本都是按部就班。
使用的OS版本：OEL4
[oracle@ractest orcl]$ cat /etc/redhat-release
Enterprise Linux Enterprise Linux AS release 4 (October Update 5)
[oracle@ractest orcl]$ cat /etc/enterprise-release
Enterprise Linux Enterprise Linux AS release 4 (October Update 5)
安装程序路径：
/mnt/Oracle11g_linux_x86_64/database
创建用户
groupadd -g 1001 dba
groupadd -g 1002 oinstall
useradd -u 10000 -g dba -G oinstall,dba -d /home/oracle -s /bin/bash oracle
chown -R oracle:dba /home/oracle
usermod -g dba -G oinstall,dba oracle
使用的.bash_profile
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/11g
export ORA_CRS_HOME=$ORACLE_BASE/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=orcl1
export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:${PATH}:$HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/
oracm/lib:$ORACLE_HOME/lib
export LIBPATH=$LIBPATH:$ORA_CRS_HOME/lib:$ORACLE_HOME/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME
/network/jlib:$ORACLE_HOME/JRE
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export NLS_LANG=american_america.WE8ISO8859P1
export DISPLAY=10.198.90.55:2
alias sysdba="sqlplus '/as sysdba'"
export EDITOR=vi
修改的核心参数：
kernel.shmall = 2097152
kernel.shmmax = 2 147483648
kernel.shmmni = 4096
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
使用xclock检查display正确：
代码:
[oracle@ractest ~]$ xclock
[oracle@ractest ~]$ /mnt/Oracle11g_linux_x86_64/database
[oracle@ractest ~]$ cd /mnt/Oracle11g_linux_x86_64/database
[oracle@ractest database]$ ls -l
total 10
drwxr-xr-x 4 1003 oinstall 96 Mar 23 18:45 doc
drwxr-xr-x 5 1003 oinstall 1024 Mar 23 18:45 install
drwxr-xr-x 2 1003 oinstall 1024 Mar 23 18:45 response
-rwxr-xr-x 1 1003 oinstall 1251 Mar 23 18:45 runInstaller
drwxr-xr-x 12 1003 oinstall 1024 Mar 23 18:45 stage
-rw-r--r-- 1 1003 oinstall 4638 Mar 23 18:45 welcome.html
[oracle@ractest database]$ ./runInstaller
Starting Oracle Universal Installer...
Checking installer requirements...
Checking operating system version: must be redhat-3, SuSE-9,
redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed
All installer requirements met.
Preparing to launch Oracle Universal Installer from
/tmp/OraInstall2007-06-28_02-26-12AM. Please wait ...
[oracle@ractest database]$ Oracle Universal Installer, Version 11.1.0.2.0 Production
Copyright (C) 1999, 2007, Oracle. All rights reserved.
Oracle Universal Installer, Version 11.1.0.2.0 Production
Copyright (C) 1999, 2007, Oracle. All rights reserved.
启动图形以后选择basic&n
选择oracle base的时候，oracle不推荐使用user home作为oracle base，这里我选yes忽略
进行prerequirements检查的时候，安装程序认为swap不足，我选择YES忽略
执行提示脚本，安装完毕
代码:
[oracle@ractest database]$
[oracle@ractest database]$ su - root
Password:
[root@ractest ~]# /home/oracle/oraInventory/orainstRoot .sh
Changing permissions of /home/oracle/oraInventory to 770.
Changing groupname of /home/oracle/oraInventory to dba.
The execution of the script is complete
[root@ractest ~]# /home/oracle/11g/root .sh
Running Oracle 11g root .sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /home/oracle/11g
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root&nbsp;.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@ractest ~]#
安装完毕。[4]