레이블이 trouble shooting인 게시물을 표시합니다. 모든 게시물 표시
레이블이 trouble shooting인 게시물을 표시합니다. 모든 게시물 표시

2018-07-10

[pom.xml]org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)

출처]http://lime-it.tistory.com/36

STS 설치 이후 처음으로 스프링 부트 프로젝트를 생성하였는데 생성하자마자 오류가 등장하였다.

org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)

검색해도 한글로 된 답변도 없고 이것저것 도전해보다가 돌고 돌아 쓸만한 답변 하나 찾아서 해결했다.

위 오류는 Maven에 update project를 해도 해결이 되지 않는데

해결책으로는 두가지 방법이 있다.

1. 버전 다운그레이드
버전을 다운그레이드 할 경우 오류는 사라지지만 권장하지 않는 방법


2. 이클립스에서 m2e 확장 기능을 설치하는 것
Help -> install New Software 에서
https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST/
or
http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/
둘 중 선택해서 검색하여 m2e 확장기능을 설치후 재 시작하게 되면 오류는 해결된다.


참고한 자료 출처 : https://stackoverflow.com/questions/37555557/m2e-error-in-mavenarchiver-getmanifest

2013-10-25

DB2] DB2 에서 Assignment of a NULL value to a NOT NULL column 의 오류 발생시

DB2 로 프로그램 개발시 ,
Assignment of a NULL value to a NOT NULL column 메시지와 함께
"TBSPACEID=XX, TABLEID=XX, COLNO=XX" 라는 오류 메시지를 받게 되는 경우 아래의 방법으로 확인가능.

1.
select * from syscat.tables 
where tableid = xx 
;

로 해당 테이블 명을 확인.

2.
select * 
from syscat.columns 
where tabname = '확인한 테이블명'
and colno = xx;

로 해당 컬럼을 확인하여 조치를 취할 수 있다. 

2012-10-23

이클립스에서 톰캣 연결할때 UTFDataFormatException 오류



이클립스에서 톰캣 연결할때

Catalina.start: java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
 at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
 at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
 at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
 at org.apache.xerces.impl.XMLEntityScanner.scanLiteral(Unknown Source)
 at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanAttribute(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
 at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
 at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
 at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
 at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
 at org.apache.commons.digester.Digester.parse(Digester.java:1543)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:449)
 at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
 at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:324)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)

이런에러가 계속 발생합니다... 어떻게 해야하나여...?
플러그인은 추가시킨 상태에요..


===========================================================================================
server.xml에 한글문자가 주석이든 모든 들어가면 뜨는 에러입니다.
server.xml에 보시면 문자 인코딩이 iso8859-1 이라고 되어있는데 한글이 들어가면서 생기는 현상입니다.
한글 부분을 영어로 바꾸시면 해결됩니다. ㅡㅡ;

2012-10-07

DBMS/오라클] ORA-01652 에러 대처


ORA-01652:128()로 테이블 공간 TEMP에서 임시 세그먼트를 확장할 수 없습니다.


원인1
Temp Tablespace를 구성하는 Data File Size가 작은 경우

해결1

TEMP 테이블스페이스의 TEMPFILE 크기 확인

SELECT *
FROM DBA_TEMP_FILES
WHERE TABLESPACE_NAME='TEMP';

테이블스페이스 공간 추가(3개중의 하나)
1) ALTER TABLESPACE TEMP ADD TEMPFILE '/ORADATA/TEMP02.DBF' SIZE 100M;
또는

2) ALTER DATABASE TEMPFILE '/ORADATA/TEMP01.DBF' AUTOEXTENT ON;
기존의 TEMP01.DBF AUTOEXTENT로 바꿈
또는

3) ALTER DATABASE TEMPFILE ''/ORADATA/TEMP01.DBF'' RESIZE 100M;


원인2

Temp Tablespace Max Extents에 도달한 경우

해결2
v$sort_segment를 확인해서 현재 할당된 크기가 얼마인지 확인한다.


할당할 수 있는 최대 EXTENT 의 크기가 얼마인지 확인한다.
SELECT MAX(blocks), MAX(bytes)
   FROM DBA_FREE_SPACE
  WHERE TABLESPACE_NAME = 'TEMP';


2012-10-06

DBMS/오라클] ora-09925 해결책(파일시스템_풀인_경우)



oracle의 admin/sid/pfile 에 보면 init 파일이 존재하는데 이곳에서 다음의 블록 부분을 확인한다.
사용자 삽입 이미지

그런다음 그 위치로 가서 디렉토리의 용량이 찼는지 확인한 다음, 만약 찼으면 파일들을 지워준다.
사용자 삽입 이미지
그러면 해결될 것이당~~^^)/

DBMS/오라클] EXP-00003: 세그먼트... 에러가 발생하는 경우 해결 방법



증상 :  EXP-00003: 세그먼트... 에러가 발생하는 경우 해결 방법

0. 오라클 클라이언트의 버전을 동일 버전으로 업그레이드 한다.

1. oracle 9.x 버전(클라이언트) 에서 10g 서버의 데이터 익스포트시 :

EXP-00003 : no storage definition found for segment(7,1955)
라는 에러 발생시

dba 권한 사용자가 아래의 명령을 실행하면 해결 된다. export시 참조하는 view를 만드는 쿼리문이다.
SQL> @?/rdbms/admin/catexp


2. ==>(원문 출처 : )  http://link.allblog.net/13777149/http://gampol.tistory.com/entry/9i-EXP-00003
When you use old version of exp to export tables with LOB column from Oracle 9.2.0.5 or higher version, you will get an error "EXP-00003 : no storage definition found for segment .....", actually this is an Oracle bug, you could temporary get it resolved by replace a view "exu9tne", as following:
    Before exporting, run the following SQL under sys:
CREATE OR REPLACE VIEW exu9tne (
tsno, fileno, blockno, length) AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1
UNION ALL
SELECT * FROM SYS.EXU9TNEB
/
    After exporting, run the following to restore the view definition according to Metalink Notes.
CREATE OR REPLACE VIEW exu9tne (
tsno, fileno, blockno, length) AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1

DBMS/오라클] function 생성(사용)시 mutating 에러와 해결책



2002.07.29 15:28:09 (*.109.27.39)
4029
447 / 0

친구 놈이 mutating에러가 난다고 해서 제 나름대로 자료를

찾아서 정리를 해보았습니다. 쓰는 방식이 잘못 되었더군요.

보통 default와 trigger를 구분해서 잘 쓰셔야 하는데

default 는 그 column에 대해 언급이 없을때 그 값이 들어가고

trigger는 무슨 값이 들어 오던지 trigger에 기술된 내용이

들어가는 것입니다.


1. MUTATING ERROR란 무엇인가?

어느 TABLE에 DML(INSERT, UPDATE, DELETE 등)이 실행될 때마다 프로그램에
구애받지 않고 특정 작업을 수행하려할 때 database trigger를 사용한다.
예)EMP table에 data insert, update, delete 시 부서별 평균 급여 table에
updating 하는 경우.

이 경우 trigger를 사용하지 않고 같은 작업을 하려면 평균 급여를 구하는
PL/SQL program을 개발하여 EMP 테이블에 action이 발생 시마다 call하여 사용
하든가, 아니면 각 action 발생 후 동일한 routine을 반복 수행시켜야 한다.

이 때 만일 user가 EMP table에 update 시마다 EMP table에 어떤 처리를 수행
하는 trigger를 만든다면 원치 않는 결과를 일으킬 수 있고 OS memory가 소진
될 때까지 trigger가 trigger를 recursive하게 fire시켜 마치 looping
program과 같은 상황을 초래할 수도 있다.

이러한 trigger를 recursive trigger라 부르며 이런 불상사를 막기 위해
ORACLE은 EMP table에 row trigger를 만들어 원천적으로 trigger 내에서
EMP table을 아예 access 할 수 없도록 하고 있고, 이와 같은 원칙에 위배될
경우 발생되는 error를 mutating error 라고 부른다.

이 경우 user가 trigger를 만든 후 DML(insert, update, delete)을 수행 시
"ORA-4091:table SCOTT.EMP is mutating, trigger/function may not see
it." 와 같은 error를 만나게 된다.


2. ERROR가 발생하는 조건.

TRIGGER에는 다음과 같은 두 종류가 있다.
*row trigger - 프로그램에서 한 row 단위로 처리 시 처리할 때마다
fire되는 trigger.

*statement trigger - 프로그램 당 한번만 fire되는 trigger.

위와 같으므로 만일 application에서 한 row만 처리한다면 두 type에는 차이가
없고 여러 row를 처리할 경우 두 type 간의 차이가 발생한다.

Statement trigger는 일부 제한은 있으나 원칙적으로 mutating error를 발생
시키지 않는다.
Row trigger는 하나의 row 처리 후 해당 table에 대한 계속된 row 처리가 있을
수 있으므로 작업이 완료되기까지 해당 table을 access하는 것이 금지되지만
statement trigger는 일단 하나의 statement가 완료되었다는 보장을 할 수
있으므로 mutating의 기본 속성인 "현재 변화되고 있는 table" 이라는 범위에
들지 않는다.
따라서, mutating error는 row trigger에서의 제한 사항이라 해도 무리가 없다.


3. 해결 방법.

위에서 보았 듯 mutating error를 피해 나가려면 statement trigger를 사용하면
어 려움이 없으나 statement trigger에서는 row trigger에서와 같이 row 단위로
변경 전 후 column data를 handling할 수 없다는 단점이 있다.
즉 :new.column, :old.column을 사용하지 못한다.

이 와 같은 문제로 인하여 row trigger를 사용 시는 temp table 이나 PLSQL
table을 이용하여 피해갈 수가 있다.

다음은 row trigger를 사용 시 mutating error를 유발하는 case(A)와
이를 statement trigger로 전환하여 error를 피해가는 case(B)
에 대한 내용이다.

예) EMP table에 insert, update, delete 시 부서별 평균 급여를 계산하여
DEPT table에 load한다. (TABLE COLUMN은 다음과 같다.)

SQL> desc emp
Name Null? Type
------------------------------- -------- ----
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)


SQL> desc dept
Name Null? Type
------------------------------- -------- ----
DEPTNO NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SAL NUMBER(7,2)



(CASE A) ROW Trigger 만을 사용 시 에러가 발생하는 case.

1) row trigger 생성

create or replace trigger emp_aft_row_trigger
after insert or update or delete on emp
for each row
declare
v_sal emp.sal%type;
begin
select avg(sal) into v_sal from emp
where deptno=:old.deptno;

update emp
set sal=v_sal
where deptno=:old.deptno;

if :old.deptno != :new.deptno then
select avg(sal) into v_sal from emp
where deptno=:new.deptno;

update emp
set sal=v_sal
where deptno=:new.deptno;
end if;
end;
/

2) DATA 1건을 UPDATE한다.

SQL)update emp
set sal=10000
where empno= 7934;
SQL)
update emp
*
ERROR at line 1:
ORA-04091: table JMKIM.EMP is mutating, trigger/function may not
see it
ORA-06512: at line 4
ORA-04088: error during execution of trigger 'JMKIM.EMP_AFT_ROW_TRIGGER'



(CASE B) 에러를 피해 가는 방법

1) PL/SQL table을 생성한다.

SQL) create or replace PACKAGE emp_pkg as
TYPE emp_tab_type is table of EMP.DEPTNO%TYPE
index by binary_integer;
emp_old emp_tab_type;
emp_new emp_tab_type;
emp_index binary_integer;
end emp_pkg;
/

Package created.


2) BEFORE STATEMENT trigger를 생성한다.

SQL)create or replace TRIGGER emp_bef_stm_all
before insert or update or delete on emp
begin
emp_pkg.emp_index :=0;
end;
/
SQL)
Trigger created.


3) AFTER ROW trigger를 생성한다.

SQL>create or replace TRIGGER emp_aft_row_all
after insert or update or delete on emp
for each row
begin
emp_pkg.emp_index := emp_pkg.emp_index + 1;
emp_pkg.emp_old(emp_pkg.emp_index) := :old.deptno;
emp_pkg.emp_new(emp_pkg.emp_index) := :new.deptno;
end;
/
SQL>Trigger created.


4) AFTER STATEMENT trigger를 생성한다.

SQL>create or replace TRIGGER emp_aft_stm_all
after insert or update or delete on emp
declare
v_sal emp.sal%type;
begin
for i in 1 .. emp_pkg.emp_index loop
select avg(sal) into v_sal from emp
where deptno=emp_pkg.emp_old(i);
update dept
set sal = v_sal
where deptno=emp_pkg.emp_old(i);
dbms_output.put_line('DEPTNO(old)=>'||to_char(emp_pkg.emp_old(i)));
if emp_pkg.emp_new(i) != emp_pkg.emp_old(i) then
select avg(sal) into v_sal from emp
where deptno=emp_pkg.emp_new(i);
update dept
set sal = v_sal
where deptno=emp_pkg.emp_new(i);
dbms_output.put_line('DEPTNO(new)=>'||to_char(emp_pkg.emp_new(i)));
end if;
end loop;
emp_pkg.emp_index :=0;
end;
/

SQL>
Package created.


5) data insert 및 확인

SQL> update emp
set sal = 9000
where empno=7902;

SQL>
DEPTNO(old)=>20
1 row updated.

laalaal~

2012-09-16

DBMS/오라클]EXP-00003: 세그먼트 관련 에러


증상 :  EXP-00003: 세그먼트... 에러가 발생하는 경우 해결 방법

0. 오라클 클라이언트의 버전을 동일 버전으로 업그레이드 한다.

1. oracle 9.x 버전(클라이언트) 에서 10g 서버의 데이터 익스포트시 :

EXP-00003 : no storage definition found for segment(7,1955)
라는 에러 발생시

dba 권한 사용자가 아래의 명령을 실행하면 해결 된다. export시 참조하는 view를 만드는 쿼리문이다.
SQL> @?/rdbms/admin/catexp


When you use old version of exp to export tables with LOB column from Oracle 9.2.0.5 or higher version, you will get an error "EXP-00003 : no storage definition found for segment .....", actually this is an Oracle bug, you could temporary get it resolved by replace a view "exu9tne", as following:
    Before exporting, run the following SQL under sys:
CREATE OR REPLACE VIEW exu9tne (
tsno, fileno, blockno, length) AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1
UNION ALL
SELECT * FROM SYS.EXU9TNEB
/
    After exporting, run the following to restore the view definition according to Metalink Notes.
CREATE OR REPLACE VIEW exu9tne (
tsno, fileno, blockno, length) AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1


DBMS/오라클]ora-09925 해결책(파일시스템 풀인 경우)


oracle의 admin/sid/pfile 에 보면 init 파일이 존재하는데 이곳에서 다음의 블록 부분을 확인한다.
사용자 삽입 이미지

그런다음 그 위치로 가서 디렉토리의 용량이 찼는지 확인한 다음, 만약 찼으면 파일들을 지워준다.
사용자 삽입 이미지
그러면 해결될 것이당~~^^)/

DBMS/오라클]trigger/function 생성(사용)시 mutating 에러와 해결책


2002.07.29 15:28:09 (*.109.27.39)
4029
447 / 0

친구 놈이 mutating에러가 난다고 해서 제 나름대로 자료를

찾아서 정리를 해보았습니다. 쓰는 방식이 잘못 되었더군요.

보통 default와 trigger를 구분해서 잘 쓰셔야 하는데

default 는 그 column에 대해 언급이 없을때 그 값이 들어가고

trigger는 무슨 값이 들어 오던지 trigger에 기술된 내용이

들어가는 것입니다.


1. MUTATING ERROR란 무엇인가?

어느 TABLE에 DML(INSERT, UPDATE, DELETE 등)이 실행될 때마다 프로그램에
구애받지 않고 특정 작업을 수행하려할 때 database trigger를 사용한다.
예)EMP table에 data insert, update, delete 시 부서별 평균 급여 table에
updating 하는 경우.

이 경우 trigger를 사용하지 않고 같은 작업을 하려면 평균 급여를 구하는
PL/SQL program을 개발하여 EMP 테이블에 action이 발생 시마다 call하여 사용
하든가, 아니면 각 action 발생 후 동일한 routine을 반복 수행시켜야 한다.

이 때 만일 user가 EMP table에 update 시마다 EMP table에 어떤 처리를 수행
하는 trigger를 만든다면 원치 않는 결과를 일으킬 수 있고 OS memory가 소진
될 때까지 trigger가 trigger를 recursive하게 fire시켜 마치 looping
program과 같은 상황을 초래할 수도 있다.

이러한 trigger를 recursive trigger라 부르며 이런 불상사를 막기 위해
ORACLE은 EMP table에 row trigger를 만들어 원천적으로 trigger 내에서
EMP table을 아예 access 할 수 없도록 하고 있고, 이와 같은 원칙에 위배될
경우 발생되는 error를 mutating error 라고 부른다.

이 경우 user가 trigger를 만든 후 DML(insert, update, delete)을 수행 시
"ORA-4091:table SCOTT.EMP is mutating, trigger/function may not see
it." 와 같은 error를 만나게 된다.


2. ERROR가 발생하는 조건.

TRIGGER에는 다음과 같은 두 종류가 있다.
*row trigger - 프로그램에서 한 row 단위로 처리 시 처리할 때마다
fire되는 trigger.

*statement trigger - 프로그램 당 한번만 fire되는 trigger.

위와 같으므로 만일 application에서 한 row만 처리한다면 두 type에는 차이가
없고 여러 row를 처리할 경우 두 type 간의 차이가 발생한다.

Statement trigger는 일부 제한은 있으나 원칙적으로 mutating error를 발생
시키지 않는다.
Row trigger는 하나의 row 처리 후 해당 table에 대한 계속된 row 처리가 있을
수 있으므로 작업이 완료되기까지 해당 table을 access하는 것이 금지되지만
statement trigger는 일단 하나의 statement가 완료되었다는 보장을 할 수
있으므로 mutating의 기본 속성인 "현재 변화되고 있는 table" 이라는 범위에
들지 않는다.
따라서, mutating error는 row trigger에서의 제한 사항이라 해도 무리가 없다.


3. 해결 방법.

위에서 보았 듯 mutating error를 피해 나가려면 statement trigger를 사용하면
어 려움이 없으나 statement trigger에서는 row trigger에서와 같이 row 단위로
변경 전 후 column data를 handling할 수 없다는 단점이 있다.
즉 :new.column, :old.column을 사용하지 못한다.

이 와 같은 문제로 인하여 row trigger를 사용 시는 temp table 이나 PLSQL
table을 이용하여 피해갈 수가 있다.

다음은 row trigger를 사용 시 mutating error를 유발하는 case(A)와
이를 statement trigger로 전환하여 error를 피해가는 case(B)
에 대한 내용이다.

예) EMP table에 insert, update, delete 시 부서별 평균 급여를 계산하여
DEPT table에 load한다. (TABLE COLUMN은 다음과 같다.)

SQL> desc emp
Name Null? Type
------------------------------- -------- ----
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)


SQL> desc dept
Name Null? Type
------------------------------- -------- ----
DEPTNO NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SAL NUMBER(7,2)



(CASE A) ROW Trigger 만을 사용 시 에러가 발생하는 case.

1) row trigger 생성

create or replace trigger emp_aft_row_trigger
after insert or update or delete on emp
for each row
declare
v_sal emp.sal%type;
begin
select avg(sal) into v_sal from emp
where deptno=:old.deptno;

update emp
set sal=v_sal
where deptno=:old.deptno;

if :old.deptno != :new.deptno then
select avg(sal) into v_sal from emp
where deptno=:new.deptno;

update emp
set sal=v_sal
where deptno=:new.deptno;
end if;
end;
/

2) DATA 1건을 UPDATE한다.

SQL)update emp
set sal=10000
where empno= 7934;
SQL)
update emp
*
ERROR at line 1:
ORA-04091: table JMKIM.EMP is mutating, trigger/function may not
see it
ORA-06512: at line 4
ORA-04088: error during execution of trigger 'JMKIM.EMP_AFT_ROW_TRIGGER'



(CASE B) 에러를 피해 가는 방법

1) PL/SQL table을 생성한다.

SQL) create or replace PACKAGE emp_pkg as
TYPE emp_tab_type is table of EMP.DEPTNO%TYPE
index by binary_integer;
emp_old emp_tab_type;
emp_new emp_tab_type;
emp_index binary_integer;
end emp_pkg;
/

Package created.


2) BEFORE STATEMENT trigger를 생성한다.

SQL)create or replace TRIGGER emp_bef_stm_all
before insert or update or delete on emp
begin
emp_pkg.emp_index :=0;
end;
/
SQL)
Trigger created.


3) AFTER ROW trigger를 생성한다.

SQL>create or replace TRIGGER emp_aft_row_all
after insert or update or delete on emp
for each row
begin
emp_pkg.emp_index := emp_pkg.emp_index + 1;
emp_pkg.emp_old(emp_pkg.emp_index) := :old.deptno;
emp_pkg.emp_new(emp_pkg.emp_index) := :new.deptno;
end;
/
SQL>Trigger created.


4) AFTER STATEMENT trigger를 생성한다.

SQL>create or replace TRIGGER emp_aft_stm_all
after insert or update or delete on emp
declare
v_sal emp.sal%type;
begin
for i in 1 .. emp_pkg.emp_index loop
select avg(sal) into v_sal from emp
where deptno=emp_pkg.emp_old(i);
update dept
set sal = v_sal
where deptno=emp_pkg.emp_old(i);
dbms_output.put_line('DEPTNO(old)=>'||to_char(emp_pkg.emp_old(i)));
if emp_pkg.emp_new(i) != emp_pkg.emp_old(i) then
select avg(sal) into v_sal from emp
where deptno=emp_pkg.emp_new(i);
update dept
set sal = v_sal
where deptno=emp_pkg.emp_new(i);
dbms_output.put_line('DEPTNO(new)=>'||to_char(emp_pkg.emp_new(i)));
end if;
end loop;
emp_pkg.emp_index :=0;
end;
/

SQL>
Package created.


5) data insert 및 확인

SQL> update emp
set sal = 9000
where empno=7902;

SQL>
DEPTNO(old)=>20
1 row updated.

laalaal~

2012-09-12

FreeBSD]설치후 컴파일시 제일 많이 많이 나는 에러 대처 by 조성준


안녕 하세요? 조성준입니다


FreeBSD 설치시 Securty 부분을 설정 하고 나서 또는 /stane/ 안에 있는 설정 파일로 보안 부분 셋팅 후 커널 컴파일시


chflags: /kernel: Operation not permitted
*** Error code 1 (ignored)
mv /kernel /kernel.old
mv: rename /kernel to /kernel.old: Operation not permitted
*** Error code 1


위와 같은 에러가 납니다

그럼 다음과 같이 하시면 됩니다


vi /etc/rc.conf


kern_securelevel="1"
kern_securelevel_enable="YES"


로 되어 있는 부분을


kern_securelevel="2"
kern_securelevel_enable="NO"


로 바꾸신후 다시 하시면 됩니다

바꾸어도 않되면 위처럼 고치시고 Reboot 하세요

2012-09-09

FreeBSD] FreeBSD에서 HDD fail일때 에러메시지에 대해



제 목 : FreeBSD에서 HDD fail일 때 에러메시지에 대해
글쓴이 : 좋은진호(truefeel, http://coffeenix.net/ )
글쓴날 : 2004.09.30(목)


다음은 dmesg 명령을 했을 때 결과이다.
 

spec_getpages:(#da/0x20005) I/O read failure: (error=6) bp 0xde8b9244 vp 0xf980a900
        size: 7168, resid: 7168, a_count: 7060, valid: 0x0
        nread: 0, reqpage: 0, pindex: 0, pcount: 2

spec_getpages:(#da/0x20005) I/O read failure: (error=6) bp 0xde8b9244 vp 0xf980a900
        size: 7168, resid: 7168, a_count: 7060, valid: 0x0
        nread: 0, reqpage: 0, pindex: 0, pcount: 2

 

1) 위의 에러 메시지 중에 #da/0x20005 는 device명으로 /dev 디렉토리에서 major, minor number를 보고 어떤 HDD가 fail인지 알 수 있다.

  ls -l /dev/da* 로 확인해보면 /dev/da0s1f 파티션에서 난 에러임을 알 수 있다.


 crw-r----- 2 root operator  13, 0x00020002 6 30 22:13 /dev/da0s1
 crw-r----- 2 root operator  13, 0x00020000 6 30 22:13 /dev/da0s1a
 crw-r----- 2 root operator  13, 0x00020001 6 30 22:13 /dev/da0s1b
 crw-r----- 2 root operator  13, 0x00020002 6 30 22:13 /dev/da0s1c
 crw-r----- 2 root operator  13, 0x00020003 6 30 22:13 /dev/da0s1d
 crw-r----- 2 root operator  13, 0x00020004 6 30 22:13 /dev/da0s1e
 crw-r----- 2 root operator  13, 0x00020005 6 30 22:13 /dev/da0s1f
 ... 생략 ...

 

2) error=6는 에러 번호로 /usr/src/sys/sys/error.h 에 정의되어 있다.
  자주 나오는 에러 코드는 5, 6, 22 정도

#define EIO       5        /* Input/output error */
#define ENXIO      6        /* Device not configured */
#define EINVAL     22       /* Invalid argument */


참고로 /usr/src/sys/miscfs/specfs/spec_vnops.c 파일을 보라.
         

2012-08-23

Java] Syntax error on token "enum", invalid Expression

참조 URL ::: http://sunkyu.tistory.com/71690


enum 이라는 변수를 자바에서 선언을 하면 아래와 같은 에러가 뜨는 경우가 있다.
   -- Syntax error on token "enum", invalid Expression

이는 JDK 1.5 이상을 쓰면 생기는 에러.

enum이라는 변수명 자체가 JDK 1.5이상부터는 예약어로 등록이 되어 있어 생기는 문제.

따라서, 이를 해결하려면 enum을 다른 변수명을 사용하면 해결이 된다.