现在的位置: 首页 > 综合 > 正文

Ubuntu 11.04 安装 Oracle XE 11.2

2014年01月26日 ⁄ 综合 ⁄ 共 3196字 ⁄ 字号 评论关闭

Oracle XE 11.2 的全称是 Oracle Database 11.2 Express Edition Beta 。也就是测试版,请各位同学注意下载地址

     10g版的XE,已经发布很多年了。灵活小巧,功能完整一直使它成为搭建本地开发环境不可缺少的一部分。不过,毕竟11g已经慢慢成为主流,原有的10gXE的各种不足就慢慢体现出来。因此,今年的二月份,Oracle发布了11gXE的测试版。到现在,已经是11.2.0了。现在有windows
32 与 Linux 64 两个版本。

      笔者也是一直使用10g版的,只是最近更换机器后,因为没有需求,连XE版都没安装,一直使用的10gXEClient。现在想要搭建一套SOA的本地环境,索性就装一下11gXE吧。
      首先,笔者的环境是Ubuntu11.04版本,而官方提供的Linux
64 是Rpm包。熟悉Ubuntu的读者都知道,Rpm包是不能直接安装的,需要使用Alien进行转换。

      Alien的安装

  sudo apt-get install  alien


     注意添加参数
-c ,否则会有警告。

     注意RPM包需要拷贝到EXT4硬盘下,在NTFS下转换会失败。

#没有 -c
Warning: Skipping conversion of scripts in package oracle-xe: postinst postrm preinst prerm
Warning: Use the --scripts parameter to include the scripts.
#没有在EXT4硬盘下
Package build failed; could not run generated debian/rules file.

-c, --scripts             Include
scripts in package.

  sudo alien -c  oracle-xe-11.2.0-0.5.x86_64.rpm

     转换的过程很慢长,大约要十分钟,而且期间没有提示信息。需要耐心等候
     转换完成后,在rpm包的路径下,会生成同名的.deb包。下一步,就是安装了

  sudo dpkg -i oracle-xe_11.2.0-1.5_amd64.deb

     安装很快会完成,期间会提示你,需要使用root用户进行配置

正在解压缩 oracle-xe (从 oracle-xe_11.2.0-1.5_amd64.deb) ...
正在设置 oracle-xe (11.2.0-1.5) ...
Executing post-install steps...
/var/lib/dpkg/info/oracle-xe.postinst: 行 91: /sbin/chkconfig: 没有那个文件或目录
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

正在处理用于 ureadahead 的触发器...
ureadahead will be reprofiled on next reboot
正在处理用于 python-gmenu 的触发器...
Rebuilding /usr/share/applications/desktop.zh_CN.utf8.cache...
正在处理用于 bamfdaemon 的触发器...
Rebuilding /usr/share/applications/bamf.index...
正在处理用于 desktop-file-utils 的触发器...
正在处理用于 man-db 的触发器...
正在处理用于 libc-bin 的触发器...
ldconfig deferred processing now taking place
正在处理用于 python-support 的触发器...


  sudo /etc/init.d/oracle-xe configure

      具体的配置,就因人而异了。最简单的就是一直回车,使用默认。
      最后的收尾工作,如果现在用当前用户启动数据库,会报错

 operation failed ,xxx is not a member of 'dba' group

      简单的理解,就是当前用户还不在
dba 组里,没有启动数据库的权限。

      只要在Ubuntu
的 “用户和组” 中,分配当前用户到DBA组就OK了

 sudo adduser  xxx dba     ; #xxx :username


 以下是我遇到的其它问题,因人而异
    1.启动startdb.sh,没有任何反映。启动sqlplus
报错

error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    从错误上推断,是libaio.so
的问题,此次安装的是64位版。

    索性安装libaio的所有相关包。

 sudo apt-get install libaio*

   2.sqlplus
链接XE,报错

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

     看错误,是典型的监听问题。笔者在解决这个问题的时候,一直把问题归结与数据库启动的问题,百思不得其解。还是一位DBA的同事帮我解决了。问题其实很简单,SID。Oracle
默认生成的listener.ora如下:

 # listener.ora Network Configuration File:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = Richard-XPS)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

      将标红的 PLSExtProc 更改为
XE,就可以正常监听了。
      关于
PLSExtProc的问题,虽然查找了部分资料,却还是存在疑惑。不知道哪位读者知道其中牵连?
注: 注释来源
       默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中,
oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,
但一般不会使用它。可以直接从listener.ora中将这项移除,因为对ExtProc已经有多
种攻击手段了,在不使用外部程序时,oracle也是建议删除的。
  PLSExtProc是pl/sql external procdure的意思,就是在pl/sql中调用外部语句,
如c、java写的过程。现在,Oracle已经全面支持JAVA了,这东西也就过时了,之所以
继续保留是考虑到兼容以前老版本的数据库
  有时可能会在多个数据库实例之间拷贝listener.ora,检查拷贝来的文件中是否
含有不需要的服务,确保只留下的确需要的服务项目,减少监听器受攻击的面。

转载地址:http://blog.sina.com.cn/s/blog_613126600100r910.html

【上篇】
【下篇】

抱歉!评论已关闭.