'oracle'에 해당되는 글 2건

  1. 2009.10.28 oracle java programming (1)
  2. 2009.09.20 DBA 연봉
1. Oracle 기본적으로 설치시, (관리자) 로그인 방법 - sqlplus

$> su oracle
passwd :

oracle@easy-pc:/$ sqlplus "/as sysdba"

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  238530560 bytes
Fixed Size            1299116 bytes
Variable Size          155192660 bytes
Database Buffers       75497472 bytes
Redo Buffers            6541312 bytes
Database mounted.

Database opened.


위에서 보듯이, idle instance에 접속했다고 나오는데, 이는 oracle instance가 시작을 안햇다는 표시이므로, startup으로 실행시켜준다.

2. 오라클과 자바를 같이 배우기 위해서, 오라클에 자바 서버 플랫폼을 설치한다.
(아마 기본적으로 다 설치되리라 생각됨)

SQL> select count(*), status from user_objects
  2  where object_type=
  3  'JAVA CLASS'
  4  group by status
  5  /

  COUNT(*) STATUS
---------- -------
     20137 VALID


라고 했을시, 결과가 다음과 같이 valid 이면 설치가 된 것이고, 만약 아니라면,
%ORACLE_HOME%/javavm/install 에서 스크립트를 수행해주면 된다.

보이듯이, 2만개가 넘는 자바 클래스 객체들이 생성되어있고, 우린 이것을 사용할 수 있다.


3. 데이터베이스 외부로부터 자바 클래스 파일이나 소스 파일을 로드 하려면 loadjava를 사용하면된다.
이는 %ORACLE_HOME%/bin에 있는 스크립트이다.

jiwoong@easy-pc:~/oj$ loadjava
loadjava: Usage: loadjava [-definer] [-encoding encoding] [-force] [-genmissing] [-genmissingjar jar] [-grant grants] [-help] [-nousage] [-noverify] [-oci8] [-order] [-resolve] [-nativecompile] [-resolver resolver] [-schema schema] [-synonym] [-thin] [-tableschema schema] [-user user/password@database] [-verbose] classes..jars..resources..properties... 


이제 클래스 파일을 DB로 로드 해보자.

jiwoong@easy-pc:~/oj$ cat test.java
public class test{
    public static void main(String[] args){
        System.out.println("hello");
    }
    public static void db_run(){
        System.out.println("db_run");
    }

}


$> javac test.java
$> java test
hello
$>


4. 잠시,

1. 오라클 유저는 DBA만이 생성할 수 있다.

    DBA로 접속한다 

manager login
- sqlplus system/manager
- sqlplus "/as sysdba"

2. create tablespace
- CREATE TABLESPACE test_ts DATAFILE '/export/oracle10/oradata/ORA10g/test_ts.dbf' SIZE 10M

3. create user
- CREATE USER test IDENTIFIED BY password DEFAULT TABLESPACE test_ts TEMPORARY TABLESPACE TEMP QUOTA 500K ON test_ts

4. user permission
- GRANT CONNECT TO test
- GRANT CONNECT, RESOURCE TO test
- GRANT CONNECT, DBA TO test
---------------------------------------------------------------------------
비밀번호 변경

ALTER USER SYS
IDENTIFIED BY "password";


- CREATE USER : 뒤에 사용자 이름

 - IDENTIFIED  BY password : 사용자가 데이터베이스에 의해 인증되도록 지정하며, 데이터베이스

                                            유저 로그온시 사용하는 비밀번호

 - DEFAULT TABLESPACE:  사용자 스키마를 위한 기본 테이블 스페이스를 지정

 - TEMPORARY TABLESPACE: 사용자의 임시 테이블 스페이스를 지정

 - QUOTA절을 사용하여 사용자가 사용할 테이블 스페이스의 영역을 할당


5. jiwoong@easy-pc:~/oj$ loadjava -user jiwoong/jiwoong -resolve -verbose test.class
arguments: '-user' 'jiwoong/***' '-resolve' '-verbose' 'test.class'
creating : class test
loading  : class test
created  : CREATE$JAVA$LOB$TABLE
resolving: class test
errors   : class test
    ORA-29552: ¿¿ ¿¿: java.lang.UnsupportedClassVersionError: test (Unsupported major.minor version 50.0)

Classes Loaded: 1
Resources Loaded: 0
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 0
Errors: 0
jiwoong@easy-pc:~/oj$


중간 에러는 언어땜시??

여튼 클래스를 로딩 완료한듯.



SQL>
  1  select dbms_java.longname(object_name), object_type, status
  2  from user_objects
  3 where object_type like 'JAVA%'

DBMS_JAVA.LONGNAME(OBJECT_NAME)     OBJECT_TYPE        STATUS
------------------- -------
test JAVA CLASS        VALID


보면 test라는 object가 생겼다.

SQL> create or replace procedure run_hello
  2  as language java
  3  name 'test.db_run()';
  4  /

Procedure created.

프로시저를 만들고,


SQL> set serveroutput on size 5000
SQL> call dbms_java.set_output(5000);

Call completed.

dbms_java.set_output을 사용하여 system.out을 SQL*Plus세션으로 출력 방향을 바꾼다... 고 한다.


SQL> execute run_hello;
BEGIN run_hello; END;

*
ERROR at line 1:
ORA-29516: Aurora assertion failure: Assertion failure at eox.c:332
Uncaught exception System error:   java/lang/UnsupportedClassVersionError
ORA-06512: at "JIWOONG.RUN_HELLO", line 1
ORA-06512: at line 1


SQL>

이제 실행을 한 것인데.. 이런 오류가 난다.. 찾아본 결과, java 1.4 로 컴파일을 하란다... 제길..

$> javac -source 1.4 test.java

후 , 위에 등록했던 자바 객체를 drop 시키고 다시 등록 한다.
jiwoong@easy-pc:~/oj$ dropjava -user jiwoong/jiwoong -verbose test.class
dropping: class test

jiwoong@easy-pc:~/oj$ loadjava -user jiwoong/jiwoong -verbose test.class
arguments: '-user' 'jiwoong/***' '-verbose' 'test.class'
creating : class test
loading  : class test
Classes Loaded: 1
Resources Loaded: 0
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 0
Errors: 0


이제 다시, 프로시저를 생성.
SQL> create or replace procedure run_hello2
  2  as language java
  3  name 'test.db_run()';
  4  /

Procedure created.


그리고 실행..

SQL> execute run_hello2
db_run

PL/SQL procedure successfully completed.


오우.. 드디어 db_run을 보다.!!!


이외에도 자바 소스를 로딩하는 법과, 여러개의 자바소스/클래스 파일을 로딩하는 법, DB내에서 자바소스를 작성하는 법이 있으나, 시간 관계상 생략..


참고문헌 ; Oracle 9i Java programming

Posted by Gwoong
,

DBA 연봉

카테고리 없음 2009. 9. 20. 01:25
http://www.neonesoft.com/blog/blogs/cmullins/archive/2007/12/19/DBA-Salary-Update.aspx


비록 07년 12월 기사이긴 하지만, 그리고 미국의 기사이긴 하지만.

DBA 에 대한 연봉이 적혀 있는 기사라 관심있게 읽어보았다.


다른 것보다 흥미있었던것은, DB2 관련 직종자가 Oracle의 직종자들보다 연봉을 더 받는다는 것이었는데,

그 이유를 기사에서 설명하길,

DB2와 관련있는 시스템인 Mainframe이 전세계적으로

Oracle과 관련 있는 Unix 시스템이나 MS-sql과 관련있는 windows 시스템보다 더 많은

사용량을 보이기 때문이란다. (물론 일반 사용자용이 아닌 기업용으로 따지는 거겠지)


아이러니 하게도, 얼마전에 IBM코리아에서는 Unix로 마이그레이션 하려는 많은 기업체들의

전산실을 IBM이 Mainframe으로 돌리려 애쓴다는 - 그럼에도 여전히 Unix로의  미래 선호도가 높다고 -

기사를 보게 되었는데.

외국들과 우리나라에 대한 시스템의 상황이 정반대로 흘러가는 것인지, (우리나라의 IT 시스템이 정반대로 가는것인지)

아니면 문화적 차이인 것인지, 이도 아니면

내가 잘못 알고 있는것인지 모르겠다.


그리고 또 한가지, 이 기사에서는 Oracle OCM의 연봉은 말하지 않았는데

아마 이들의 연봉은 DB2관련자들보다 높지 않을까 생각한다.

(물론 DB2쪽에도 Advanced DB2 유저임을 걸러내는 자격증이 있긴 하지만)


난 아직 학생이기에 정확한 DB업계쪽의 연봉은 잘 모르겠으나,

수요면으로만 따졌을때, 다시 두가지로 생각해볼 수 있는데,

한가지는, 전세계 점유율이 거의 50%에 육박하여 1위를 계속 고수하는 오라클의

여러기관에서의 설치로 인한 orcale dbms를 관리/유지/보수 하기 위하여 구인의

공급이 수요보다 달린다면 높아질 수 있을 것이다.

다른 면에서는, DB2가 높을 것이라고 생각되는것이,

DB2에 대한 '전문가'가 그다지 없으니 (상대적으로 오라클에 비해선 그렇다고 생각한다)

일정 수준에 오른 DB2 관계자의 연봉은 높아질 것이라 생각한다.


이제 앞으로 oracle에서 oracle dbms+sun의 h/w 패키지(?) 로

공략을 펼칠 것인데, 과연 고객사들은 누구 편을 들어줄 것인지 궁금하다.


Posted by Gwoong
,