centos oracle 安装 踩坑实录 (三:踩坑与填坑大全)

为什么80%的码农都做不了架构师?>>>   hot3.png

1.安装oracle所需要的安装包

当你安装ORACLE的时候,缺依赖,按提示来,或者在下面的列表中自检。

yum -y install binutilscompat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelfelfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-develglibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devellibaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-develmake sysstat

最后还需要安装libXp这个Library,这个一定要安装,否则安装Oracle时会出现java Exception

yum install libXp libXt.i686 libXtst.i686

有的包是64的有的包是32的,都需要装

2. 修改Linux发行版本信息

由于Oracle10g发行的时候,CentOS6.6没有发行,所以Oracle10g并没有对CentOS6.6确认支持,需要修改相关文件让Oracle10g支持CentOS 6建议就用oracle 11g

我们需要手工修改Linux的发行注记,让Oracle 10g支持CentOS6.5

编辑/etc/redhat-release文件

# vim /etc/redhat-release

将其中的内容CentOS release 6.5 (Final)修改为redhat 4

记得安装好后面改回去。

3.  乱码

你的centos是中文环境,安装时会出现中文乱码,请下以下指令。使系统临时为英文状态:

export LC_ALL=en_US.UTF-8

4.  ./runInstaller安装过程错误解决:

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable

解决方案:

1.       远程时会遇到,可以不远程,直接在机器上操作即可。如果可以则不用下面两步。

2.       root 下

export DISPLAY= export DISPLAY=localhost:1

xhost +

3.       oracle下

export LANG=en_US.UTF-8

./runInstaller -Djava.awt.headless=true

5. linux解决xhost: unable to open display

[root@localhost ~]# vncserver

New 'localhost:1 (root)' desktop is localhost:1

Starting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/localhost:1.log

[root@localhost ~]# export DISPLAY=localhost:1

[root@localhost ~]# xhost +

access control disabled, clients can connect from any host

6. centos 5.10分辨率

当你的oracle安装时,下一步怎么也点不出来,则考虑分辨率,如果没法调,则如下处理

重新登录后依然还是上次的分辨率,直接修改配置文件/etc/X11/xorg.conf可以解决这个问题。我的配置如下:

 

# Xorg configuration created by system-config-display

 

Section "ServerLayout"

    Identifier     "single head configuration"

    Screen      0  "Screen0" 0 0

    InputDevice    "Keyboard0" "CoreKeyboard"

EndSection

 

Section "InputDevice"

    Identifier  "Keyboard0"

    Driver      "kbd"

    Option        "XkbModel" "pc105"

    Option        "XkbLayout" "us"

EndSection

 

Section "Monitor"

 

 ### Comment all HorizSync and VertSync values to use DDC:

 ### Comment all HorizSync and VertSync values to use DDC:

 ### Comment all HorizSync and VertSync values to use DDC:

    Identifier   "Monitor0"

    ModelName    "LCD Panel 1440x900"

 ### Comment all HorizSync and VertSync values to use DDC:

    HorizSync    31.5 - 56.0

    VertRefresh  56.0 - 65.0

    Option        "dpms"

EndSection

 

Section "Device"

    Identifier  "Videocard0"

    Driver      "nv"

EndSection

 

Section "Screen"

    Identifier "Screen0"

    Device     "Videocard0"

    Monitor    "Monitor0"

    DefaultDepth     24

    SubSection "Display"

        Viewport   0 0

        Depth     24

        Modes    "1440x900" "1024x768" "800x600" "640x480"

    EndSubSection

EndSection

7. linux下安装Oracle时交换空间不足的解决方法

linux上安装Oracle时交换空间不足的解决办法

增加交换空间有两种方法:

严格的说,在系统安装完后只有一种方法可以增加swap,那就是本文的第二种方法,

至于第一种方法应该是安装系统时设置交换区。

1、使用分区:

在安装OS时划分出专门的交换分区,空间大小要事先规划好,启动系统时自动进行mount。

这种方法只能在安装OS时设定,一旦设定好不容易改变,除非重装系统。

2、使用swapfile:(或者是整个空闲分区)

新建临时swapfile或者是空闲分区,在需要的时候设定为交换空间,最多可以增加8个swapfile。

交换空间的大小,与CPU密切相关,在i386系中,最多可以使用2GB的空间。

在系统启动后根据需要在2G的总容量下进行增减。

这种方法比较灵活,也比较方便,缺点是启动系统后需要手工设置。

下面是运用swapfile增加交换空间的步骤:

涉及到的命令:

free ---查看内存状态命令,可以显示memory,swap,buffer cache等的大小及使用状况;

dd ---读取,转换并输出数据命令;

mkswap ---设置交换区

swapon ---启用交换区,相当于mount

swapoff ---关闭交换区,相当于umount

步骤:

1、创建swapfile:

root权限下,创建swapfile,假设当前目录为"/",执行如下命令:

# dd if=/dev/zero of=swapfile bs=1024 count=500000

则在根目录下创建了一个swapfile,名称为“swapfile”,大小为500M,也可以把文件输出到自己想要的任何目录中,

个人觉得还是直接放在根目录下比较好,一目了然,不容易误破坏,放在其他目录下则不然了;

命令中选项解释:

---of:输出的交换文件的路径及名称;

---bs:块大小,单位byte,一般为1k即1024个byte;

---count:总块数即空间总大小,单位为块即k;

---if:读取的源空闲空间,为什么是zero,不清楚,先固定这么写吧;

2、将swapfile设置为swap空间

# mkswap swapfile

3、启用交换空间,这个操作有点类似于mount操作(个人理解):

# swapon swapfile

至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化;

4、如果不再使用空间可以选择关闭交换空间,这个操作有点类似于umount操作(个人理解)::

# swapoff swapfile

使用这种方法在每次系统启动时都需要手动设置、开启swapfile,比较麻烦,解决方法:

在 /etc/rc.d/rc.local 文件的末行下追加加以下内容:(编辑这个文件当然是用vi了~)

/sbin/swapon /swapfile

保存后退出,这样在系统启动后,swap空间就会自动加载了;

总结:在安装OS时一定要规划后swap大小,通常为内存的2倍,但是要考虑到以后增加内存的可能,所以可以考虑设的稍大一些,

 

想在虚拟机里面安装oracle10g,发现默认的swap交换空间不满足最低要求,因为我分配的物理内存是1G,那么就按照要求需要2G的swap交换空间,默认只有1G的交换空间。添加swap交换空间的步骤如下:  

第一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件

第二步:添加交换文件并设置其大小为2G,使用如下命令

[root@sense image]# dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000

过段时间就返回如下结果:

2048000+0 records in

2048000+0 records out

2097152000 bytes (2.1 GB) copied, 272.867 seconds, 7.7 MB/s

第三步:创建(设置)交换空间,使用命令mkswap

[root@sense image]# mkswap /opt/image/swap

Setting up swapspace version 1, size = 2097147 kB

第四步:检查现有的交换空间大小,使用命令free

[root@sense image]# free -m

total used free shared buffers cached

Mem: 1011 989 21 0 1 875

-/+ buffers/cache: 112 898

Swap: 1027 0 1027

或者检查meminfo文件

grep SwapTotal /proc/meminfo

第五步:启动新增加的2G的交换空间,使用命令swapon

[root@sense image]# swapon /opt/image/swap

第六步:确认新增加的2G交换空间已经生效,使用命令free

[[root@sense image]# free -m

total used free shared buffers cached

Mem: 1011 995 15 0 4 877

-/+ buffers/cache: 113 897

Swap: 3027 0 3027

或者检查meminfo文件

grep SwapTotal /proc/meminfo

第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效

在文件最后加入:

/opt/image/swap swap swap defaults 0 0

8. 安装oracle 11g R2的时候提示:pdksh包没有(或者安装了pdksh-5.2.14但是依旧报告未安装)

下载地址:http://mirror.centos.org/centos/5/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm

可能安装时会报错: pdksh conflicts with ksh-20100621-12.el6_2.1.x86_64

rpm -e ksh-20100621-12.el6_2.1.x86_64 

卸载了ksh之后就简单了

rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

9. [root@linux211 ~]# su - oracle

su: warning: cannot change directory to /home/oracle: 没有那个文件或目录

[root@linux211 ~]# vim ~/.bash_profile

最后加上 export PS1=’[\u@\h \W]\$’

[root@linux211 ~]# source ~/.bash_profile

[root@linux211 ~]#su oracle

[oracle@linux211 root]$pwd

10. 监听方面

[oracle@linux211 root]$  lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 03-JAN-2017 09:47:54

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux211)(PORT=1521)))

TNS-12541: TNS:no listener

 TNS-12560: TNS:protocol adapter error

  TNS-00511: No listener

   Linux Error: 111: Connection refused

 

解决

关于主机名和IP配置文件,一般情况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。 
第一部份:网络IP地址; 
第二部份:主机名或域名; 
第三部份:主机名别名;

[root@linux211 11.2.0]# hostname

linux211

[root@linux211 11.2.0]# more /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=linux211

[root@linux211 11.2.0]# vim /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

centos oracle 安装 踩坑实录 (三:踩坑与填坑大全)_第1张图片

修改为

centos oracle 安装 踩坑实录 (三:踩坑与填坑大全)_第2张图片

 

11.监听启动,查看监听日志:

 

[oracle@linux211 root]$  lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 03-JAN-2017 11:17:54

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2.0/dbhome_2/bin/tnslsnr: please wait...

 

TNSLSNR for Linux: Version 11.2.0.4.0 - Production

System parameter file is /u01/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

Log messages written to /u01/app/oracle/diag/tnslsnr/linux211/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux211)(PORT=1521)))

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux211)(PORT=1521)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                03-JAN-2017 11:17:54

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/linux211/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux211)(PORT=1521)))

The listener supports no services

The command completed successfully

 

监听日志:

/$ORACLE_HOME/product/11.2.0/dbhome_2/listener.log

12. 监听错误 ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决

解决:/$ORACLE_HOME/product/11.2.0/dbhome_2/network/admin下listener.ora

修改为:

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = ORCL)

      (ORACLE_HOME =/$ORACLE_HOME/product/11.2.0/dbhome_2)

      (SID_NAME = ORCL)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = linux211)(PORT = 1521))

    )

  )

ADR_BASE_LISTENER = /$ORACLE_HOME

Ps:” ORCL”为监听的数据库实例名称

13.监听启动监听状态非ready

[oracle@linux211 root]$  lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 03-JAN-2017 14:32:53

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2.0/dbhome_2/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production

System parameter file is /u01/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

Log messages written to /u01/app/oracle/diag/tnslsnr/linux211/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux211)(PORT=1521)))

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux211)(PORT=1521)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                03-JAN-2017 14:32:53

Uptime                    0 days 0 hr. 0 min. 5 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/linux211/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux211)(PORT=1521)))

Services Summary...

Service "QMC" has 1 instance(s).

  Instance "QMC", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

 

不是 status READY

解决:

实例没有启动

sqlplus /nolog
connect / as sysdba
startup

如果出现乱码,修改下字符集: export LANG=en_US

 

14. Xlib: No protocol specified 错误

[main] [ 2017-01-03 16:37:09.553 CST ] [ConfigureProfile.setDefaultProfileParams:109]  Not setting ADR_BASE: sqlnet.ora already exist!

java.lang.NullPointerException

       at oracle.ewt.lwAWT.BufferedApplet.(Unknown Source)

       at oracle.net.ca.NetCA.(NetCA.java:443)

       at oracle.net.ca.NetCA.main(NetCA.java:429)

解决

1.root用户  

         #vncserver 

#DISPLAY=:0.0
 2.root用户执行
   #xhost +
 3.切换到oracle用户执行dbca

15.当没有问题的时候,要优化,设置开机自启动

1.root登录, vim  /etc/oratab

 orcl:/oracle/product/11.2.0/db_1:N

将N改为Y,orcl是当前oracle实例。

2. su - oracle

cd $ORACLE_HOME/bin

修改dbstart 和 dbshut,

找到 ORACLE_HOME_LISTNER=$1  这行, 修改成:

ORACLE_HOME_LISTNER=/oracle/product/11.2.0/ 

或者直接修改成:

ORACLE_HOME_LISTNER=$ORACLE_HOME

 

3.在切换回 su root

vim /etc/rc.d/init.d/oracle

#!/bin/bash
#root
#chkconfig:35  85  15
#description:Oracle
     #/etc/rc.d/init.d/oracle

     ORACLE_BASE=/home/oracle/app/oracle
     ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
     ORACLE_SID=orcl

     case "$1" in
     start)
            echo -n "Starting Oracle11g:"
            su - oracle -c dbstart >>$ORACLE_HOME/log/autostart.log
            su - oracle -c "lsnrctl start" >>$ORACLE_HOME/log/autostart.log
            su - oracle -c "emctl start dbconsole" >>$ORACLE_HOME/log/autostart.log
            ;;
     stop)
            echo -n "Shutting Down Oracle11g:"
            su - oracle -c "emctl stop dbconsole" >>$ORACLE_HOME/log/autostart.log
            su - oracle -c "lsnrctl stop" >>$ORACLE_HOME/log/autostart.log
            su - oracle -c dbshut >>$ORACLE_HOME/log/autostart.log
            ;;
     restart)
            echo -n "Restarting Oracle11g:"
            su - oracle -c dbshut >>$ORACLE_HOME/log/autostart.log
            su - oracle -c "lsnrctl stop" >>$ORACLE_HOME/log/autostart.log
            su - oracle -c "emctl stop dbconsole" >>$ORACLE_HOME/log/autostart.log
            su - oracle -c dbstart >>$ORACLE_HOME/log/autostart.log
            su - oracle -c "lsnrctl start" >>$ORACLE_HOME/log/autostart.log
            su - oracle -c "emctl start dbconsole" >>$ORACLE_HOME/log/autostart.log
            ;;
     *)
            echo "Usage: $0{start|stop|restart}"
            exit 1
            ;;
     esac
     exit 0

4. 更改启动脚本权限

chmod 755 /etc/rc.d/init.d/oracle

5. 启动oracle数据库

service oracle start

6.设置oracle为开机自启动

chkconfig oracle on
chkconfig --list oracle

16.启动数据库,监听和连接

启动,关闭数据库实例

dbstart 和 dbshut

启动,查看实例监听

lsnrctl start

lsnrctl status

 

超管登录,创建普通用户密码和授权

sqlplus / nolog
conn / as sysdba
select username from dba_users;
create user xxx identified by yyy;

grant connect,resource,dba to xxx;


conn xxx/yyy

 

17.自启动报错ORACLE_UNQNAME not defined

[root@linux211 init.d]# service oracle stop
Stopping Oracle Database:
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 18-JAN-2017 14:56:10

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux211)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 2: No such file or directory
Processing Database instance "orcl": log file /home/oracle/app/oracle/product/11.2.0/dbhome_1/shutdown.log
Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.

解决:

[oracle@linux211 ~]$ emca -config dbcontrol db -repos create

EMCA 开始于 2017-1-18 15:04:36
EM Configuration Assistant, 11.2.0.3.0 正式版
版权所有 (c) 2003, 2011, Oracle。保留所有权利。

输入以下信息:
数据库 SID: orcl
监听程序端口号: 1521
监听程序 ORACLE_HOME [ /home/oracle/app/oracle/product/11.2.0/dbhome_1 ]: /home/oracle/app/oracle/product/11.2.0/dbhome_1
SYS 用户的口令:  
DBSNMP 用户的口令:  
SYSMAN 用户的口令:  
通知的电子邮件地址 (可选):
通知的发件 (SMTP) 服务器 (可选):
-----------------------------------------------------------------

已指定以下设置

数据库 ORACLE_HOME ................ /home/oracle/app/oracle/product/11.2.0/dbhome_1

本地主机名 ................ linux211
监听程序 ORACLE_HOME ................ /home/oracle/app/oracle/product/11.2.0/dbhome_1
监听程序端口号 ................ 1521
数据库 SID ................ orcl
通知的电子邮件地址 ...............
通知的发件 (SMTP) 服务器 ...............

-----------------------------------------------------------------
是否继续? [是(Y)/否(N)]: y
2017-1-18 15:05:30 oracle.sysman.emcp.EMConfig perform
信息: 正在将此操作记录到 /home/oracle/app/cfgtoollogs/emca/orcl/emca_2017_01_18_15_04_35.log。
2017-1-18 15:05:32 oracle.sysman.emcp.EMReposConfig createRepository
信息: 正在创建 EM 资料档案库 (此操作可能需要一段时间)...
2017-1-18 15:14:00 oracle.sysman.emcp.EMReposConfig invoke
信息: 已成功创建资料档案库
2017-1-18 15:14:07 oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepository
信息: 正在将配置数据上载到 EM 资料档案库 (此操作可能需要一段时间)...
2017-1-18 15:17:48 oracle.sysman.emcp.EMReposConfig invoke
信息: 已成功上载配置数据
2017-1-18 15:17:51 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
信息: 正在保护 Database Control (此操作可能需要一段时间)...
2017-1-18 15:18:05 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
信息: 已成功保护 Database Control。
2017-1-18 15:18:05 oracle.sysman.emcp.util.DBControlUtil startOMS
信息: 正在启动 Database Control (此操作可能需要一段时间)...
2017-1-18 15:19:34 oracle.sysman.emcp.EMDBPostConfig performConfiguration
信息: 已成功启动 Database Control
2017-1-18 15:19:34 oracle.sysman.emcp.EMDBPostConfig performConfiguration
信息: >>>>>>>>>>> Database Control URL 为 https://linux211:1158/em <<<<<<<<<<<
2017-1-18 15:19:39 oracle.sysman.emcp.EMDBPostConfig invoke
警告:
************************  WARNING  ************************

管理资料档案库已置于安全模式下, 在此模式下将对 Enterprise Manager 数据进行加密。加密密钥已放置在文件 /home/oracle/app/oracle/product/11.2.0/
dbhome_1/linux211_orcl/sysman/config/emkey.ora 中。请务必备份此文件, 因为如果此文件丢失, 则加密数据将不可用。
***********************************************************
已成功完成 Enterprise Manager 的配置
EMCA 结束于 2017-1-18 15:19:39

ps:此处稍等10分钟。

 

  至此,基本上出现的不容易处理的大问题,一一列于此,前车之鉴,后车之师。后浪们加油!欢迎qq(739726136)我补充其他常见问题。

 

转载于:https://my.oschina.net/sunmin/blog/825935

你可能感兴趣的:(centos oracle 安装 踩坑实录 (三:踩坑与填坑大全))