Oracle11g新特性:使用PIVOT/UNPIVOT进行行列转换
MS SQL Server 2005引入的pivot/unpivot关键字,对于行列转换确实非常的方便。所以Oracle11g也引入了这两个关键字,语法和SQL Server 2005的基本上差不错。
PRODCUT QUARTER AMOUNT
---------- ---------- ----------
a 1 100
a 2 110
a 3 130
a 4 140
b 1 210
b 2 220
b 3 230
b 4 240
使用pivot转换显示:
2 pivot (sum(amount)
3 for quarter in
4 (1 as Q1,2 as Q2,3 as Q3,4 as Q4));
PRODCUT Q1 Q2 Q3 Q4
---------- ---------- ---------- ---------- ----------
a 100 110 130 140
b 210 220 230 240
Oracle11g SQLPLUS支持直接显示Blob数据
在Oracle10g及以前版本的sqlplus中,不能直接显示blob或者bfile类型的数据:
Table created.
SQL> insert into t values('1');
1 row created.
SQL> select * from t;
SP2-0678: Column or attribute type can not be displayed by SQL*Plus
Oracle11g中,sqlplus的这个限制已经取消,可以在sqlplus中直接显示blob和bfile类型的数据:
Table created.
SQL> insert into t values('1');
1 row created.
SQL> select * from t;
B
-----------------
1
遭遇Oracle11g第一个bug
昨晚安装软件,dbca建库,一切顺利。弄完后就睡觉了,谁知道今天一开机,输入sqlplus,晕,报错了,sqlplus无法打开:
sqlplus: error while loading shared libraries:/oracle/11g/lib/libnnz11.so:
cannot restore segment prot after reloc: Permission denied
Google了一下,oracle论坛里有人提到metalink 454196.1,晕,遭遇bug了,还是个未正式发布的bug:Bug 6140224, “SQLPLUS FAILS TO LOAD LIBNNZ11.SO WITH SELINUX ENABLED ON EL5/RHEL5″ 。这个问题只影响到RadHat Enterprise Linux 5,说是其SELinux的模式默认为“Enforcing”,改成“Permissive”模式能暂时解决该问题。
以root身份,通过以下命令查询SELinux的模式:getenforce 默认应当返回Enforcing
通过以下命令更改模式:setenforce 0
然后再次查询getenforce,应该返回permissive了
以上修改在系统重启前有效,重启后系统又会变回默认的enforcing模式。如果需要启动即为permissive模式,则需要在grub的启动项中增加enforcing=0,例如
title Red Hat Enterprise Linux ES (2.6.18-8.EL)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.EL ro root=/dev/VolGroup00/LogVol00 rhgb quiet enforcing=0
initrd /initrd-2.6.18-8.EL.img
另外,也可以通过setup的firewall configuration来设置SELinux的模式。
BANNER
--------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
在Redhat Entrerprise Linux 5上安装Oracle11g截图欣赏
Oracle11g在Redhat Enterprise Linux 5上的安装相当顺利,基本上一路“next”即可。详细的安装步骤请参考官方文档:Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux。