곧 Solaris에 Oracle을 설치할 일이 있어서, 미리 연습을 해보고 있습니다. 제게 SUN 장비가 있으면 참 좋겠지만 여건이 안되어서 VMWare Server 버전을 설치하고는 Solaris10에 Oracle 9i를 설치하고 있습니다. 아직은 Solaris에 Oracle 계정 설정 중입니다.

그동안 써오던 Linux와 큰 틀에서는 같지만 실제 사용하게되면 작은 부분들은 조금씩 틀리더군요. 설정 파일이 저장되는 위치라던지... 후훗...

음... 한가지 걱정스러운건 Solaris x86용의 Oracle 9i가 다운로드 페이지에 없었다는 겁니다. VMWare Server에 Solaris로 설정하고 Solaris를 설치하면... 이게 Sparc버전과 같은건지...
아니... VMWare에 Solaris Sparc버전이 설치가 되는건지... 음... 한번 확인해봐야 겠네요.



다음은 oracle 계정의 설정파일 내용입니다.

# groupadd oinstall

# groupadd dba

# useradd -g oinstall -G dba -d /export/home/oracle -s /usr/bin/bash  oracle

# passwf oracle

# su - oracle

-bash-3.00 $ vi .bash_profile
PS1="\s-\v \T $ "
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle9i
export ORACLE_SID=TEST1
export ORACLE_OWNER=oracle

export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=vt100
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/lib:/usr/ccs/lib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/lib:/usr/ccs/lib


-bash-3.00 $


현재 여기까지 진행했습니다. ^^;
앞으로 갈길이 머네요.

 월요일에 갑자기 사무실에 있는 개발서버의 오라클 DB가 다운되어 있다는 얘기를 들었습니다.
팀원의 반정도가 본사로 교육을 받으러가있었서 급할게 없기에 천천히 복구 작업을 하게되었죠. 하드디스크 하나를 제거한 뒤에 datafile을 못 찾아서 생긴 현상이었기에 해당 datafile을 삭제해주고 DB를 open하려고 했는데...

SQL> set linesize 150

SQL> col ts_name format a15

SQL> col filename format a60

SQL> SELECT A.TS#, A.NAME AS TS_NAME, B.FILE#, B.NAME AS FILENAME, B.STATUS, B.ENABLED FROM v$tablespace A, v$datafile B WHERE A.TS#=B.TS#

테이블스페이스 이름과 활당된 데이터파일 목록 출력


SQL> ALTER DATABASE DATAFILE 14 OFFLINE DROP;
-- 14번 데이터파일이 없어진 파일이다.

SQL> ALTER DATABASE OPEN;


 여기서 문제가 발생했다. 오류 메세지를 보니 ORA-00600이고 상세 오류 정보에 [2252]가 포함되어 있기에 검색을 해봤더니 SCN관련 오류인듯했다. 다시 서버를 점검해보니 서버의 시스템 날자가 2003년도 1월로 되어있기에 이를 오늘 날자로 바꿔주고 Oracle을 재시작해줬더니 잘 되었다.
그리고 DB를 open한뒤에 해당 테이블 스페이스를 삭제해준걸로 마무리를 했습니다.

SQL> ALTER DATABASE DATAFILE 14 OFFLINE DROP;

SQL> ALTER DATABASE OPEN;

SQL> DROP TABLESPACE LIS;



 이렇게 써놓으니 아주 쉽게 넘어간것 같은데... 사실 이 과정이 이틀이나 걸렸던것이다.
처음엔 controlfile을 재생성하려고 했었다. ORA-00600 [2252] ~~~ 뭐 이런 메세지를 처음 봐서 너무 당황한 나머지 DB 재생성까지 생각했던 것인데... ㅡ.ㅡa
여기서 이번 사례를 정리해보면

환경
1) 아카이브 로그 모드가 아니다.     ㅡ.ㅡ
2) Offline backup을 한 적이 없다.   ㅜ.ㅜ
3) 해당 테이블스페이스는 없어져도 된다.    ^^ (빙고~)

증상
1) Oracle DBMS가 mount 단계에서 open되지 않고 멈추어있다.

원인
1) Datafile 일부가 없어졌다.

해결책
1) 해당 파일을 없애준뒤에 DB를 open한다.
2) 해당 테이블스페이스를 삭제한다.

 오늘도 삽질이 계속 되고있습니다. 단순히 백업해둔 파일로 새로운 인스턴스를 띄워서 예전 테이블들을 백업하는 작업이었는데요... 암튼... 속도도 예상보다 많이 느리고... 티볼리 데몬에도 문제가 생기는 등 갖가지 난관에 봉착했습니다. ㅜ.ㅜ

암튼... 이 모든 작업을 하기전에 먼저 확인할 내용이 있죠. 현재 백업하려는 테이블 들의 총 용량이 얼마나 되는지 입니다. 이걸 알아야 백업한 파일을 어디에 저장할 건지 그리고 백업을 어떻게 할건지를 결정할 수 있겠죠. 그래서 이것 저것 알아보다가 정확하진 않지만 알아보는 쿼리를 얻었습니다. 제가 정확한 결과를 찾겠다며 헤메고 있자, 사수님이 준 쿼리입니다. ^^;
꼭 정확한 사용량을 알아야 겠다면 통계자료를 수집하도록 한 뒤에 dba_tables같은 View를 이용하면 되겠지만, 서버에 부하를 주는 작업을 할 수 없는 상황이라면 아래와 같은 쿼리문으로 대략적인 사용량을 알아 볼 수 있습니다.


SELECT   owner,segment_type, tablespace_name, SEGMENT_NAME, SUM(BYTES/(1024*1024))  SIZE_IN_MEG
FROM DBA_SEGMENTS
WHERE tablespace_name IN (SELECT tablespace_name FROM DBA_TABLESPACES WHERE owner NOT IN
  ('SYS','SYSTEM','PUBLIC','OUTLN','WMSYS','ORDSYS','ORDPLUGINS','MDSYS','CTXSYS'
,'XDB','WKSYS','OLAPSYS'))
--GROUP BY rollup( owner,segment_type,tablespace_name,SEGMENT_NAME)
GROUP BY owner,segment_type,tablespace_name,SEGMENT_NAME
ORDER BY SIZE_IN_MEG DESC


위의 쿼리문을 적당히 고치면 원하는 내용을 얻을 수 있습니다.원하는 테이블만, 혹은 원하는 유저의 테이블만... 같은 조건을 주면 됩니다.
 이건 오라클의 exp 툴을 이용해서 백업 스크립트를 만들때 괄호를 넣었더니 에러가 발생해서 알게된 것인데...
명령행에 괄호를 넣었더니 에러가 발생했습니다.
() 이런 문자는 넣으면 안된다고 합니다.

예를 들어서
exp scott/tiger file=파일명 log=파일명 tables=(테이블이름)

하면 에러가 발생하고, 괄호를 빼고, 각 테이블 이름에 작은 따옴표(싱글 쿼테이션 마크라고 하죠.)를 넣어주었더니 잘 되더군요. 흠...

 아래 내용은 구글, 네이버 등의 사이트에서 검색한 내용중에서 실제로 적용이 되었던 내용입니다. 물론 실제로 적용이 되었던 환경은 리눅스가 아니라 SUN 장비에 Solaris 9 이였습니다.64비트 CPU였구요. 하지만 리눅스 서버에서도 잘 되리라 생각합니다.


-----------------------------------------------------------------------------------------------

운영체제 : RedHat Linux 9
DBMS : Oracle 9i


1. 문자셋 확인

 SQL>select * from v$nls_parameters where parameter like '%CHARACTER%';


2. 문자셋 변경

 SQL>STARTUP MOUNT;
 SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
 SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
 SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
 SQL>ALTER DATABASE OPEN;
 SQL>ALTER DATABASE CHARACTER SET [UTF8];  // [변경하고자 하는 문자셋] ,AL32UTF8
 SQL>SHUTDOWN IMMEDIATE;
 SQL>STARTUP;


 

 ORA-12712 ; new character set must be a superset of old character set

 해당 메세지의 경우 문자셋 변경이 어렵다.


 위와 같은 메세지가 나오는 경우 기존 오라클 인스턴스를 삭제 후

 $ORACLE_HOME/bin/dbca 를 실행하여 새로운 인스턴스를 만드는 것이 추천 방법이다.


 ※ 언어가 문자셋을 말하는 것은 아니다.


NLS_LANG=KOREAN_KOREA.KO16KSC5601

 OTN[각주:1]의 Developer Article 중에서 스크립트 언어 관련 개발 문서중 하나를 소개합니다.

원문 : 오라클 환경에서 Python과 TurboGears 활용하기 [문서의 프린트용 화면보기]

 본 문서는 TurboGears 프레임워크를 이용해서 Python으로 Oracle Database 기반의 웹 어플리케이션을 개발하는 방법을 알려줍니다.

저자 – Daniel Rubio

TurboGears는 Python 사용자들이 오라클 데이터베이스 기반의 웹 기반 애플리케이션을 구현하는데 필요한 강력한 프레임워크를 제공합니다.

게시일: 2007년 11월

Python 은 지난 수 년 동안 매우 각광 받아 온 스크립팅 언어로, 매우 간결한 문법과 미니멀리즘적인 개발 환경을 제공합니다. Python의 열성 추종자들은 그래픽 인터페이스에서 로봇 공학에 이르는 다양한 스크립트 활용 사례를 구현해 왔습니다. 하지만 최근까지도 데이터베이스 기반의 웹 애플리케이션은 Python 커뮤니티의 미개척지로 남아 있었습니다. 하지만 이제 TurboGears가 제공하는 O/R(object-relational) 매퍼, 템플릿 툴킷, 기타 컴포넌트들을 활용하여 오라클 데이터베이스 기반의 웹 애플리케이션을 Python으로 개발할 수 있는 길이 열렸습니다.

Python과 TurboGears: 배경 지식과 아키텍처

지난 수 년 동안 개발된 써드 파티 라이브러리와 모듈들만 보아도 Python의 대중성을 익히 짐작할 수 있습니다. Python을 이용한 웹 애플리케이션의 개발에는 그 한계가 없는 것처럼 보입니다. 관계형 데이터베이스의 접근을 위한 Python 스크립트도 그 수를 헤아리기 힘든 지경입니다. 하지만 데이터베이스를 기반으로 하는 완전한 형태의 웹 애플리케이션은 Python이 지원하지 못하는 가장 큰 공백으로 남아 있었습니다.

Java Platform, Enterprise Edition(Java EE)이 데이터베이스 기반 웹 애플리케이션의 구현에 관련한 문제들을 해결하기 위해 각종 표준과 프레임워크들을 계속적으로 개발해 온 것처럼, 오늘날의 데이터베이스 기반 웹 애플리케이션 요구 사항을 지원하기 위해 Python 커뮤니티가 해답으로 제시한 것이 바로 TurboGears입니다.


  1. Oracle Technology Network의 약자로 오라클 기술 문서와 자료들을 제공합니다.
    http://otn.oracle.com/kr [본문으로]
 수십가지... 아니 수백가지 신기술로 무장한 Oracle 10g가 등장하였지만 아직 9i 버전에서 벗어나지 못한 제게는 충격적인 사건이 벌어졌습니다.
Oracle 11g 등장, 두둥~!!

 Oracle Database 11g 홈페이지

Oracle Database 11g가 제공하는 혜택이 아래와 같습니다:

  • Real Application Testing을 통해 새로운 테크놀로지를 보다 신속하게 적용할 수 있습니다.
  • 고급 압축, 파티셔닝 기능을 이용하여 더 많은 데이터를 보다 효과적으로 관리할 수 있습니다.
  • Oracle Fast Files를 이용하여 오라클 데이터베이스에 모든 데이터를 저장하고 시스템을 단순화할 수 있습니다.
  • Data Guard의 최신 기능을 이용하여 재해 복구 리소스의 ROI를 극대화할 수 있습니다.
  • 관리 환경의 자동화를 통해 핵심 운영 인력이 보다 전략적인 업무에 집중할 수 있게 합니다.
  • 그 밖에도 매우 다양한 혁신적 기능이 제공됩니다.


 또 다시 배워야할 신기능들... 이런...
"오라클 데이터베이스의 새 버전이 나올때마다 눈앞이 캄캄하다"는 모 강사님의 말이 피부로 느껴집니다.
아직 10g에 대해서도 잘 모르는데 11g라니...
열심히 해야 겠네요.
 가끔씩 쓰긴하는데, 기억이 잘 안나는 쿼리문입니다.
연속된 숫자를 발생시키는 쿼리입니다. 아래의 쿼리문은 연속된 숫자를 발생시키고 이를 DATE형으로 바꿔서 한해의 일자를 연속으로 만들어주는 쿼리입니다.


1. 특정숫자까지의 연속된 숫자를 발생시키는 쿼리입니다.
SELECT level
  FROM DUAL
CONNECT BY level<=특정숫자;

2. 응용해서 그해의 일자를 1월1일부터 12월 31일까지 발생 시켜주는 쿼리입니다.
SELECT TO_DATE(TO_CHAR(level, '000'), 'ddd')
  FROM DUAL
CONNECT BY level<=TO_NUMBER(TO_CHAR(TO_DATE('12-31', 'MM-DD'), 'DDD'));
 오라클에서 무료로 배포하는 Oracle SQL Developer 1.2 버전[각주:1]의 Tutorial입니다.

 SQL Developer 1.2버전은 꽤 쓸만합니다. 1.1버전부터는 MySQL, MS-SQL에 접속할 수 있습니다. MySQL에 접속하려면 Mysql Homepage에서 Connect/J를 다운받아서 [SQL Developer가 설치된 디렉토리]/jdk/jre/lib/ext/에 복사한뒤에 사용하면 됩니다.
또한 Linux, Mac OSX, MS Windows 등의 운영체제에서 사용가능합니다.


 Online tutorial이며 http://st-curriculum.oracle.com/tutorial/SQLDeveloper/index.htm에서 볼 수 있으며 다운로드도 가능합니다.


단점이라면 영문이라는 거!!!
영어 공부 해야겠습니다.
아래는 튜토리얼 첫화면의 환영 문구입니다.

Welcome to the Oracle SQL Developer Tutorial!

This tutorial prepares a developer to use Oracle SQL Developer to perform common database development tasks. This tutorial was developed using Oracle SQL Developer 1.2.

After taking this tutorial, you should be able to:

Install Oracle SQL Developer
Create a Database Connection
Manage Database Objects
Access and Manipulate Data
Add, edit and debug PL/SQL Components


  1. Oracle에서 무료로 배포하는 DB 개발툴입니다. OTN에서 다운로드 받을 수 있습니다.
    1.1버전부터는 Oracle 이외에 MS-SQL, MySQL에도 접근할 수 있습니다. 이기종 DBMS에서는 아직 쓸만한거 같지는 않습니다. :)
    Oracle DBMS 개발용도로는 좋습니다. 1.2 버전에서는 Migration 관련 기능도 있구요.
    SQL Developer 1.2 Download (OTN 계정이 있어야  다운로드 받을 수 있습니다.)
    SQL Developer Homepage [본문으로]
 OTN에서 Oracle 10g RAC 설치 문서를 보면 Openfiler라는게 등장한다. Storage로 iSCSI를 이용하는데, iSCSI 서비스를 위해 Openfiler를 이용한다.

아래는 Openfiler 홈페이지에 있는 About openfiler라는 문서의 서문이다.

Openfiler is a powerful, intuitive browser-based network storage software distribution. Openfiler delivers file-based Network Attached Storage and block-based Storage Area Networking in a single framework.

Openfiler uses the rPath Linux metadistribution. It is distributed as a stand-alone Linux distribution. The entire software stack interfaces with third-party software that is all open source.

File-based networking protocols supported by Openfiler include: NFS, SMB/CIFS, HTTP/WebDAV and FTP. Network directories supported by Openfiler include NIS, LDAP (with support for SMB/CIFS encrypted passwords), Active Directory (in native and mixed modes) and Hesiod. Authentication protocols include Kerberos 5.

Openfiler includes support for volume-based partitioning, iSCSI (target and initiator), scheduled snapshots, resource quota, and a single unified interface for share management which makes allocating shares for various network file-system protocols a breeze.



아직 사용해보지는 않아서 좋은지는 모르겠다. 게을러서... :)

+ Recent posts