oracle12c有了一些新特性,其中的CDB/PDB有些趣味,fetch
first解决了我抱怨已久的没有简单的取前几行,后几行以及类似ms
sqlserver中TOP的使用,VARCHAR2的扩展更不用说了,以后可以越来越少的用LONG字段。
于是今天稍微自己抽空也试了一下CDB/PDB,以及fetch first,记录如下
CDB和PDB是容数据库和组装数据库。在一个CDB中可以有多个PDB数据库,PDB可以拥有自己的用户,表空间等。但和CDB共用一套UNDO,CTL,REDO。
我们通常用sqlplus / as sysdba登陆上去的时候是登陆的CDB
在CDB还是PDB通过
SELECT SYS_CONTEXT('USERENV','CON_NAME') FROM dual 查询
CDB和PDB的切换是通过
alter session set container=容器名; 切换
在用户创建时,指定了默认表空间,当CDB中有该表空间名,但PDB中没有的话,是无法创建成功,报错ORA-65048以及ORA-00959表空间不存在。需要在PDB中也创建该表空间名
至于fetch first,主要记录下使用方式
select * from emp fetch
first 10 row only;
select * from emp order by sal first fetch 5 row only;
select * from emp order by sal offset 3 rows fetch next 5 rows
only;
select * from emp fetch next 0.1 percent rows only;
具体语法如下
未完待补充