冷数据 热数据 sql 8a oracle11g 8a oracle11g 1 0.294s 0.834s 0s 0.544s 2 0.078s 0.565s 0s 0.531s 3 0.107s 0.541s 0s 0.717s 4 1.938s 1.603s 0s 0.899s 5 0.647s 0.853s 0.018s 0.828s 6 0.543s 0.730s 0.005s 0.723s 7 1.377s 1.481s 0.002s 1.488s 8 0.777s 0.797s 0s 0.8s 9 0.552s 0.882s 0s 0.761s 10 0.12s
由于项目中需要用到一个需求将多行合并为一行,大家看一个数据就一目了然的作用了(学号是唯一的)
原始查询出来的数据是这样的,
A B C D
姓名 学号 科目 成绩
张三 001 语文 89
张三 001 数学 95
李斯 002 语文 43
李斯 002 数学 89
现在有个这种需求,需要展示出来一个人的所有科目的成绩
那么需要将科目都展示出来列变成以下这样
A B C D
姓名 学号 语文 数学
张三 001 89 95
李斯 002 43 89
sql 语句如何写的,上一个不需要我啰嗦了,下面这个转换后的应该是这样的:
select A,B, sum(decode(D, '语文', D, 0)) as 语文成绩, sum(decode(C, '数学', D, 0)) 数学成绩
from 成绩表 group by B
su - root
mkdir /asmdisk
==在unix/linux中,所有设备都是文件,所以我们可以建几个文件来模拟多块硬盘。先用dd建若干个文件,大小为1G
dd if=/dev/zero of=/asmdisk/disk1 bs=1024k count=500
dd if=/dev/zero of=/asmdisk/disk2 bs=1024k count=500
dd if=/dev/zero of=/asmdisk/disk3 bs=1024k count=500
dd if=/dev/zero of=/asmdisk/disk4 bs=1024k count=500
////// 如果在安装失败可以使用这个命令,清空ASM磁盘 dd if=/dev/zero of=/asmdisk/disk4 bs=8192 count=500//////
==用losetup命令,使这些文件在linux看来是某个存储设备
/sbin/losetup /dev/loop1 /asmdisk/disk1
/sbin/losetup /dev/loop2 /asmdisk/disk2
/sbin/losetup /dev/loop3 /asmdisk/disk3
/sbin/losetup /dev/loop4 /asmdisk/disk4
raw /dev/raw/raw1 /dev/loop1
raw /dev/raw/raw2 /dev/loop2
raw /dev/raw/raw3 /dev/loop3
raw /dev/raw/raw4 /dev/loop4
注意:如果要删除通过dd模拟出的虚拟磁盘文件的话,直接删除模拟出的磁盘文件(也就是asm_disk1、asm_disk2…asm_disk6)还不够,
还必须执行losetup -d /dev/loopN,在这里N从1到6。否则,磁盘文件所占用的磁盘空间不能释放。
cd /dev/raw
ls -ltr
chown -R oracle:oinstall *
chmod 660 *
ls -ltr
为了避免重启后之前的配置失效可做以下设置:
vi /etc/rc.local
#添加以下内容
/sbin/losetup /dev/loop1 /asmdisk/disk1
/sbin/losetup /dev/loop2 /asmdisk/disk2
/sbin/losetup /dev/loop3 /asmdisk/disk3
/sbin/losetup /dev/loop4 /asmdisk/disk4
raw /dev/raw/raw1 /dev/loop1
raw /dev/raw/raw2 /dev/loop2
raw /dev/raw/raw3 /dev/loop3
raw /dev/raw/raw4 /dev/loop4
开始安装oracle软件,并配置asm磁盘。
su - oracle
dbca
创建asm
运行脚本
创建asmdg
check asmdg
sqlplus / as sysdba
select name from v$datafile;
确认数据文件位于asm磁盘上
补充:
如何干掉一个dg
export oracle_sid=+asm
1.DBCA删除instance
2.sqlplus登录ASM,删除DG
sqlplus登录第二个节点的ASM,dismount要删除的DG
alter diskgroup xxx dismount;
sqlplus登录第一个节点的ASM,drop要删除的DG
drop diskgroup xxx include content;
3.停止ASM,在节点1上执行
srvctl stop asm -n node1
srvctl stop asm -n node2
4.删除ASM,在节点1上执行
srvctl remove asm -n node1
srvctl remove asm -n node2
5.删除相关文件,在所有节点执行
rm -f $ORACLE_HOME/dbs/*ASM*
删除/etc/oratab中有关ASM的内容