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