小知識總結-20個
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部落格 ” ,連結:http://blog.itpub.net/24500180/viewspace-1061891/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小知識總結
- 硬碟知識小總結硬碟
- 總結的小知識點(一)
- JavaScript效能優化小知識總結JavaScript優化
- JavaScript 效能優化的小知識總結JavaScript優化
- 微信小程式開發知識點總結微信小程式
- Flex知識小結Flex
- c語言常用小知識點總結1C語言
- Silverlight 常用小知識點總結
- linux知識知識點總結Linux
- Redis知識總結Redis
- Cookie知識總結(-)Cookie
- 圖知識總結
- golang知識總結Golang
- servlet知識總結Servlet
- 常量知識總結
- Docker知識總結Docker
- JQuery知識總結jQuery
- servelt知識總結
- 知識點總結
- SWAP知識總結
- MySQL知識總結MySql
- PayPal知識總結
- 知識方法總結
- 【JAVA】- 知識點小結Java
- promise知識點小結Promise
- Vue重要知識小結Vue
- HTTP知識點小結HTTP
- 儲存知識小結
- makefile 知識點小結
- 2021/06/02知識點小結
- 前端小知識點彙總前端
- HDFS知識點總結
- MongoDB知識點總結MongoDB
- Java 知識點總結Java
- django知識點總結Django
- jQuery 知識點總結jQuery
- Vue知識總結(2)Vue