ora-01081
오라클이 점점 무서워진다.. ;ㅡㅡ
오늘의 증상 !!
shutdown 했는데, 정상적인 셧다운이 안되서 강제로 오라클 프로세스들 kill
시스템 재부팅! 요거 클러스터에 오라클 HA구성이란걸 몰라서 한시간 헤맸다.
암튼, 도움을 받아 겨우겨우 부팅해서 오라클 실행(startup)시키니
ora-01081 에러
shutdown abort; 한후 다시 startup
일단 된다… ㅠㅠ
umask 022
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10gr2
export ORACLE_SID=orcl
export TMPDIR=$ORACLE_BASE/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export NLS_LANG=American_America.KO16KSC5601
export NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS’
export PATH=$ORACLE_HOME/bin:/usr/bin:/sbin:/usr/ccs/bin:/usr/bin/X11:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/usr/lib
export ORACLE_HOSTNAME=`hostname`
export PS1=`hostname`:’${PWD}/$ ‘
alias ls=’ls -F’
오라클이 점점 무서워진다.. ;ㅡㅡ
오늘의 증상 !!
shutdown 했는데, 정상적인 셧다운이 안되서 강제로 오라클 프로세스들 kill
시스템 재부팅! 요거 클러스터에 오라클 HA구성이란걸 몰라서 한시간 헤맸다.
암튼, 도움을 받아 겨우겨우 부팅해서 오라클 실행(startup)시키니
ora-01081 에러
shutdown abort; 한후 다시 startup
일단 된다… ㅠㅠ
오라클 잘 설치하고 패치까지 했는데,
ora-01092 에러 발생.
찾아보니, 오라클 엔진만 패치되고 데이타베이스가 패치되지 않아서 그렇다고 한다.
해결책은?
$sqlplus /nolog
SQL> conn /as sysdba
SQL> startup upgrade;
SQL>@$ORACLE_HOME/rdbms/admin/catupgrd.sql
…..
한시간 이상 걸림.. …
아무튼 끝나고나면 shutdown immediate;
이후 startup 했는데 ora-16038발생
처리후,
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> exit
$ORACLE_HOME/install/changePerm.sh 실행
관리중인 오라클서버에서 게시판 데이타를 삭제했다고 복구해 달라는 부탁을 받았다.
근데, 다 하고 보니 너무 무식한 방법을 사용한것 같다.
아무튼, 아래와 같은 방법으로 작업했다.
백업되어 있는 archive log화일과, dbf화일 ctl화일들을 모두 복사했다. 그리고, 오라클을 다른 컴퓨터에 설치한후에, 원래 화일들 이름을 바꾸고, 백업한 화일을 같은위치에 복사해 넣었다.
SQL> startup
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: ‘/xxx’
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
그리고 삭제된 데이타를 찾아보니 잘 있다 … 하하..
그러나 너무나 무식한 방법이었다…
아주 간단한 방법이 있었는데 그것은…..
SELECT * FROM [TABLE_NAME] AS OF TIMESTAMP (SYSTIMESTAMP – INTERVAL ’100′ MINUTE);
삭제하고 commit 했어도 삭제된 데이타를 보여준단 말이다.
오라클의 flash back기능이란다…
있어도 무식해서 못써먹었으니… 이런 세상에나…
다음번에는 간단하게 써 먹어봐야 겠다.
사이베이스 백업 스크립트
#!/usr/bin/sh
DIR=”[SYBASE_BACKUP_DIR]”
WEEK=`date +%Y%m%d`
tgt_file=”$DIR/[database_name].$WEEK.dmp”
log_file=”$DIR/R/[database_name].$WEEK.log”
isql -Usa -P <<EOF
dump database [database_name] to “$tgt_file”
go
.
EOF
echo “DB DUMP END ==>$tgt_file”
find [SYBASE_BACKUP_DIR]/*.dmp -mtime +2 -exec rm -rf {} \;
find [SYBASE_BACKUP_DIR]/*.log -mtime +2 -exec rm -rf {} \;
참고: http://www.oracle-base.com/articles/10g/OracleDB10gR2InstallationOnRHEL5.php
1. 오라클 계정 생성
#groupadd dba; useradd -d /oracle -m -g dba oracle
2. 오라클 계정의 .profile 설정
export ORACLE_BASE=/oracle;
export ORACLE_HOME=/oracle/product/10gr2;
export ORACLE_SID=u-wellness;
export ORACLE_OWNER=oracle;
export ORACLE_PATH=$ORACLE_HOME/bin;
export ORACLE_DOC=$ORACLE_HOME/ocommon/nls/admin/data;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib32:$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib;
PATH=$PATH:/$ORACLE_HOME/bin:$ORACLE_HOME/network/admin;
3. /etc/redhat-release 의 내용을 수정(설치 완료후 원래 내용으로 복구한다)
Red Hat Enterprise Linux Server release 5.2 (Tikanga) –> redhat-4
4. 커널 파라메터 수정 (/etc/sysctl.conf)후/sbin/sysctl -p 로 적용
kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 net.core.rmem_max=262144 net.core.wmem_default=262144 net.core.wmem_max=262144
5. /etc/security/limits.conf 에 아래 내용을 추가
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
6. /etc/pam.d/login 에 아래 줄을 추가한다.
session required /lib/security/pam_limits.so
7. oracle계정으로 로그인한 후 runInstaller 실행
8. 설치도중 아래와 같은 에러가 발생한다면 libXp-1.0.0-8.1.el5.i386.rpm libXp-devel-1.0.0-8.1.el5.i386.rpm패키지를 설치해준다.
Exception java.lang.UnsatisfiedLinkError: /tmp/OraInstall2009-03-05_06-14-21AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory occurred..
java.lang.UnsatisfiedLinkError: /tmp/OraInstall2009-03-05_06-14-21AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
9. 설치조건 검사중 스왑이 충분하지 않다는(3GB 이상) 메시지 나옴. 아래와같은 방법으로 스왑영역 2GB 확보
# dd if=/dev/zero of=/swapfile bs=2k count=1024000
1024000+0 records in
1024000+0 records out
2097152000 bytes (2.1 GB) copied, 10.3085 seconds, 203 MB/s
# chmod 600 /swapfile
# mkswap /swapfile
Setting up swapspace version 1, size = 2097147 kB
# swapon -v /swapfile
swapon on /swapfile
swapon -s 로 확인
10. 설치도중에 root 권한으로 아래 작업을 수행해야한다.(화면 메시지에 표시됨)
# /oracle/oraInventory/orainstRoot.sh
# /oracle/product/10gr2/root.sh
이벤트뷰어에 MSSQL관련 에러메시지가 잔뜩 나와있어서 확인해 본 결과 트랜잭션 로그 파일이 139GB나 되었다. 남은공간 9MB. 해결방법은 해당 트랜잭션로그를 삭제하거나, 줄이는 방법인데, 아래와 같은 명령어를 쿼리분석기에서 실행하면 된다.
backup log DATABASE_NAME with truncate_only
dbcc shrinkdatabase(DATABASE_NAME, truncateonly)
dbcc shrinkdatabase(DATABASE_NAME, 500)
트랜잭션로그 크기를 500MB로 제한.
백업 & 복구
1) 우선 백업 프로세스 띄우기
$ startdevice -f RUN_SYB_BACKUP
2) 덤프 받기
> dump database master to ‘화일명’ => 화일로 받을 때
‘dev/rmt/0′ => 디바이스로 받을 때
3) 체크 옵션을 두어서 일정시간이 되면 작동하도록
> sp_dboption POSCO, ‘trunc log on ckpt’, true => 설정
> checkpoint => 바로 checkpoint 작동하도록 함,
commit된 데이타를 물리적으로 저장하고 비움
> sp_configure ‘recovery’ => 설정상황을 보여줌.
4) 백업 프로세스 내리기
> shundown SYB_BACKUP