您的位置:首页 > 数据库 > Oracle

Ubuntu 11.04 安装 Oracle XE 11.2

2012-09-25 17:35 453 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: