Ubuntu 11.04 安装 Oracle XE 11.2

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值