Oracle 11g R2安装

1.1 安装前准备:

本文是在RHEL6.0x64系统上安装oracle11g

 

oracle 11g R2安装与配置_11g 

物理内存应不少于1GB,对于VMWARE虚拟机建议不少于1200MB.对于系统中的交换分区设置,应参以下约定:物理内存为1GB~2GB时,交换分区为物理内存的1.5~2倍;物理内存为2GB~16GB时,交换分区与物理内存大小相同;物理内存超过16GB时,交换分区使用16GB就可以了。

 oracle 11g R2安装与配置_11g_02

对于32位的oracle11g数据库,若程序文件和数据文件安装在同一个分区,则该分区的硬盘空间要求分别为:企业版5.65GB、标准版5.38GB;除此以外,还应确保/tmp目录所在分区的空间不少于1GB,总的来说,建议为oracle11g准备至少8GB的硬盘空间

oracle用户设置Shell限制为了优化性能,需要添加oracle用户限制参数。进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序loginPAM设置以启用该认证。

修改/etc/security/limits.conf将用户oracle能够打开的进程数、进程使用的文件数加在。加入如下内容:

oracle 11g R2安装与配置_R2_03 

注:

1行是设置进程数软限制;第2行是设置进程数硬限制;第3行是设置文件数软限制;第4行是设置文件数硬限制

修改/etc/pam.d/login,加入如下内容:

 oracle 11g R2安装与配置_R2_04

1.在安装oracle时,假设使用名为oracle用户安装oracle数据库,必须以oracle用户登录一次Linux系统。

 oracle 11g R2安装与配置_R2_05

pdksh-5.2.14-37.el5_8.1.x86_64.rpmrlwrap-0.37.tarinstall.shzysong以及oracle的安装文件拷贝到oracle用户的家目录下。

 oracle 11g R2安装与配置_11g_06

2.安装oracle时,一定要保证主机名出现在/etc/hosts中。

[root@orclsrv ~]# vi /etc/sysconfig/network

oracle 11g R2安装与配置_R2_07

[root@orclsrv ~]# vi /etc/hosts

oracle 11g R2安装与配置_R2_08

 

重新启动系统

4.配置YUM

[root@orclsrv ~]# vim /etc/yum.repos.d/rhel.repo

[oracle]

name=oracle

baseurl=file:///mnt/Server

enabled=1

gpgcheck=0

挂在光盘到/mnt

[root@orclsrv ~]# mount /dev/cdrom /mnt

mount: block device /dev/sr0 is write-protected, mounting read-only

关闭防火墙

[root@orclsrv ~]# serviceiptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

4.创建/u01目录

[root@orclsrv ~]#mkdir /u01

5.oracle11g的安装文件拷贝到/u01

[root@orclsrv oracle]# mv linux.x64_11gR2_database_* /u01/

6.解压安装包

[root@orclsrv u01]# unzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip

7.删除oracle安装文件,节省磁盘空间

[root@orclsrvu01]# rm -rf linux.x64_11gR2_database_*

8.使用oracle用户安装oracle11g R2

9.oracle用户安装oracle,修改/u01目录的属主和属组为oracle用户

[root@orclsrv u01]# ls -ld /u01/

drwxr-xr-x 3 root root 4096 Aug 12 09:56 /u01/

[root@orclsrv oracle]# chown -R oracle:oracle /u01/

[root@orclsrv u01]# ls -ld /u01/

drwxr-xr-x 3 oracle oracle 4096 Aug 12 09:56 /u01/

1.2 开始安装oracle 11g R2

使用oracle用户身份运行/u01/database/runinstaller

[oracle@orclsrv u01]$ ls

database

[oracle@orclsrv u01]$ cd database/

[oracle@orclsrv database]$ ls

doc  install  response  rpm  runInstallersshsetup  stage  welcome.html

[oracle@orclsrv database]$ ./runInstaller

 

发现oracle安装界面上的文字都是方块字。

oracle 11g R2安装与配置_oracle_09

 

出现这种情况的原因是:oracle所使用的字体在我们当前的操作系统里不存在的原因。

解决办法:

首先创建一个目录

mkdir–p /usr/share/fonts/zh_CN/TrueType

将字体文件拷贝到上面创建的目录中

[root@orclsrv oracle]# cp zysong.ttf /usr/share/fonts/zh_CN/TrueType/

[root@orclsrv oracle]#chmodo+r/usr/share/fonts/zh_CN/TrueType/zysong.ttf

[oracle@orclsrv database]$ ./runInstaller

 oracle 11g R2安装与配置_R2_10

安装oracle软件的同时创建数据库

oracle 11g R2安装与配置_R2_11

oracle 11g R2安装与配置_11g_12

 oracle 11g R2安装与配置_11g_13

修改oracle用户的.bash_profile

export ORACLE_BASE="/u01/app/oracle"

export ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"

export PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_SID=orcl

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"

expor PATH

ORACLE基目录:符合OFAoracle目录结构的根,适用于计算机上的所有oracle软件产品。这个环境变量制定计算机上所有的oracle产品的目录,例如/u01/app/oracle .

软件位置:<ORACLE_HOME>:当前oracle安装软件的主目录,通常这个环境变量的指定有ORACLE_BASE指示的路径下的一个目录,如/u01/app/oracle/product/

10.设置环境变量:为了使oracle在安装完成后能够正常工作,还需要为oracle用户配置一些列的环境变量。在Windows环境下,安装oracle软件时创建的注册表条目会自动完成环境变量的设置,但是在unixLinux环境中,我们需要人工配置这些环境变量。

以下是oracle清单目录的位置以及用户名,我们使用oracle用户即可。

 

oracle 11g R2安装与配置_oracle_14 

oracle安装之前需要修改很多内核参数,oracle越来越人性化,只需在界面上点击“修补并在次检查”

oracle 11g R2安装与配置_R2_15

 

root用户身份运行脚本

oracle 11g R2安装与配置_R2_16

 

[root@orclsrv u01]# /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh

Response file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.response

Enable file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable

Log file location: /tmp/CVU_11.2.0.1.0_oracle/orarun.log

Setting Kernel Parameters...

kernel.sem = 250 32000 100 128

fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.wmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576

uid=500(oracle) gid=500(oracle) groups=500(oracle)

[root@orclsrv u01]#

yum安装依赖的软件包

[root@orclsrv u01]# yum -y install libaio glibc compat-libstdc* elfutils-libelf-devel\* gcc-c++ libaio-devel unixODBC\* readline\*

oracle 11g R2安装与配置_11g_17 

[root@orclsrv u01]# cd ~oracle/

[root@orclsrv oracle]# rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

warning: pdksh-5.2.14-37.el5_8.1.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID e8562897: NOKEY

Preparing...                ########################################### [100%]

 1:pdksh                  ########################################### [100%]

点击重新检查,如下图所示,点击“全部忽略”,在点击“下一步”,这些包是32位的包所以可以忽略。

oracle 11g R2安装与配置_oracle_18

 

oracle 11g R2安装与配置_R2_19 

在创建数据库时,会弹出两次小窗口,点击忽略即可。

口令管理为sys,system用户设置管理口令,启用scott用户,设置管理口令

oracle 11g R2安装与配置_11g_20 

启用scott用户,该用户默认是锁定状态,不锁定scott用户

oracle 11g R2安装与配置_11g_21 

提示以root用户运行前面指定的oracle详细目录中的一个脚本orainstRoot.sh。在服务器上首次安装任何oracle产品时,都需要运行该脚本,运行这个脚本会创建名为oraINST.loc的详细目录清单文件,从而能够创建其他目录,为文件设置正确的所属关系和权限。

[root@orclsrv ~]# /u01/app/oraInventory/orainstRoot.sh

更改权限/u01/app/oraInventory.

添加组的读取和写入权限。

删除全局的读取写入和执行权限。

 

更改组名/u01/app/oraInventory到 oracle.

脚本的执行已完成。

[root@orclsrv ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh

Running Oracle 11g root.sh script...

 

The following environment variables are set as:

    ORACLE_OWNER= oracle

    ORACLE_HOME=  /u01/app/oracle/product/11.2.0/dbhome_1

 

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.sh script.

Now product-specific root actions will be performed.

Finished product-specific root actions.

oracle 11g R2安装与配置_oracle_22 

oracle 11g R2安装与配置_R2_23

oracle 11g R2安装与配置_oracle_24

 

注销oracle用户后,就可以变成中文界面了

oracle 11g R2安装与配置_oracle_25 

1.3 使用脚本检查oracle安装先决条件

 

install.sh脚本为配置oracle用户的环境变量,安装oracle需要安装的依赖包,改变oracle语言环境,运行脚本之前需要配置IP地址,主机名,yum仓库,

[oracle@orclsrv ~]$ cat install.sh 

使用root用户运行install.sh脚本

 oracle 11g R2安装与配置_11g_26

运行完脚本查看oracle用户的.bash_profile

oracle 11g R2安装与配置_R2_27 

执行source .bash_profile

oracle 11g R2安装与配置_oracle_28 

oracle的安装包拷贝到/u01目录下

 oracle 11g R2安装与配置_R2_29

解压oracle软件包

 oracle 11g R2安装与配置_oracle_30

删除oracle安装文件

 oracle 11g R2安装与配置_oracle_31

使用oracle用户安装oracle

oracle 11g R2安装与配置_11g_32 

oracle 11g R2安装与配置_oracle_33

oracle 11g R2安装与配置_oracle_34

oracle 11g R2安装与配置_oracle_35

oracle 11g R2安装与配置_11g_36

oracle 11g R2安装与配置_oracle_37

oracle 11g R2安装与配置_R2_38

 

后面的部分和上节内容一致,请参考。

测试安装完的oracle

oracle 11g R2安装与配置_R2_39 

oracle 11g R2安装与配置_11g_40 

oracle安装知识点:

设置环境变量:为了使oracle在安装完成后能够正常工作,还需要为oracle用户配置一些列的环境变量。在Windows环境下,安装oracle软件时创建的注册表条目会自动完成环境变量的设置,但是在unixLinux环境中,我们需要人工配置这些环境变量。

 

ORACLE_BASE:符合OFAoracle目录结构的根,适用于计算机上的所有oracle软件产品。这个环境变量制定计算机上所有的oracle产品的目录,例如/u01/app/oracle .

ORACLE_HOME:当前oracle安装软件的主目录,通常这个环境变量的指定有ORACLE_BASE指示的路径下的一个目录,如/u01/app/oracle/product/

ORACLE_SID:将要连接或创建的oracle实例的标识符。该环境变量在大多数环境下必须为8个或8个以下的字符,这些字符以字母开头,并且可以包含字母和数字。在实际应用群集环境下这个环境变量必须为5个或少于5个字符。虽然ORACLE_SID总是被设置为本地连接到的一个实例,默认的实例名为ORCL

NLS_LANG:这个环境变量指定用于oracle安装的全局设置,采用的格式为language_territory.character_set。在除了Windows之外的环境中,NLS_LANG的默认值都为“American_AmericaUS7ASCII”。在Windows环境中,NLS_lang的值被设置成为操作系统与键盘设置所指定的区域。

DISPLAY:Unix下需要为OUI指明图形屏幕显示的发送位置。默认的方法是继承操作系统中DISPLAY环境变量的值,并且按照这个值发送所有输出。

1.4 安装oracle时不创建数据库

安装oracle时不安装数据库,操作系统准备和环境准备就不做重复截图了。

oracle 11g R2安装与配置_oracle_41

oracle 11g R2安装与配置_R2_42

oracle 11g R2安装与配置_R2_43

oracle 11g R2安装与配置_R2_44

oracle 11g R2安装与配置_11g_45

oracle 11g R2安装与配置_oracle_46


root用户脚本之后开始安装oracle 11g R2

使用DBCA数据库助手创建数据

oracle 11g R2安装与配置_11g_47

oracle 11g R2安装与配置_11g_48

oracle 11g R2安装与配置_R2_49

退出DBCA

oracle 11g R2安装与配置_R2_50

 oracle 11g R2安装与配置_11g_51

oracle 11g R2安装与配置_11g_52

oracle 11g R2安装与配置_oracle_53

oracle 11g R2安装与配置_oracle_54

oracle 11g R2安装与配置_R2_55

 

1.5 了解oracle数据库管理工具

1.OEM: oracle企业管理器

oracle 企业管理器有两个工具可以使用。分别是database controlgrid control前者用来管理单实例的环境。grid control是用来管理RAC环境的。grid control必须安装oracle网格计算。我们现在使用的是database control

通过database control访问OEM的方式:

oracle 11g R2安装与配置_R2_56 

https://orclsrv:1158/em

我们还可以使用sqlplus连接数据库

oracle 11g R2安装与配置_R2_57 

我们还可以使用sqldevelper管理数据库,需要安装sqldevelper

oracle 11g R2安装与配置_oracle_58 

sys用户必须以sysdba身份登录

[oracle@orclsrv ~]$sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 8 13 09:52:58 2015

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL>conn sys/123.abc

ERROR:

ORA-28009: 应当以 SYSDBA 身份或 SYSOPER 身份建立 SYS 连接

 

SQL> conn sys/123 as sysdba

已连接。

SQL>

使用本地用户连接,密码错误也可以连接,远程连接方式就不可以了

SQL>conn sys/12333 as sysdba

已连接。

SQL>conn sys/123.abc as sysdba

已连接。

 

ctrl+l可以清屏

 

1.1.1. 使用SCOTT用户连接

SQL>conn scott/123.abc

已连接。

SQL>show user;

USER  "SCOTT"

SQL>

查看当前数据库的名字

使用sys用户连接,查看数据库的名字

SQL>select name from v$database;

 

NAME

---------------------------

ORCL

 

SQL>conn scott/123.abc

已连接。

SQL>select table_name from tabs;

 

TABLE_NAME

--------------------------------------------------------------------------------

DEPT

EMP

BONUS

SALGRADE

 

1.1.2. 创建表

Sql语句都要以分号“;”结束。

使用scott用户连接

[oracle@orclsrv ~]$ sqlplus /nolog

SQL> conn scott/123.abc 

已连接。

SQL>select table_name from tabs;

 

TABLE_NAME

--------------------------------------------------------------------------------

SALGRADE

BONUS

EMP

DEPT

创建一个名为“test”的表,表的结构为“idname,sex”三个列

SQL> create table test (

2  id number,

3  name varchar2(10),

4  sex varchar2(5)

5  );

查看表的结构

SQL>desc test;

名称是否为空?  类型

 ----------------------------------------- -------- -------------------------------- -----------------------

 IDNUMBER

 NAMEVARCHAR2(10)

 SEXVARCHAR2(5)

查看test表中所有的列

SQL> select * from test;

 

未选定行------//表中目前没有和任何记录

test表中插入记录,使用insert 命令

SQL> insert into test (id,name,sex) values (1,'huarong','');

 

SQL> insert into test (id,name,sex) values (2,'zhangjing','');

 

SQL> insert into test (id,name,sex) values (3,'liming','');

 

SQL> insert into test (id,name,sex) values (4,'chenhao','');

 

SQL> insert into test (id,name,sex) values (5,'ligang','');

查看test表中的内容

SQL> select * from test;

 

ID NAME  SEX

---------- -------------------- ---------------

     1    huarong

     2    zhangjing

     3    liming            

     4    chenhao

     5    ligang

如果向所有的列插入记录,可以省略列

SQL> insert into test values (6,'baijing','');

SQL> insert into test values (7,'baobao','');

SQL> select * from test;

 

ID NAME   SEX

------------------------------ ---------------

         1   huarong

         2   zhangjing

         3   liming              

         4   chenhao

         5   ligang

         6   baijing

         7   baobao

但是这样的插入方式却会失败。

SQL> insert into test values (8,'sunhongzhi');

insert into test values (8,'sunhongzhi')

            *

第 行出现错误:

ORA-00947: 没有足够的值

如果插入的列是有限制的,可以这样插入记录

 

SQL> insert into test (id,name) values (9,'luwenjuan');

oracle 11g R2安装与配置_R2_59 

提交事务

SQL> commit;

提交完成。

通过oracle sql developer查看我刚刚创建的表

oracle 11g R2安装与配置_R2_60 

查看test表中IDname

oracle 11g R2安装与配置_oracle_61 

查看特定的某一行

SQL> select * from test where name='liming';

 

ID NAME   SEX

---------- ----------------- ---------

    3     liming           

 

SQL> select * from test where id=6;

 

ID NAME   SEX

---------- -------------------- ---------

    6    baijing


每个表中都有隐含的列rowid

oracle 11g R2安装与配置_oracle_62 

1.1.3. 设置每列在屏幕上显示占用的的字符

sql developer中查看dept

oracle 11g R2安装与配置_oracle_63 

sqlplus中查看dept

oracle 11g R2安装与配置_oracle_64 

会发现在sqlplus中显示比较杂乱

可以修改每一列显示时所占用的字符长度 a是固定的格式,不能修改。

oracle 11g R2安装与配置_R2_65

如果是字符类型的使用“a”设置,如果是数值型的字段,如deptno就不可以了

SQL>col deptnoformat a3

SQL>select * from dept;

 

    DEPTNO DNAME    LOC

---------- -------------------------

##########ACCOUNTING   NEW YORK

##########RESEARCHDALLAS

########## SALESCHICAGO

########## OPERATIONS   BOSTON

 

如果是数值类型的字段,我们可以使用“9”来表示

 

SQL>col deptno for 99;

SQL>select * from dept;

 

DEPTNO DNAME       LOC

------ --------------- ----------

 10 ACCOUNTING      NEW YORK

 20 RESEARCH        DALLAS

 30 SALESCHICAGO

 40 OPERATIONS      BOSTON

举例说明:

SQL> conn sys/123.abc as sysdba;

已连接。

SQL>select file_name,tablespace_name from dba_data_files;

SQL>col file_name for a55;

SQL>col tablespace_name for a10

SQL>select file_name,tablespace_name from dba_data_files;

 

FILE_NAMETABLESPACE

------------------------------------------------------- ----------

/u01/app/oracle/oradata/orcl/users01.dbfUSERS

/u01/app/oracle/oradata/orcl/undotbs01.dbfUNDOTBS1

/u01/app/oracle/oradata/orcl/sysaux01.dbfSYSAUX

/u01/app/oracle/oradata/orcl/system01.dbfSYSTEM

/u01/app/oracle/oradata/orcl/example01.dbfEXAMPLE

 

目前默认一行可以显示80字符,超过80字符就会换行。

SQL>show linesize;

linesize 80

SQL>set linesize 60;

可以查看以下显示效果:

SQL>select file_name,tablespace_name from dba_data_files;

 

一次默认显示14

 

SQL>col username for a30

SQL>select username from dba_users;

一次默认显示14

SQL>showpagesize;

pagesize 14

修改默认显示的行为100

SQL>set pagesize 100

SQL>select username from dba_users;

以上的col file_name for a10 linesizepagesize的设置只在当前会话中有效,断开连接之后就不会再有效果了。可以通过修改$ORACLE_HOME/sqlplus/admin/下的glogin.sql实现

[oracle@orclsrv ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/sqlplus/admin/

[oracle@orclsrv admin]$ ls

glogin.sql help  libsqlplus.def  plustrce.sqlpupbld.sql

[oracle@orclsrv admin]$

[oracle@orclsrv admin]$vimglogin.sql

添加常用的一些参数

setpagesize 100

setlinesize 120

coldname for a20

colloc for a15

colfile_name for a55

coltablespace_name for a10

col name for a20

1.1.1. 进入数据库的不同状态

NOMOUNT阶段

nomount:已经通过参数文件知道控制文件在哪个位置,但是还没有读取控制文件。此时的状态时started,此时如果控制文件丢失了,实例是无法启动的。此时实例停留在stared状态。

MOUNT阶段

读取了控制文件,是指通过控制文件知道了其他文件(数据文件和日志文件),此时并没有读取数据文件和日志文件,这个状态叫mount状态
Open状态

读取完控制文件之后,找到了数据文件和日志文件,数据库就处于OPEN状态了。

startupnomount|mount|open

shudownnormal|immedieate|transactional|abort

测试过程:

SQL> select status from v$instance;

 

STATUS

------------------------------------

OPEN

 

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

 

SQL> startup nomount;

ORACLE 例程已经启动。

 

Total System Global Area 1202556928 bytes

Fixed Size    2212816 bytes

Variable Size  754977840 bytes

Database Buffers  436207616 bytes

Redo Buffers    9158656 bytes

 

SQL> select status from v$instance;

 

STATUS

------------------------------------

STARTED

进入mount阶段,是失败嘚

SQL> startup mount;

ORA-01081: ?????????ORACLE - ??????

此时可以使用shutdown immediate ,startup mount

SQL> shutdown immediate;

ORA-01507: ??????

 

 

ORACLE 例程已经关闭。

SQL> startup mount;

ORACLE 例程已经启动。

 

Total System Global Area 1202556928 bytes

Fixed Size    2212816 bytes

Variable Size  754977840 bytes

Database Buffers  436207616 bytes

Redo Buffers    9158656 bytes

数据库装载完毕。

SQL> select status from v$instance;

 

STATUS

------------------------------------

MOUNTED

如果现在想切换到open状态,可以使用alter 

SQL> alter database open;

 

数据库已更改。

 

SQL> select status from v$instance;

 

STATUS

------------------------------------

OPEN

 

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup nomount;

ORACLE 例程已经启动。

 

Total System Global Area 1202556928 bytes

Fixed Size    2212816 bytes

Variable Size  754977840 bytes

Database Buffers  436207616 bytes

Redo Buffers    9158656 bytes

SQL> alter database open;

alter database open

*

第 行出现错误:

ORA-01507: ??????

 

 

SQL> alter database mount;

 

数据库已更改。

 

SQL> select status from v$instance;

 

STATUS

------------------------------------

MOUNTED

如果采用startup nomount或者startup mount命令,必须采用alter database命令来执行打开数据库的操作

1.1.2. 关于shutdown的选项的区别

直接写shutdown 默认状态是normal.

SQL> shutdown

ORA-01109: ??????

 

 

已经卸载数据库。

ORACLE 例程已经关闭。

normal:这是默认选项,使用该选项时,不允许任何新的用户连接,但是允许继续当前的所有连接,只有所有用户(自愿的)退出登录时,数据库才能真正的关闭

通常,正常的数据库关闭是没有意义的,即使只剩下database control在运行,也总是存在未退出登录的用户。

immediate使用这个选项时,不允许任何新的用户连接,当前的所有连接的会话都被终止。任何活动的事务都会都将回滚,随后数据库会被关闭。

transactional:使用这个选项时,不允许任何新的用户连接,没有存在于某个事务中的现有会话被终止,允许当前位于某个事务中的会话在完成该事务之后终止。一但所有会话终止,数据就会被关闭。

abort:oracle而言,使用这个选项相当于断电。实例被立即终止。此时,任何数据都不会被写入磁盘,任何文件句柄都不会被关闭,同时也不会采用任何有序的方式终止正在

进行的事务。