oracle statspack…

원문: http://www.akadia.com/services/ora_statspack_survival_guide.html

원문을 번역한것은 아니며, 원문을 참고하여, statspack을 설치, 구성하였음.

oracle STATSPACK의 설치와 보고서 생성.

1. statspack이 사용할 테이블 스페이스(perfstat) 생성.

SQL> create tablespace perfstat
2 datafile ‘/ora_data/stats_pack/perfstat.dbf’ size 1000M reuse
3 extent management local uniform size 512k
4 segment space management auto
5 permanent
6 online;

reuse 옵션: 해당 위치에 동일한 파일이 있는 경우 그 화일을 재사용. 옵션 사용하기전에 확인해야 할듯.

2.  설치스크립트가 있는곳($ORACLE_HOME/rdbms/admin)으로 이동하여 설치 시작한다. 비밀번호는 perfstat, 사용할테이블 스페이스는 이전에 생성한 perfstats, temporary 테이블스페이스는 temp 를 사용한다.

SQL> start spcreate.sql

Choose the PERFSTAT user’s password
———————————–
Not specifying a password will result in the installation FAILING

Enter value for perfstat_password: perfstat
perfstat

Choose the Default tablespace for the PERFSTAT user
—————————————————
Below is the list of online tablespaces in this database which can
store user data. Specifying the SYSTEM tablespace for the user’s
default tablespace will result in the installation FAILING, as
using SYSTEM for performance data is not supported.

Choose the PERFSTAT users’s default tablespace. This is the tablespace
in which the STATSPACK tables and indexes will be created.

TABLESPACE_NAME CONTENTS STATSPACK DEFAULT TABLESPACE
—————————— ——— —————————-
EXAMPLE PERMANENT
PERFSTAT PERMANENT
SNOWFOX PERMANENT
SYSAUX PERMANENT *
USERS PERMANENT

Pressing <return> will result in STATSPACK’s recommended default
tablespace (identified by *) being used.

Enter value for default_tablespace: PERFSTAT

Using tablespace PERFSTAT as PERFSTAT default tablespace.

Choose the PERFSTAT user’s Temporary tablespace.

TABLESPACE_NAME CONTENTS DB DEFAULT TEMP TABLESPACE
—————————— ——— ————————–
SNOWFOX_TEMP TEMPORARY
TEMP TEMPORARY *

Pressing <return> will result in the database’s default Temporary
tablespace (identified by *) being used.

Enter value for temporary_tablespace: TEMP

……
SQL> set echo off;
Creating Package STATSPACK…

Package created.

No errors.
Creating Package Body STATSPACK…

Package body created.

No errors.

NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.

3. statspack 삭제.

설치시 원하지 않는 테이블스페이스나, 비밀번호를 사용했다면, 삭제후 다시 설치하면된다.

삭제는

SQL> @spdrop.sql

다시 설치하려고 start spcreate.sql 하면, 제대로 설치되지 않는다. 이때는 perfstat user를 삭제한다.

SQL> drop user perfstat;

혹시

SQL> drop user perfstat;
drop user perfstat
*
ERROR at line 1:
ORA-01922: CASCADE must be specified to drop ‘PERFSTAT’

이런 에러가 난다면,

SQL> drop user perfstat cascade;

statspack을 완전히 삭제하려면,

SQL> @spdrop.sql

SQL> DROP TABLESPACE perfstat INCLUDING CONTENTS AND DATAFILES;

 

Continue reading

HP rp3440 DAT drive 교체.

HP rp3440 의 DAT drive (DAT 72)의 버튼이 눌리지 않아서 새것으로 교체.

아래 문서를 참고.

http://www.ischo.net/hpux/6449

외장 1U DAT이므로, 서버를 끌 필요는없었고,  kcmodule 로 커널의 tape 상태 확인. ioscan하면 디바이스 화일은 생성되어 있으나, 실제 작동하지 않음. 그래서, insf -eC tape한후 작동시켜 보니 잘 됨.

ubuntu kvm 서버에 osx guest(해킨토시?) 설치. -결국 실패

1. 설치는 아래와 같이.

 virt-install –connect qemu:///system -n osx -r 1024 -f /home2/VM2/osx.vimg -s 15 -c /home/snowfox/OS/Snow_Leopard_10.6.1-10.6.2_SSE2_SSE3_Intel_AMD_by_Hazard.iso –vnc –noautoconsole –os-type none

여기서, 설치에 사용한 iso 이미지는 crack되어 있는 이미지이다.

2. osx 설치시 처음 부팅할때, apple관련 화일이 없다고 나온다. 이때는 ctrl+ALT+Del로 재부팅. 이후, 그냥 엔터 치지 말고 F8을눌러 부팅하자.

3. 그냥 아무생각 없이 설치를 하다보면, 나중에 OSX설치할 하드디스크가 보이지 않는다. 나는 이과정에서 엄청 헤맸다. 결론은, 디스크가 포맷되어 있지 않기 때문이다. 여기서 아래 그림에 나오는(처음것은 영어버전으로 설치. 두번재 것은 한글을 선택했을때, 즉 몇번 헤맸기 때문에 나중에 보니 스샷도 하나는 영문, 하나는 한글… ;ㅡㅡ) 유틸리티를 실행하여, 디스크를 포맷해 주자.

 

 

이것은 결국 실패했다. 설치 마치고 재부팅이 되는데, 이때, 무한 재부팅이 반복되며, OS가 올라오지 않았다. 혹시, 성공하신 분 있으면 알려주시기 바란다.

oracle SGA 크기 변경

SQL> show parameter sga;

NAME TYPE VALUE
———————————— ———– ——————————
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 272M
sga_target big integer 272M

SQL> alter system set sga_max_size = 300M scope=spfile;

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

SQL> show parameter sga;

NAME TYPE VALUE
———————————— ———– ——————————
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 272M

SQL> alter system set sga_target=300M scope=both;

System altered.

SQL> show parameter sga;

NAME TYPE VALUE
———————————— ———– ——————————
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 300M

 

오라클 data file 이동하기.

http://leejehong.tistory.com/entry/datafile-rename-%EA%B2%BD%EB%A1%9C%EB%B3%80%EA%B2%BD-%ED%95%98%EA%B8%B0

temp01.dbf화일 변경시에 에러났지만, 나중에 확인해보니, 문제되지 않았음.

컨트롤화일 이동은

http://ethernet0.tistory.com/21

컨트롤 화일 이동시 실수를 했다. 컨트롤화일 수만큼

SQL> alter system set control_files=’/oradata/orcl/control01.ctl’ scope=spfile;

System altered.

SQL> alter system set control_files=’/oradata/orcl/control02.ctl’ scope=spfile;
System altered.

SQL> alter system set control_files=’/ora_data/orcl/control03.ctl’ scope=spfile;

System altered.

이렇게 하는 실수를…!!!

shutdown 했다가 startup하니.

SQL> select value from v$spparameter where name=’control_files’;

VALUE
——————————————————————————–
/ora_data/orcl/control03.ctl

그래서, 다시

SQL> alter system set control_files=’/oradata/orcl/control01.ctl’,’/oradata/orcl/control02.ctl’, ‘/oradata/orcl/control03.ctl’ scope=spfile;

요렇게 했건만,

ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: ‘/oradata/orcl/system01.dbf’
ORA-01207: file is more recent than control file – old control file

요런 에러가… ;ㅡㅡ

이것저것 해봤는데, 해결 안될듯… 테스트용 서버라 다행… 휴…

암튼, 이것저것 해 본 덕분에, 아래의 에러가!!!

SQL> conn /as sysdba
Connected to an idle instance.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 285212672 bytes
Fixed Size 2020192 bytes
Variable Size 134220960 bytes
Database Buffers 142606336 bytes
Redo Buffers 6365184 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

위 에러는 http://www.superuser.co.kr/superuserboard/view.html?id=333&code=oracle&start=500&position=  를 참고하여 해결.

 

아무튼, 컨트롤화일도 이동 성공… 한번의 실수 때문에, 여러가지 에러가 유발되었음.

linux watch

c shell에는 repeat라는, 특정 커맨드를 반복해서 실행 할 수 있는 명령어가 있다(아마, 내장 커맨드였던가?). 꽤 유용하게 썼던 기억이 있다.

리눅스에도 비슷한 커맨드가 있는데, 바로 watch다.

사용법은 간단하다.

예를 들어서, 대용량 화일을 복사한다고 하자. 그러면 얼마나 복사되었는지 확인하려고, ls 나 df 같은 커맨드를 주기적(?)으로 실행하게 될 것이다. 그건 너무 귀찮지 않은가? 그럴 때 바로 watch를 사용한다.

#watch -d -n 5 ls -alh

Every 5.0s: ls -alh Tue Mar 20 01:18:04 2012

total 65G
drwxr-xr-x 2 root root 4.0K 2012-03-15 18:31 .
drwxr-xr-x 5 root root 4.0K 2012-03-20 00:29 ..
-rwxr-xr-x 1 root root 24G 2012-03-20 00:47 cent57.vimg
-rwxr-xr-x 1 root root 12G 2012-03-19 23:20 solaris10.vimg
-rwxr-xr-x 1 root root 12G 2012-03-10 19:22 ubuntu.vimg
-rwxr-xr-x 1 root root 24G 2012-03-20 00:57 win7.vimg
-rwxr-xr-x 1 root root 22G 2012-03-20 00:29 xp.vimg

-d 옵션은 이전과 다른 부분이 있다면 하이라이트로 표시해주는 옵션이며, -n 5 는 5초 간격으로 명령어(ls -alh)를 실행하라는 뜻이다.

단점이 있다면, 사용자 인터럽트를 받을때 까지 계속 실행된다는 것이다. 즉, 중지는 사용자가 직접 해야한다는 뜻.

mdadm spare disk 제거

내 md0의 구성(아래).

# mdadm -D /dev/md0
/dev/md0:
Version : 01.02
Creation Time : Tue Nov 29 21:22:23 2011
Raid Level : raid1
Array Size : 488382841 (465.76 GiB 500.10 GB)
Used Dev Size : 976765682 (931.52 GiB 1000.21 GB)
Raid Devices : 2
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Mar 19 23:31:26 2012
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1

Name : fox:0 (local to host fox)
UUID : 4c2ddcae:30672ec0:f6065242:f4702e40
Events : 46

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1

2 8 49 – spare /dev/sdd1

1. 불행의시작!

md0의 spare 디스크가 제대로 작동하는지 테스트를 원하여, 아래 커맨드 수행후, 곧바로 Ctrl+c 눌러서 취소.

 # dd if=/dev/zero of=/dev/sdc1

이후, md0가 마운트되어 있는 곳에서 ls커맨드 수행시 리스트가 보이지 않음.   ==> 의도한 결과가 아님.

파티션 정보가 삭제된 sdc1과 sdb1이 동기화되어, md0의 파티션정보도 같이 삭제된듯.(이건 추측).

2. spare disk 제거

일단, spare디스크를 md0로 부터 제거하여, 화일을 백업받으려고 시도함.

#mdadm –remove /dev/md0 /dev/sdd1

#  mdadm -D /dev/md0

Number Major Minor RaidDevice State

0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1

제거한 디스크(/dev/sdd1)을 /mnt에 마운트하려고 시도했으나 에러 발생.

# mount /dev/sdd1 /mnt
mount: unknown filesystem type ‘linux_raid_member’

추측컨데, sdd1의 화일시스템을 만들지 않아서 발생하는 문제로 보여, 화일시스템을 생성함.

# mkfs.ext3 /dev/sdd1

# mount /dev/sdd1 /mnt

#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fox-root 129G 25G 98G 21% /
none 4.0G 248K 4.0G 1% /dev
none 4.0G 0 4.0G 0% /dev/shm
none 4.0G 96K 4.0G 1% /var/run
none 4.0G 0 4.0G 0% /var/lock
none 4.0G 0 4.0G 0% /lib/init/rw
/dev/sda1 228M 18M 199M 8% /boot
/dev/md0 459G 153G 283G 36% /home2
/dev/sdd1 459G 199M 435G 1% /mnt

일단 화일 /mnt에 /home2의 화일을 백업. (ls로 /home2의 목록은 보이지 않으나, 알고있는 디렉토리로 이동하면, ls로 목록 확인 가능. dd 커맨드 실행후 곧 취소하여 모두 삭제되지는 않은듯 하다.)

 

oracle filesystem full

발생한 문제

hpux, oracle 9i 상에서,

/oracle filesystem full

1. trace 화일(*.trc) 삭제

2. cdump 화일 (core) 삭제

이후, instance는 정상 실행되나, 어플리케이션에서, temporary tablespace를 사용할 수 없다는 메시지 발생

정확한 에러 메시지는 확인하지 못하였으나,

SQL> select tablespace_name, sum(bytes)/1024/1024 mb
f rom dba_temp_files
group by tablespace_name;

TABLESPACE_NAME                                                      MB
———————————————————— ———-
TEMP

SQL> select ss.tablespace_name,sum((ss.used_blocks*ts.blocksize))/1024/1024 mb
from gv$sort_segment ss, sys.ts$ ts
where ss.tablespace_name = ts.name
group by ss.tablespace_name;

TABLESPACE_NAME                                                        MB
————————————————————– ———-
TEMP                                                                    0

크기가 표시되지 않고 있음.

SQL> select name from  v$tempfile;

NAME
——————————————————————————–
/oracle/oradata/temp01.dbf

SQL> select file_name from dba_temp_files;

FILE_NAME
——————————————————————————–
/oracle/oradata/temp01.dbf

화일 존재.

instance를 재실행해도 마찬가지.

결국에, temporary tablespace를 offline 했다가 online했더니, 정상 작동.

temporary tablespace는 alter talbespace temp offline; 처럼 했을때 offline되지 않으므로,

SQL> alter database tempfile ‘/oracle/oradata/temp01.dbf’ offline;

SQL> alter database tempfile ‘/oracle/oradata/temp01.dbf’ online;

SQL> select tablespace_name, sum(bytes)/1024/1024 mb

from dba_temp_files

group by tablespace_name;

TABLESPACE_NAME                                                      MB

———————————————————— ———-

TEMP                                                               8590

 

 

kvm guest OS의 잡다한 설정

사용환경
OS: Ubuntu 11.04
CPU: Intel Xeon 3.7GHz x2 (4 core, 2 hyperthread per core)
RAM: 8GB
가상머신: KVM, Qemu
설정화일: /etc/libvirt/qemu/guest_os_name.xml
공통사항: 설정화일 수정후 libvirtd 재실행 할것.

1. 의외로 별거 아닌데 오랜 시간이 걸렸던, 게스트 OS의 그래픽 해상도 설정 문제.
guest OS를 설치하면(설치할때 옵션이 있는지는 모르겠다.)
보통 그래픽 해상도가 1024×768 까지밖에 지원되지 않는다. 설정(/etc/libvirt/qemu/guest_os_name.xml)을 확인해보면,

<video>
<model type=’vmvga‘ vram=’9216′ heads=’1′/>
<address type=’pci’ domain=’0×0000′ bus=’0×00′ slot=’0×02′ function=’0×0′/>

또는

<video>
<model type=’cirrus‘ vram=’9216′ heads=’1′/>
<address type=’pci’ domain=’0×0000′ bus=’0×00′ slot=’0×02′ function=’0×0′/>
</video>

이런 식으로 설정되어 있으며, 최대 해상도가 1024×768까지 설정됨을 확인할 수 있다. Linux계열이야 GUI를 많이 안쓰니까 상관없지만, windows 계열은 많이 불편하다. 이것 저것 확인해 보니 해상도를 높이는 방법은 의외로 간단했다.

<model type=’vga‘ vram=’9216′ heads=’1′/>

위쪽의 vmvga나 cirrus를 vga로 변경만 해주면된다.

2. CPU개수를 더 할당 하거나, 메모리를 더 할당할때.(물론, 반대도 가능하다).

<memory>1048576</memory>
<currentMemory>1048576</currentMemory>

위의 설정은 게스트 OS의 메모리가 1GB인 상태. 2GB로 늘리려면,

<memory>2097152</memory>
<currentMemory>2097152</currentMemory>

위처럼 변경해주면 해결.
게스트 OS의 속도가 좀 느리다는 생각이 들면, CPU를 더 할당해본다.

<vcpu>1</vcpu>

위의 항목을 찾아서,

<vcpu>2</vcpu>

처럼 바꿔준다.

3. Guest OS의 이름을 잘못줬다!!!(solaris 를 soalris로 잘못줬을경우)
물론, 그냥 써도 된다. 하지만 왠지 그냥 쓰고 싶지는 않다.

<name>soalris</name>
<source file=’/home2/VM2/soalris.vimg’/>

먼저,

<name>solaris</name>

로 변경한다. 두번째 줄은 선택사항이다. 이미지화일의 이름도 생성시 잘못들어갔다면, 역시 바꿔주면된다. 물론, 바꿔준후 원래 화일(soalris.vimg)의 이름을 solaris.vimg 로 바꿔주면 된다. 귀찮으면, 그냥 써도 된다.

4. Guest OS에 할당한 디스크가 너무 작다! 가상디스크를 추가하려면?
참고문서: http://itsignals.cascadia.com.au/?p=28

4.1. 실행중인 guest OS(xpsp2)를 중지시키고, 이미지화일을 백업해둔다.

4.2. 증가시킬만큼(여기서는 10GB) 아래 커맨드로 이미지화일을 생성한다.

# qemu-img create -f raw add-disk.raw 10g
Formatting ‘add-disk.raw’, fmt=raw size=10737418240

4.3. 두 화일을 합쳐서 더 큰 화일로 만든다. 시간이 좀 걸리므로 참고 기다리자.
여기서, windows.vimg는 원래 guestOS의 화일, add-disk.raw는 추가로 만든 화일, xp.vimg는 새로 만들어지는 화일.

cat windows.vimg add-disk.raw >> xp.vimg
#ls -alh
-rwxr-xr-x 1 root root 12G Feb 28 11:07 windows.vimg
-rw-r–r– 1 root root 10G Feb 28 11:58 add-disk.raw
-rwxr-xr-x 1 libvirt-qemu kvm 22G Feb 28 12:16 xp.vimg

4.4 생성한 xp.vimg를 사용하도록 xml화일을 수정해도 되고, 화일 이름을 변경해도 된다. 나는 xml화일에서 windows.vimg 를 xp.vimg로 수정하였다.

4.5. guestOS 를 실행하여 윈도우xp의 디스크관리에 들어가보면, 추가된 10GB가 보인다. 이것을 파티션잡고 포맷하여 사용하면 된다.

마지막으로, qemu-img resize windows.img +10GB 하면 된다고 위 참고문서에 누군가가 답글을 달아 놓은것을 보았다. 쉽게 되는것을 너무 어렵게 했나? ;ㅡㅡ

sun v480 error message…

처음 에러 메시지
Dec 13 06:47:11 solaris9 picld[60]: [ID 679711 daemon.error] NOTICE: Device FAN_TRAY_0 (CPU1_FAN) OK
Dec 13 06:47:11 solaris9 picld[60]: [ID 114988 daemon.error] FSP_GEN_FAULT_LED has turned OFF
Dec 13 08:22:26 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU1_FAN) failure detected
Dec 13 08:22:28 solaris9 picld[60]: [ID 691918 daemon.error] FSP_GEN_FAULT_LED has turned ON
Dec 13 08:22:41 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU1_FAN) failure detected
Dec 13 08:22:57 solaris9 picld[60]: [ID 679711 daemon.error] NOTICE: Device FAN_TRAY_0 (CPU1_FAN) OK
Dec 13 08:22:58 solaris9 picld[60]: [ID 114988 daemon.error] FSP_GEN_FAULT_LED has turned OFF

FAN TRAY를 교체하려고 준비했을때는 아래와 같이 바뀌었음.
Jan 19 15:24:11 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU0_FAN) failure detected
Jan 19 15:24:11 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU1_FAN) failure detected
Jan 19 15:24:11 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU2_FAN) failure detected
Jan 19 15:24:26 solaris9 picld[60]: [ID 679711 daemon.error] NOTICE: Device FAN_TRAY_0 (CPU0_FAN) OK
Jan 19 15:24:26 solaris9 picld[60]: [ID 679711 daemon.error] NOTICE: Device FAN_TRAY_0 (CPU1_FAN) OK
Jan 19 15:24:26 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU2_FAN) failure detected
Jan 19 15:26:41 solaris9 last message repeated 9 times
FAN TRAY를 교체하고 (이때 FAN Tray의 fan 3개는 모두 정상적으로 돌고 있었음.) 재부팅했을때 아래와 같음.
Jan 19 15:38:59 solaris9 ntpdate[234]: [ID 558275 daemon.notice] adjust time server 10.100.88.42 offset 0.266879 sec
Jan 19 15:39:02 solaris9 xntpd[292]: [ID 702911 daemon.notice] xntpd 3-5.93e Mon Sep 20 15:47:11 PDT 1999 (1)
Jan 19 15:39:02 solaris9 xntpd[292]: [ID 301315 daemon.notice] tickadj = 5, tick = 10000, tvu_maxslew = 495, est. hz = 100
Jan 19 15:39:02 solaris9 xntpd[292]: [ID 798731 daemon.notice] using kernel phase-lock loop 0041
Jan 19 15:39:02 solaris9 last message repeated 1 time
Jan 19 15:39:04 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU2_FAN) failure detected
Jan 19 15:39:05 solaris9 picld[60]: [ID 691918 daemon.error] FSP_GEN_FAULT_LED has turned ON
Jan 19 15:39:19 solaris9 picld[60]: [ID 562987 daemon.error] WARNING: FAN_TRAY_0 (CPU2_FAN) failure detected
Jan 19 15:40:05 solaris9 last message repeated 3 times

일단 팬트레이를 교체해도 문제가 해결되지 않아서 더 찾아보니, picld 버그일 가능성이 있다고 한다. 패치를 찾아서 시도해 보아야 할 상황인데, 패치를 받기가 힘들다. sun이 오라클에 합병당해서