oracle 11g R2安装与配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 11g R2安装与配置相关的知识,希望对你有一定的参考价值。

Oracle 11g R2安装

1.1 安装前准备:

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

 

技术分享 

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

 技术分享

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

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

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

技术分享 

注:

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

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

 技术分享

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

 技术分享

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

 技术分享

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

[[email protected] ~]# vi /etc/sysconfig/network

技术分享

[[email protected] ~]# vi /etc/hosts

技术分享

 

重新启动系统

4.配置YUM

[[email protected] ~]# vim /etc/yum.repos.d/rhel.repo

[oracle]

name=oracle

baseurl=file:///mnt/Server

enabled=1

gpgcheck=0

挂在光盘到/mnt

[[email protected] ~]# mount /dev/cdrom /mnt

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

关闭防火墙

[[email protected] ~]# serviceiptables save

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

4.创建/u01目录

[[email protected] ~]#mkdir /u01

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

[[email protected] oracle]# mv linux.x64_11gR2_database_* /u01/

6.解压安装包

[[email protected] u01]# unzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip

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

[[email protected]]# rm -rf linux.x64_11gR2_database_*

8.使用oracle用户安装oracle11g R2

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

[[email protected] u01]# ls -ld /u01/

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

[[email protected] oracle]# chown -R oracle:oracle /u01/

[[email protected] 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

[[email protected] u01]$ ls

database

[[email protected] u01]$ cd database/

[[email protected] database]$ ls

doc  install  response  rpm  runInstallersshsetup  stage  welcome.html

[[email protected] database]$ ./runInstaller

 

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

技术分享

 

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

解决办法:

首先创建一个目录

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

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

[[email protected] oracle]# cp zysong.ttf /usr/share/fonts/zh_CN/TrueType/

[[email protected] oracle]#chmodo+r/usr/share/fonts/zh_CN/TrueType/zysong.ttf

[[email protected] database]$ ./runInstaller

 技术分享

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

技术分享

技术分享

 技术分享

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

技术分享

 

root用户身份运行脚本

技术分享

 

[[email protected] 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)

[[email protected] u01]#

yum安装依赖的软件包

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

技术分享 

[[email protected] u01]# cd ~oracle/

[[email protected] 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位的包所以可以忽略。

技术分享

 

技术分享 

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

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

技术分享 

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

技术分享 

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

[[email protected] ~]# /u01/app/oraInventory/orainstRoot.sh

更改权限/u01/app/oraInventory.

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

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

 

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

脚本的执行已完成。

[[email protected] ~]# /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用户后,就可以变成中文界面了

技术分享 

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

 

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

[[email protected] ~]$ cat install.sh 

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

 技术分享

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

技术分享 

执行source .bash_profile

技术分享 

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

 技术分享

解压oracle软件包

 技术分享

删除oracle安装文件

 技术分享

使用oracle用户安装oracle

技术分享 

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

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

测试安装完的oracle

技术分享 

技术分享 

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时不安装数据库,操作系统准备和环境准备就不做重复截图了。

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享


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

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

技术分享

技术分享

技术分享

退出DBCA

技术分享

 技术分享

技术分享

技术分享

技术分享

技术分享

 

1.5 了解oracle数据库管理工具

1.OEM: oracle企业管理器

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

通过database control访问OEM的方式:

技术分享 

https://orclsrv:1158/em

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

技术分享 

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

技术分享 

sys用户必须以sysdba身份登录

[[email protected] ~]$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用户连接

[[email protected] ~]$ 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‘);

技术分享 

提交事务

SQL> commit;

提交完成。

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

技术分享 

查看test表中IDname

技术分享 

查看特定的某一行

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

技术分享 

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

sql developer中查看dept

技术分享 

sqlplus中查看dept

技术分享 

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

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

技术分享

如果是字符类型的使用“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实现

[[email protected] ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/sqlplus/admin/

[[email protected] admin]$ ls

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

[[email protected] admin]$

[[email protected] 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而言,使用这个选项相当于断电。实例被立即终止。此时,任何数据都不会被写入磁盘,任何文件句柄都不会被关闭,同时也不会采用任何有序的方式终止正在

进行的事务。

 


本文出自 “李世龙” 博客,谢绝转载!

以上是关于oracle 11g R2安装与配置的主要内容,如果未能解决你的问题,请参考以下文章

CentOS6.7系统下安装配置Oracle11G R2

安装Oracle 11g RAC R2 之Linux DNS 配置

redhat6.5部署oracle 11G R2 (参考配置)

ORACLE client 11g r2 客户端开发环境配置

Oracle 11g R2 常用配置与日志的文件位置

Windows_Oracle 11g R2安装