1. linux中的xen和kvm
在kvm中,xml文件的位置为:
[root@PMSBIPA4 qemu]# pwd
/etc/libvirt/qemu
[root@PMSBIPA4 qemu]# ll *.xml
-rw-------. 1 root root 2521 Aug 14 16:27 node1.xml
-rw-------. 1 root root 2310 Aug 6 12:57 redhat.xml
-rw-------. 1 root root 1908 Jun 26 03:47 rh442.xml
-rw-------. 1 root root 2263 Jul 17 15:05 rhel5.6-1.xml
-rw-------. 1 root root 2263 Jul 17 15:19 rhel5.6-2.xml
-rw-------. 1 root root 2779 Jun 21 08:21 rhel5.6.xml
-rw-------. 1 root root 2287 Aug 13 16:50 rhel6.3.xml
-rw-------. 1 root root 2382 Mar 18 12:04 windows.xml
在xen中,没有xml文件,位置为:
[root@PMSBIPA5 xen]# ll /etc/xen/hrprdvm
-rw------- 1 root root 542 Aug 8 16:36 /etc/xen/hrprdvm
[root@PMSBIPA5 xen]# virsh list
Id Name State
----------------------------------
0 Domain-0 running
4 hrprdvm idle
[root@PMSBIPA5 xen]# virsh edit hrprdvm也可以编辑。
备注:在给hr升级时,安装了一个虚拟机,安装完之后,以为是kvm的呢(xen在rhel5的时候有很多bug,而且后来好像又被其他公司收购了),如果kvm的话,需要安装一些kvm的包。
其实在这里我就应该发现我的环境是xen的。。。。
2.SQL*Net message from client 和SQL*Net message to client 的区别?
SQL*Net message from client (SP进程等待clinet发起连接):
对于Server process来说,但它处理完所有需要处理的东西之后,它就进入另一个WAIT,SQL*Net message from client ,等待着Cilent发来信息让它处理,而我们把这种wait叫做ildel event,并不代表真正的loading
举一个例子,你在工作,比如说1:00-1:30在检查DB状态,1:30 - 2:00在读文档。但是,有时候你没什么事做,这时候老板问你在干吗,你就会说,我在等待任务呢,实际上是在休息,就相当于你wait for "任务from老板“,事实上是在休息,也就是没有loading.
当然也有其他情况,比如,你在座位上休息 (wait for "任务from老板“ ) ,本来应该是idle的。但是过一会,你老板跑来,暴跳如雷:“我刚才想叫你出去买咖啡,怎么打了半天电话也没人接“,你一查,原来是分机没接好。这种情况下的 (wait for "任务from老板“ ) 就不正常了。相对应的Oracle里的就是网络不畅,Client想发信息给Server process,结果不成功,而Server process一直是wait for SQL*Net message from client .
结论,只要网络没问题。SQL*Net message from client 这个wait不用管。
SQL*Net message to client :
应该是查询的结果集非常大,等待把结果接写入游标中。这个等待事件应该也可以忽略。
3.hpunxi上看卷组信息
I2PRDDB1#[/rmanbak/oswbb/oswbb/archive/oswmpstat]vgdisplay -v
--- Volume groups ---
VG Name /dev/vg00
VG Write Access read/write
VG Status available
Max LV 255
Cur LV 6
Open LV 6
Max PV 16
Cur PV 1
Act PV 1
Max PE per PV 4460
VGDA 2
PE Size (Mbytes) 64
Total PE 4450
Alloc PE 4345
Free PE 105
Total PVG 0
Total Spare PVs 0
Total Spare PVs in use 0
VG Version 1.0
VG Max Size 4460g
VG Max Extents 71360
--- Logical volumes ---
LV Name /dev/vg00/lvol1
LV Status available/syncd
LV Size (Mbytes) 1792
Current LE 28
Allocated PE 28
Used PV 1
LV Name /dev/vg00/lvol2
LV Status available/syncd
LV Size (Mbytes) 64000
Current LE 1000
Allocated PE 1000
Used PV 1
LV Name /dev/vg00/lvol3
LV Status available/syncd
LV Size (Mbytes) 60032
Current LE 938
Allocated PE 938
Used PV 1
LV Name /dev/vg00/lvol4
LV Status available/syncd
LV Size (Mbytes) 10048
Current LE 157
Allocated PE 157
Used PV 1
LV Name /dev/vg00/lvol8
LV Status available/syncd
LV Size (Mbytes) 50048
Current LE 782
Allocated PE 782
Used PV 1
LV Name /dev/vg00/lvrman
LV Status available/syncd
LV Size (Mbytes) 92160
Current LE 1440
Allocated PE 1440
Used PV 1
--- Physical volumes ---
PV Name /dev/disk/disk2_p2
PV Status available
Total PE 4450
Free PE 105
Autoswitch On
Proactive Polling On
在hpux下,我暂时只发现了vgdisplay这个命令,用-v查看详细信息,最后一部分显示Physical volumes是disk2_p2,这里disk2是一块盘,而p1-3是disk2上面的片,这里disk2_p2就用来划lv了。有的是swap。
I2PRDDB1#[/rmanbak/oswbb/oswbb/archive/oswmpstat]swapinfo
Kb Kb Kb PCT START/ Kb
TYPE AVAIL USED FREE USED LIMIT RESERVE PRI NAME
dev 65536000 1240116 64295884 2% 0 - 1 /dev/vg00/lvol2
reserve - 64293224 -64293224
memory 63620128 12868192 50751936 20%
4 varchar2(3)和varchar2(3 char)的区别?
varchar(3)和varchar2(3)的区别?
答:varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串
varchar2(3)是3个字节,而varchar2(3 char)是3个字符,比如一个汉字在utf8中是占用3个字符,所以我们的varchar2(3)列只能存一个汉字,而varchar2(3 char)却可以存3个汉字,其实length是看的字符的长度而非字节。
5 关于ORACLE_SID
单实例:
单实例的情况下,参数文件里是默认没有instance_name这一项的,如果我们想改变instance_name的话,就需要将instance_name=。。加入到参数文件中,然后就可以了。
RAC:
在rac中,不光要修改instance_name,还需要再os上设置,才可以启动成功。
6 在新版本的RAC中,我们可以将各个节点的service_name设为不同的值,而且在应用连接时可以分别连接到指定service_name的,比如如果各个业务的数据都在一个库中,那我们可以设定hr的业务连接一个节点,财务的业务连接一个节点,对吗?那每个节点的oracle_sid还是可以不一样呢?那用连接oracle_sid的方式代替seriver_name也可以实现这种功能吗?
答:是的,service name是由srvctl add service添加的,经过一定的配置之后就可以实现。
7 asm disk group应该选哪种冗余?normal、high、外部冗余----
答:这里的第三点(外部冗余)的意思就是说抛出asm磁盘之外做了冗余,比如说raid,另外2个都在asm内部做了冗余,normal的方式需要选择3快磁盘做asm磁盘组,high需要5块磁盘做asm磁盘组。
8 asm也是分版本的吗?如果不分版本的话,那为什么说有asm滚动升级呢?但是如果有分版本的话,那为什么在安装包的时候并没有版本的说法呢?难道是在安装grid的时候设置了?
答:clusterware的版本必须要和db或者asm的版本一致,如果要升级asm或者db,那么就必须要先升级clusterware,其实asm和clusterware也是分版本的,11R2的新特性说asm滚动升级只是说asm升级,和db或者clusterware并没有关系的,
安装ASM:
在 Linux 平台上,ASM 可以使用原始设备,或通过 ASMLib 接口管理的设备。Oracle 建议在原始设备上使用 ASMLib。ASMLib 现在可以从 OTN 免费下载。每个os版本都有asm包,oracleasmlib - ASM 库 ,oracleasm-support - 用于管理 ASMLib 的实用程序, oracleasm - ASM 库的内核模块
ASM升级:
可以把ASM 和 DB 一起升级,如果只升级ASM 实例的话,就像官网里提供的方法:
1)将新版本的ASM 安装到其他目录。 即安装数据库软件。
2)用旧版本的ASM 启动实例实例。
3)另开一个窗口,重新指定ORACLE_HOME,PATH等参数,指定到新版本的ORACLE软件目录。
4)在这个窗口运行dbua,选择ASM 实例进行升级
9 scan的作用是什么?
答:在以前的版本,假如我们的rac集群增加了一个新节点,那么在客户端就要更改tnsnames.ora文件,将监听信息加入,直到11R2版本,出现了scan的功能,这个功能很好的解决了这个问题,当再有新节点加入rac的时候,客户端什么都不需要动,原理如图:,客户端真正连接的是scan listener,当然,这里是有3个listener,但是如果我们只有2个节点,那么我感觉配置一个scan ip就可以了,相应的对应的当然也只是一个scan listener了,因为scan ip是有clusterware管理的,所以其实是各个节点的pmon进程会想scan listener中注册,同时CRS的ONS进程会采集各节点的负载均衡情况,通知scan listener,以便scan listener根据负载情况将连接分配到各节点。
10 GNS是怎么回事?(grid name service)
gns=dns+dhcp---当节点很多时或许会有,vip和私网ip都不用手动管理了。
11 问题:如果没有asm和裸设备,那底层的磁盘还可以正常使用吗?或者说如果没有的话,那用户往数据文件中插入数据是不是就插入不进去了呢?是不是如果想成为裸设备,就需要执行命令让磁盘或者分区让其成为裸设备呢?还是当我们随便拿来一块盘做完分区分成sdb1和sdb2就是裸设备了呢?
答:如果没有asm或者裸设备,那么当我们将磁盘拿过来的时候,就算是2个节点都识别了这个磁盘,那我们也需要将磁盘格式化之后才可以使用,如果我们不用集群文件系统的话,在2个节点根本就识别不了,所以直接拿过来的磁盘不能直接使用的。要想成为裸设备,通过raw命令将sdb1绑定到/dev/raw1上即可。置于sdb1拿来就是裸设备了吗这一说话,比如我们在linux系统上插入一个U盘,我们必须将U盘mount之后才可以识别,而这个U盘之前是sdc1只是能说明他们是一个快设备。所以并不能说sdb1就是一个裸设备了。
12 RAC中的VIP?
答:在hosts file里,有public ip,vip,private ip,一般情况下,public ip主要用来管理的,我们可以连接这个public ip来管理这个RAC,而VIP是外网IP的,每个节点都有VIP,应用连接的是VIP,当节点1的down了之后,节点1的VIP就会飘到节点2了,这时候节点2就有2个VIP,所以就可以接管所有的应用了,而private ip就是用来心跳的!
13 查看db中goodness值
SQL> select inst_id,service_name, goodness from gv$servicemetric where service_name='PMSCSEDB';
INST_ID SERVICE_NAME GOODNESS
---------- ---------------------------------------------------------------- ----------
2 PMSORCLDB 394
2 PMSORCLDB 394
1 PMSORCLDB 394
1 PMSORCLDB 394
这个值是随时变化的,这个是其实就是ps -ef |grep oracle$ORACLE_SID 的值。
14 了解oracle audit
对于oracle审计功能,在11g中是默认打开的,可以通过修改audit_trail来配置,如果为DB,则表示将审计结果放入数据库的sys.aud$中,这个表可能会很大,所以如果将audit_trail为none,就代表关闭审计功能,如果为OS的话,就是将结果放入OS上,通过audit_file_dest来确定路径。我看到sys.aud$中可以记录某个schema最后一次登陆的时间,和sqltext但sqltext字段为空,DBA_AUDIT_OBJECT也可以列出来用户的操作命令的类型,比如alter table之类的,暂时我们所有的audit都是db,http://blog.chinaunix.net/uid-20274021-id-1969578.html
15 关于SAP升级
有时候sap需要版本升级,这就牵扯到db和os的升级,但db和os的升级,主要是为了迎合sap的版本,因为sap提高一个版本,sap就要求db为一个更高的版本,那db版本提高了,当然os的版本也要相应的提高了,所以升级的话,整个一套东西都需要升级的。
16 如何查看scan name
$ srvctl config scan ----以grid用户执行
SCAN name: PMSORCLDB-scan, Network: 1/192.168.160.0/255.255.255.0/lan900
SCAN VIP name: scan1, IP: /PMSORCLDB-scan/192.168.160.143
17 如何禁用一个cpu
[root@localhost ~]# cat /proc/cpuinfo |grep proc
processor : 0
processor : 1
[root@localhost ~]# cat /sys/devices/system/cpu/cpu1/online
1
[root@localhost ~]# echo 0 > /sys/devices/system/cpu/cpu1/online
[root@localhost ~]# cat /proc/cpuinfo |grep proc
processor : 0
[root@localhost ~]# echo 1 > /sys/devices/system/cpu/cpu1/online
[root@localhost ~]# cat /proc/cpuinfo |grep proc
processor : 0
processor : 1
18 字符集
前言
之前一直都没有好好研究过字符集,其实还有好多东西都没深入研究过,碰到字符集的问题也比较多,但每次都是凭运气解决。前几天研究了oralce的监听,感觉还是懂了很多。这次研究一下linux下的字符集,包括linux的语言,字符集,nls_lang设置,oracle字符集。
linux的语言
对于linux的语言,可以通过system-config-lanage来设置,一般常用的就是简体中文和English(USA),对于平时我们安装的os,我基本都是使用英文语言,而非中文,今天遇到一个环境是中文的,我在我的CRT工具上看,发现很多命令输出的结果都是乱码,比如date,但如果我用图形登陆到os,又看发现输出的结构又可以正常显示了,当然了,输出的结果都是中文。
先说我的本机,window7,我的字符集是简体中文(活动代码页: 936),也就是GBK的那种,而我的桌面的显示呢,可以选择是中文还是英文,不管我的桌面显示是中文还是英文,但我的字符集是不变的,就是简体中文。所以说呢,显示语言和字符集是两码事。
说下linux,道理也是一样的。下面分别是在语言为中文和英文下linux桌面的显示情况:
查看linux的语言
[root@localhost ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
备注:这里通过查看LANG就可以知道当前os的语言和字符集了,en是英语的意思,US是选择美国的意思,因为在选择的时候,英语可以选择很多种,所以US应该是USA的意思。如果是选择Hongkong的英语的话,那就是LANG="en_HK.UTF-8"。
当语言为英语时
[root@localhost ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
[root@localhost ~]# echo $LANG----用echo看的是当前os的语言,目前我的语言是英语。
en_US.UTF-8
查看桌面是:
CRT工具显示:
[root@baobao ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
35G 12G 22G 36% /
tmpfs 1012M 100K 1012M 1% /dev/shm
/dev/sda1 485M 31M 429M 7% /boot
/dev/sr0 2.9G 2.9G 0 100% /media/RHEL_6.2 i386 Disc 1
更改语言为中文
然后重启生效。
当语言为中文时
[root@baobao ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
SYSFONT="lat0-sun16"
[root@baobao ~]# echo $LANG
zh_CN.UTF-8
查看桌面是:
CRT工具显示:
[root@baobao ~]# df -h
鏂囦欢绯荤粺 瀹归噺 宸茬敤 鍙?敤 宸茬敤%% 鎸傝浇鐐?
/dev/mapper/VolGroup-lv_root
35G 12G 22G 36% /
tmpfs 1012M 100K 1012M 1% /dev/shm
/dev/sda1 485M 31M 429M 7% /boot
/dev/sr0 2.9G 2.9G 0 100% /media/RHEL_6.2 i386 Disc 1
[root@baobao ~]# date
2013骞?09鏈?07鏃?鏄熸湡鍏?13:33:06 CS
备注:
如果碰到乱码的时候呢,就重新在当前的终端export下lang为英文的吧,或者是修改CRT工具显示的字符集:
[root@baobao ~]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
35G 12G 22G 36% /
tmpfs 1012M 484M 528M 48% /dev/shm
/dev/sda1 485M 31M 429M 7% /boot
/dev/sr0 2.9G 2.9G 0 100% /media/RHEL_6.2 i386 Disc 1
Linux的字符集
前面已经说过,linux的字符集是通过LANG来设置的,目前我只查到了通过查看LANG (LANG="zh_CN.UTF-8")来判断,设置的话,我也只是知道通过修改/etc/sysconfig/i18n来设置。这里UTF-8就是当前os的字符集,而UTF-8和AL32UTF-8是不同的,后者是后来才有的,功能上比前者多了一些东西。
Oracle的字符集
对于oracle字符集,也就是通过查看nls_database_parameters来查,不同字符集下,一个汉字占用的字节数是不同的,底层估计应该是编码方式不一样吧。下面说下3个数据字典:
NLS_INSTANCE_PARAMETERS:
这个参数中的nls_lang是在参数文件里设置的,只对当前实例生效。NLS_LANGUAGE设定决定了alert.log和trace files中的Server错误信息的语言。如果我们设置了中文,那在告警日志中看到的告警显示可能就是中文的。
[oracle@baobao dbs]$ tail -2 initorcl.ora
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
[oracle@baobao dbs]$sqlplus / as sysdba
SQLPLUS>startup force pfile=’$ORACLE_HOME/dbs/initorcl.ora’
SQL> select * from nls_instance_parameters;
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_SORT
NLS_DATE_LANGUAGE
NLS_DATE_FORMAT
NLS_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY
NLS_CALENDAR
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
17 rows selected.
NLS_SESSION_PARAMETERS:
通过alter session来设置呗,这些参数影响到客户端的错误信息显示语言;日期,数字,货币等的显示格式;排序结果等。
SQL> select * from nls_session_parameters;
PARAMETER VALUE
-------------------------------------------------- --------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
PARAMETER VALUE
-------------------------------------------------- --------------------------------------------------
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
17 rows selected.
NLS_DATABASE_PARAMETERS:
这个就是数据库的字符集了。
SQL> select * from nls_database_parameters;
PARAMETER VALUE
-------------------------------------------------- --------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
PARAMETER VALUE
-------------------------------------------------- --------------------------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16(nchr的意思是national char国家字符集的意思)
NLS_RDBMS_VERSION 11.2.0.1.0
20 rows selected.
思考一下,AL16UTF16和AL32UTF8的区别是啥?
a16utf16是国家字符集,而al32utf8是数据库字符集,对于国家字符集,其实只有2种,另一种是utf8。
数据库字符集是为了存储char,varchar等字符,而国家字符集是为了存储nchar和nvarchar等字符,主要是最为辅助扩展用的,增强oracle处理字符的能力,因为NCHAR数据类型可以提供对亚洲使用定长多字节编码的支持,而数据库字符集则不能。参考http://blog.csdn.net/onlymilan/article/details/5667277
19 芯片
oracle公司:spic系列
hp公司:安腾系列,PA-RISC
IBM公司:power系列
inter公司:I系列(个人pc)和E系列(服务器)
20 跟踪命令
如果sqlplus命令hang住的话,可以使用strace命令跟踪。
strace -f -F -o out.log sqlplus / as sysdba
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24500180/viewspace-1061891/ ,如需转载,请注明出处,否则将追究法律责任。