반응형

1. UTL_HTTP 사용하는 프로시저를 컴파일을 하였지만 다음과 같은 에러가 발생하였다.

ORA-06550: line 3, column 6:
PLS-00201: identifier 'SYS.UTL_HTTP' must be declared
ORA-06550: line 3, column 6:

 

2. 원인을 찾던 중 utl_http 가 정의(?)가 되지 않았음을 알 수 있었다. 알 수 있었던 방법은 단순하였다.

https://community.oracle.com/tech/developers/discussion/469405/problem-calling-utl-http-in-oracle-xe

$ sqlplus "/as sysdba"

SQL> desc utl_http

utl_http의 정보들이 출력이 될 것이다.

SQL> conn system/123456

SQL> desc utl_http

ERROR:
ORA-04043: object "SYS"."UTL_HTTP" does not exist

SQL> select * from dba_tab_privs where table_name = 'UTL_HTTP';

GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
SCOTT SYS UTL_HTTP SYS EXECUTE NO NO

 

3. object 권한을 주면 해결이 된다.

https://stackoverflow.com/questions/27379194/grant-utl-http-permission-in-plsql

$ sqlplus "/as sysdba"

SQL> grant execute on UTL_HTTP to system;

SQL> conn system/123456

SQL> desc UTL_HTTP

 

SQL> select * from dba_tab_privs where table_name = 'UTL_HTTP';

GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
SCOTT SYS UTL_HTTP SYS EXECUTE NO NO
SYSTEM SYS UTL_HTTP SYS EXECUTE NO NO

 

4. 컴파일할 때 발생되었던 에러는 사라졌으나, 막상 프로시저를 실행시켰더니 다음과 같은 에러가 발생하였다.

ERROR at line 1:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1577
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at line 1

 

5. 여기에도 ACL권한을 부여해야 한다는 것이다. 등록되어있지 않다면 등록을 해줘야한다.

SQL> select * from dba_network_acl_privileges;

ACL ACLID PRINCIPAL PRIVILEGE IS_GRANT INVERT START_DATE END_DATE

SQL> select * from dba_network_acls;

HOST LOWER_PORT UPPER_PORT ACL ACLID

등록(생성)은 이렇게 하자

begin
    dbms_network_acl_admin.create_acl(
        acl=>'test.xml',
        description=>'test', -> description 빼도 될것같아서 기입을 안했더니 에러 발생
        principal=>'SYSTEM',
        is_grant=>true,
        privilege=>'connect',
        start_date=>'sysdate);

    dbms_network_acl_admin.add_privilege(

        acl=>'test.xml',
        description=>'test',
        principal=>'SYSTEM',
        is_grant=>true,
        privilege=>'resolve');

    dbms_network_acl_admin.assign_acl(
        acl=>'test.xml',
        host=>'api.goodgods.com');

    commit;
end;
/

삭제가 필요하다면

begin
    dbms_network_acl_admin.drop_acl(
        acl=>'test.xml');
end;
/

SQL> select * from dba_network_acl_privileges;

ACL ACLID PRINCIPAL PRIVILEGE IS_GRANT INVERT START_DATE END_DATE
/sys/acls/test.xml EFFEFASDf234DFADf SYSTEM connect true false 2022/06/21  
/sys/acls/test.xml EFFEFASDf234DFADf SYSTEM resolve true false 2022/06/21  

SQL> select * from dba_network_acls;

HOST LOWER_PORT UPPER_PORT ACL ACLID
api.goodgods.com     /sys/acls/test.xml EFFEFASDf234DFADf

* 참고로 12c 부터 아래 object로 변경되었다.

dba_network_acl_privileges => DBA_HOST_ACES

dba_network_acls => DBA_HOST_ACLS

 

6. 프로시저가 제대로 작동하는 것을 알 수 있을 것이다.

이것은 11g부터 적용된 사항이라 하며, 10g 이하 버전은 해당사항이 없다고 한다.

다만 UTL_HTTP 권한 정도는 확인을 하자.(본 글 "3. object 권한을 주면 해결이 된다." 참고)

 

 

7. 참고 URL(더 상세하게 나와있으니 참고하자)

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nkyle9361&logNo=220676267478

 

UTL_HTTP를 이용한 HTTP 통신

UTL_HTTP를 이용한 HTTP 통신 출처 : ransu.tistory.com/26 1. GET 방식 SELECT UT...

blog.naver.com

https://blog.naver.com/PostView.naver?blogId=nkyle9361&logNo=221989499061&parentCategoryNo=&categoryNo=1&viewDate=&isShowPopularPosts=false&from=postView 

 

utl_http 를 사용하기 위한 ACL 권한설정

오라클 HTTP 통신을 하기 위한 ACL 목록등록 1. ACL 생성 ( DBA 계정으로 ) DECLARE ...

blog.naver.com

 

반응형
반응형

DML문을 실행하려고 했는데 ORA-01950 에러가 발생한다면 해당 테이블스페이스에 insert 할수 있는 권한이 없다는 것이다.

권한을 아래와 같이 부여해 줄 수 있다.

alter user scott quota unlimited on users;

또는


alter user scott quota 1m on users;

 

권한을 확인 하는 방법은 

select * from dba_ts_quotas;

조회하였을때 해당 테이블스페이스의 계정이 등록되어 있으면 권한을 부여받은 것이다.

여기서 max_bytes 가 -1 이면 unlimited 로 부여 받은 것이고, 값이 존재하면 그 byte만큼 저장이 가능하게 부여받은 것이다.

반응형
반응형

오라클에서 제공하는 SQL developer 에서 system 또는 sys 계정에 접속하고자 할 때, 정확한 비밀번호를 입력했음에도 불구하고 접속이 안되는 경우가 있다. 

ORA-01017 에러가 나고 있다.

 

분명 sqlplus에서는 system 계정으로 매우 접속이 잘된다.

SQL> sqlplus /nolog

SQL> conn system/oracle as sysdba

 

왜 이런지 원인은 알 수가 없다. 문제점을 알려주는 곳을 도저히 찾을수가 없었다.

해결방안은 그냥 패스워드를 다시 만들어주면 해결된다. 너무 간단했다. ㅠㅠ

SQL> alter user system identified by "oracle";

 

접속 상태가 성공인 것을 볼 수 있다.

 

참고로 원인을 찾아보던 중 19c 경우 기본암호가 "manager"에서  "no authentication" 로 변경되었다고 하는데,

필자는 초기 기본암호가 "oracle" 이였으며 no authentication 에 대해서는 이해가 되지 않는다. ㅠㅠ

즉, 아래 링크에 대한 글이 이해가 되지 않는다. 누군가 알려주었으면 좋겠다.

https://support.oracle.com/knowledge/Oracle%20Database%20Products/2620296_1.html

 

Default Password For System User("manager") Has Changed In Oracle 19c

Default Password For System User("manager") Has Changed In Oracle 19c (Doc ID 2620296.1) Last updated on JULY 02, 2021 Applies to: Oracle Database - Standard Edition - Version 19.3.0.0.0 and later Oracle Database - Enterprise Edition - Version 19.3.0.0.0 a

support.oracle.com

 

반응형
반응형

IMP-00032: SQL statement exceeded buffer length

IMP-00008: unrecognized statement in the export file


buffer size를 늘려주어라.

반응형
반응형

PK 제거 후 삭제 해야 함.


ALTER TABLE table_name DROP PRIMARY KEY;

반응형
반응형
오라클 접속 할 때 갑자기 아래와 같이 에러가 뜨면서 접속이 되질 않았다.

ORA-00257: archiver error. Connect internal only, until freed.

archive 가 쌓이는 곳을 확인해보니, 100%를 치고 있었다. 헐...
운영중 디비라서 더욱 다급한 상황..
일단 archive 파일 전체를 삭제하였다. 빨리 FULL 백업을 해야겠다.

접속은 잘 된다. 백업 정책을 만들어야지...
반응형
반응형

SQL*Plus: Release 10.2.0.4.0 - Production on Tue Sep 27 08:40:00 2011

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

SQL> ERROR:

ORA-09817: Write to audit file failed.

HPUX-ia64 Error: 28: No space left on device

ORA-01075: you are currently logged on


bdump, udump, adump, cdump 의 용량이 초과 되어서 발생되는 문제이다.

bdf를 쳐보니 위 로그 파일들이 저장되는 곳이 100% 를 치고 있었다.
일단 해당파일들을 삭제하지 않고 다른 곳으로 옮겨 놓았다. 

반응형
반응형
SQL> alter tablespace temp add tempfile '/media/sda1/PROD/Disk3/temp02.dbf' size 32G;
alter tablespace temp add tempfile '/media/sda1/PROD/Disk3/temp02.dbf' size 32G
*
ERROR at line 1:
ORA-01144: File size (4194304 blocks) exceeds maximum of 4194303 blocks

데이터파일은 32기가를 넘을수가 없어서 위와 같은 에러메세지를 보여준다.
반응형

'Oracle > Oracle Error' 카테고리의 다른 글

ORA-00257  (0) 2011.09.27
ORA-09817, ORA-01075  (0) 2011.09.27
temporary tablespace Warning  (0) 2011.03.10
ORA-00059: maximum number of DB_FILES exceeded  (0) 2011.02.21
ORA-03113 : end-of-file on communication channel  (0) 2010.11.03
반응형
temporary tablespace는 데이터베이스를 open 하는데 크게 영향을 받지 않는다.
그러나 temporary tablespace가 없다면 alert file에는 아래와 같은 메세지를 뿌려주게 되어있다.

데이터베이스 startup 하였을시...

*********************************************************************
WARNING: The following temporary tablespaces contain no files.
         This condition can occur when a backup controlfile has
         been restored.  It may be necessary to add files to these
         tablespaces.  That can be done using the SQL statement:

         ALTER TABLESPACE <tablespace_name> ADD TEMPFILE

         Alternatively, if these temporary tablespaces are no longer
         needed, then they can be dropped.
           Empty temporary tablespace: TEMP
*********************************************************************

반응형
반응형
데이터파일 생성시 ORA-00059에 대한 오류가 나올 경우가 있다.
데이터베이스의 데이터파일 개수를 제한하였기 때문에 나오는 에러이다.

show parameter db_files

SQL> show parameter db_files

NAME                TYPE       VALUE
---------------- --------- -----------
db_files               integer     200
SQL>

데이터 파일의 limit 개수가 나온다.

이 값을 올려주면 된다. 
참고로 최대 65334 까지 올려줄수 있다.(10g 기준)

alter system set db_files = 10000 scope=spfile;

shutdown immediate;
startup;

반응형
반응형
몇 일전 DB가 startup이 안된다고 해서 원인을 찾아보았습니다.

아래와 같은 에러가 발생하더군요.
ORA-03113 : end-of-file on communication channel

음..모지?

이 에러는 여러가지의 경우의 수가 있죠..ㅋ

startup을 할때 pfile로 nomount까지 시도해보았지만 역시나 마찬가지 였습니다.

원인은 alert_file 사이즈 초과 문제였습니다.

alert_file을 백업해두고 startup을 하니 되더군요.

간단하게 문제를 해결하였습니다.

그러나 mount 상태까지만 디비가 올라오더군요.

[oracle@feeds bdump]$ sqlplus "/as sysdba"

SQL*Plus: Release 9.2.0.1.0 - Production on Tue Oct 26 14:06:11 2010

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  235999352 bytes
Fixed Size                   450680 bytes
Variable Size             201326592 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01110: data file 12: '/data1/oradata1/aaa.dbf'
             --누군가가 필요없는 데이터 파일이라고 그냥 파일만 지웠다더군요.ㅎ

SQL> select status from v$instance;

STATUS
------------
MOUNTED


SQL> alter database datafile 12 offline;
alter database datafile 12 offline
*
ERROR at line 1:
ORA-01145: offline immediate disallowed unless media recovery enabled


SQL>
SQL> alter database datafile 12 offline drop;

Database altered.

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 14 - see DBWR trace file
ORA-01110: data file 14: '/data1/oradata1/TS_LOG.dbf'


SQL> alter database datafile 14 offline drop;

Database altered.

SQL> alter database open;

반응형

'Oracle > Oracle Error' 카테고리의 다른 글

temporary tablespace Warning  (0) 2011.03.10
ORA-00059: maximum number of DB_FILES exceeded  (0) 2011.02.21
function 부분 클릭 시 다운현상  (0) 2010.07.02
[kkocxj : pjpCtx]  (0) 2010.04.12
ORA-14400  (0) 2010.04.01
반응형
상황 :
Orange for oracle 의 Schema Brower에 function 을 클릭하여 
function 내용을 보려고 하였지만 매번 다운 현상이 일어났습니다.
가끔 되다가 몇 번 더 클릭을 하면 또 다시 다운 되버리는군요.ㅠㅠ
왜 function만 클릭하면 다운 되는 건지...짜증이 마구마구 쏟구쳤습니다.ㅋㅋ

원인 찾기 :
데이터베이스의 아무런 에러가 없었으며, 시스템, 네트워크 모두 정상적이였습니다.
아무런 에러가 없으니 답답한 마음으로 정말 많은 걸 뒤져보게 되었네요ㅡㅡ;
sqlplus 에서는 아무 이상없이 확인이 가능했습니다.
Orange 버그 라고 생각되어져서 Toad 및 Sqlgate 등 설치를 해보고 테스트를 해보았지만
역시 function 부분에서 다운이 되었습니다. 여기서부터  DB 문제라고 판단되어졌습니다.

원인 발견 :
DBA_SOURCE, USER_SOURCE 을 확인 해 본 결과 한 컬럼의 길이에 대한 문제를 지적해 보았습니다.
text 컬럼을 length로 확인 해 보니 50정도의 길이가 나와야하는데 1000정도의 길이가 나오고 있었습니다.
확인 결과 50문자 뒤에는 공백이 무수히 많더군요.
예전 시스템 이전 작업 때 만들어 놓은 스크립트가 공백을 모두 포함하고 있어서 
그 공백들이 모두 들어가 버린 것입니다.

해결 :
스크립트의 공백을 제거하고 function을 재생성하였습니다.
아무런 문제 없이 잘 되네요.^^(완죤 기쁘네요..ㅋㅋㅋㅋ)

주의 사항 : 
스크립트를 만들어 주기 위해서 아래와 같은 쿼리문을 실행시켰습니다.
아주 편하게 function에 대한 스크립트가 줄줄이 나오더군요.
select dbms_metadata.get_ddl('FUNCTION', 'function_name') FROM dual;

그래서 이 스크립트를 그대로 돌려버렸습니다. 생성도 아주 잘 되었고요. 허나 지금 발견된 문제가 이 쿼리문 때문이였습니다.
공백을 다 포함한 함수 스크립트가 되어 버린겁니다. 공백을 제거해 주고 생성을 했어야 하는데 그렇지 못한거죠!!
터무니없이 긴 결과값들을 불러오려다가 다운되는 현상이 생긴게 아닐지 짐작을 해봅니다.
반응형

'Oracle > Oracle Error' 카테고리의 다른 글

ORA-00059: maximum number of DB_FILES exceeded  (0) 2011.02.21
ORA-03113 : end-of-file on communication channel  (0) 2010.11.03
[kkocxj : pjpCtx]  (0) 2010.04.12
ORA-14400  (0) 2010.04.01
ora-27476, ora-06512  (0) 2010.01.26
반응형
잘 되던 쿼리문에 몇가지를 추가해주었는데 아래와 같은 에러가 났습니다.

ORA-00600: 내부 오류 코드, 인수 : [kkocxj : pjpCtx], [], [], [], [], [], [], []

쿼리문의 문법 등 전부 확인 하였지만, 이상이 없습니다.

오라클 버그라고 하여 아래와 같이 해결을 보았습니다.

alter session set "_optimizer_push_pred_cost_based" = false; 
(or) alter system set "_optimizer_push_pred_cost_based" = false; 

쿼리문을 다시 실행 시켰습니다.

이상없이 잘 되네요.
반응형

'Oracle > Oracle Error' 카테고리의 다른 글

ORA-03113 : end-of-file on communication channel  (0) 2010.11.03
function 부분 클릭 시 다운현상  (0) 2010.07.02
ORA-14400  (0) 2010.04.01
ora-27476, ora-06512  (0) 2010.01.26
Linux Oracle9i Ora-01031:insufficient privileges  (0) 2008.11.19
반응형
아침에 출근하여 보니 아래와 같은 에러가 났습니다.
ORA-14400: inserted partition key does not map to any partition

엥..이건 분명 데이터가 들어갈 만한 파티션이 없다는 얘기...

즉, 그 데이터에 맞는 파티션이 생성이 안되었다는 건데...음..

기간(Range Partition) 단위로 되어있어서 분명히 월이 넘어간 데이터 때문에 insert가 안된것으로 판단됩니다.
확인해 보았습니다.
select * from dba_tab_partitions where table_name = 'temp_table';

해당 파티션을 생성한 후 이상없이 잘 돌아갔습니다.
반응형
반응형
어제 회의가 끝나고 회식자리를 가기 위해서 제자리로 돌아와 컴퓨터를 보니 메신저로 아는 분께서 GATHER_STATS_JOB을 disable시킬려고 하는데 에러가 났다고 좀 봐달라고 하였습니다.
회식자리를 가야하는 급한마음에 얼렁뚱땅 에러만 보고 잘모르겠다고 하였습니다.
그러나 회식자리에서 계속 그 에러 생각이 떠나질 않았습니다. 많이 궁금하더라구요. 무슨 에러일까..
모지모지~ㅎㅎㅎ(모..중간에는 잊어버렸지만요..ㅋㅋ)

회식 자리 가기 전에 메모장에 에러메시지를 저장을 해놓고 나간터라 오늘 출근하여 그 메세지를 다시 한번 보았습니다. 깜짝 놀랐습니다.

에러메세지는 아래와 같았습니다.
SQL> exec dbms_scheduler.disable('GATHER_STATS_JOB');
BEGIN dbms_scheduler.disable('GATHER_STATS_JOB'); END;

*
1행에 오류:
ORA-27476: "SYSTEM.GATHER_STATS_JOB"이(가) 존재하지 않음
ORA-06512: "SYS.DBMS_ISCHED", 줄 2763에서
ORA-06512: "SYS.DBMS_SCHEDULER", 줄 1753에서
ORA-06512: 줄 1에서

존재 하지 않음(?)...gather_stats_job이 존재하지 않는다는거지요?
컥 이런 간단한 문제를...ㅠㅠ

그러나 보내준 내용을 보면 gather_stats_job이 있다고 하네요.
SQL> select state from dba_scheduler_jobs
  2  where job_name = 'GATHER_STATS_JOB';

STATE
------------------------------
SCHEDULED

응? 이건 또 무슨 문제일까라고 생각을 해보니~
혹시...설마...라는 의구심으로 system 계정에 들어가서 테스트를 해본 결과..
역시나 같은 에러가 떨어지더라구요..

원인은 계정문제였습니다. sys계정이 아닌 system 계정으로 접속을 하여 disable을 시킬려고 한것입니다. 제 테스트 디비에 있는 걸로 보니 그렇더군요..ㅋㅋ

SQL> select owner, job_name, state from dba_scheduler_jobs
2  where job_name = 'GATHER_STATS_JOB';

OWNER                          JOB_NAME                       STATE
------------------------ ------------------------- ---------------
SYS                                GATHER_STATS_JOB        SCHEDULED


이 말을 꼭 전해드리고 싶지만, 이미 지나간 시간이고..너무 간단한 문제였던 터라 
벌써 해결했으리라 생각을 해봅니다. 그리고 정말 죄송합니다.ㅠㅠ
반응형

'Oracle > Oracle Error' 카테고리의 다른 글

[kkocxj : pjpCtx]  (0) 2010.04.12
ORA-14400  (0) 2010.04.01
Linux Oracle9i Ora-01031:insufficient privileges  (0) 2008.11.19
Ora-32004, Ora-19905:10g Archive mode 설정 후 Error  (0) 2008.10.02
ORA-01653  (0) 2006.10.20
반응형

oralce@admin] sqlplus "/as sysdba"

 

SQL*Plus: Release 10.2.0.1.0 - Production on 목 11월 20 14:30:34 2008

 

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

 

ERROR:

ORA-01031: insufficient privileges

 

사용자명 입력:

ERROR:

ORA-01017: 사용자명/암호가 부적합, 로그온할 수 없습니다

 

사용자명 입력:

ERROR:

ORA-01017: 사용자명/암호가 부적합, 로그온할 수 없습니다

 

SP2-0157: 3회 시도후 ORACLE에 CONNECT 하지못하고 SQL*Plus을 종료했습니다.

 

oracle@admin]

db에 접속을 할 수가 없네요ㅠㅠ

 

oracle@admin]vi %ORACLE_HOME%/network/admin/sqlnet.ora

확인해서 다음과 같이 설정합니다.

 

# SQLNET.AUTHENTICATION_SERVICES = (NTS)

                             /* 윈도우에서는 괜찮지만 리눅스에서는 주석처리를 해줘야합니다. */

NAMES.DIRECTORY PATH=(TNSNAMES, ONAMES, HOSTNAME)

 

설정 후 다시 접속해보세요!!

oracle@admin] sqlplus "/as sysdba"

 

SQL*Plus: Release 9.2.0.4.0 - Production on Web Nov 19 17:20:26 2008

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

Connected to an idle instance.

 

SQL>

반응형

'Oracle > Oracle Error' 카테고리의 다른 글

ORA-14400  (0) 2010.04.01
ora-27476, ora-06512  (0) 2010.01.26
Ora-32004, Ora-19905:10g Archive mode 설정 후 Error  (0) 2008.10.02
ORA-01653  (0) 2006.10.20
ORA-01653  (0) 2006.10.02
반응형

10g 에서 archive mode 설정을 9i와 똑같이 하였다가 다음과 같은 에러를 발생시켰습니다.

 

제가 archive mode 설정에서 수정한 부분들..


SQL> alter system set log_archive_format='arc%T%TS%S.ARC' scope=spfile;
SQL> alter system set log_archive_start=true scope=spfile; 

 

SQL> shutdown immediate;

데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORA-19905: log_archive_format must contain %s, %t and %r

SQL>

10g에서는 log_archive_start는 사용되지 않고,

파일 format(log_archive_format) 지정은 %t,%r,%s 이 세개가 반드시 들어가야 합니다.

 

해결 방안..(알고 보면 굉장히 간단한거였는데..너무 헤매고 돌아댕겼습니다.ㅋㅋ)

 

pfile로 startup을 합시다.(spfile만 수정했기 때문에 기존 pfile은 똑같겠죠.)

SQL> startup pfile = 'C:\oracle\app\oracle\product\10.2.0\server\database\initXE.ora'

ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  285212672 bytes
Fixed Size                  1287016 bytes
Variable Size              92277912 bytes
Database Buffers          188743680 bytes
Redo Buffers                2904064 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

SQL> create spfile from pfile;

위와 같이 하신다면 정상적으로 spfile로 구동이 가능할 것입니다.

shutdown 후 startup 하시면 확인 가능하겠죠^^

 

cf. 혹시 pfile도 같이 수정이 되었다면 pfile을 수정 해 보지요.

     pfile을 text 파일 편집기로 열어봅니다.

     pfile의 내용 중

     #log_archive_start -- 이 부분을 주석처리 합니다.
     log_archive_format='arc%T%S%R.ARC' -- format을 %t,%s,%r이 들어가도록 수정합니다.

     pfile로 startup 한 후  pfile을 spfile로 복사하시면 되겠죠.

반응형

'Oracle > Oracle Error' 카테고리의 다른 글

ORA-14400  (0) 2010.04.01
ora-27476, ora-06512  (0) 2010.01.26
Linux Oracle9i Ora-01031:insufficient privileges  (0) 2008.11.19
ORA-01653  (0) 2006.10.20
ORA-01653  (0) 2006.10.02
반응형

사용자의 데이터가 저장되어 있는 테이블에 입력, 수정, 삭제작업을 수행하다 보면 자주 발생하는 에러현상이 있습니다. 이 현상은 테이블이 저장되어 있는 테이블스페이스의 공간이 부족한 경우에 주로 발생합니다.

 

• ORA-01653 에러코드가 발생하는 경우
• 테이블스페이스를 생성 또는 변경하거나 크기를 관리해야 경우


 

<ORA-01653 상황 만들기>

 

 1) 테스트를 위해 TEST 테이블스페이스를 생성하십시오. 
[C:\] sqlplus "/as sysdba" 
SQL> startup force 
SQL> create tablespace test 
datafile 'c:\oracle\oradata\ora92\test_01.dbf' size 3M; 
 
SQL> select tablespace_name, bytes, file_name from dba_data_files;


 2) TEST 테이블을 TEST 테이블스페이스에 생성하십시오. 
[C:\] sqlplus "/as sysdba" 
SQL> create table test(name char(30)) 
tablespace test 
storage(initial 2M);


 3) TEST 테이블이 생성되었으면 연속적으로 행들을 입력하여 익스텐트 확장 시 에러가 발생하도록 하십시오. 
SQL> declare
        x  number(2);
      begin
        for x in 1 .. 10000   loop
          insert into  test values('111111111111111111111111111111');
        end loop;
      end;
      /
SQL>  /
SQL>  /
SQL>  /         ← 익스텐트 에러가 발생할 때 까지 반복적으로 실행하십시오.
SQL>  /
declare
*
1행에 오류:
ORA-01653: SYS.TEST 테이블을 128(으)로 TEST 테이블스페이스에서 확장할 수
없습니다
ORA-06512: 줄 5에서


 

<ORA-01653 해결 방법>

 

4) 테이블스페이스의 크기가 부족하여 발생하는 에러를 해결하기 위해서는 해당 테이블스페이스에 새로운 데이터 파일을 추가하는 방법입니다. 
SQL> alter tablespace test
      add datafile 'c:\oracle\oradata\ora92\test_02.dbf' size 3M;

SQL> declare
        x  number(2);
      begin
        for x in 1 .. 10000   loop
          insert into  test values('111111111111111111111111111111');
        end loop;
      end;
      /
SQL>  select tablespace_name, bytes, file_name from dba_data_files;

SQL>  host  dir  c:\oracle\oradata\ora92  
→    "test_02.dbf" 파일의 존재여부와 파일 크기를 확인하십시오.

      test_01.dbf
      test_02.dbf
 
 5) 테이블스페이스의 크기를 늘리는 두 번째 방법은 기존의 데이터 파일을 RESIZE절로 늘리는 방법입니다. 
SQL> alter database 
     datafile 'c:\oracle\oradata\ora92\test_02.dbf'  resize 5M;

SQL> select tablespace_name, bytes, file_name from dba_data_files;
SQL> host  dir  c:\oracle\oradata\ora92
 
 6) 실습이 끝나면 TEST 테이블스페이스를 삭제하십시오. 해당 테이블스페이스 내에 관련 테이블이나 인덱스가 생성되어 있으면 테이블스페이스를 삭제할 수 없습니다. 
SQL>  drop tablespace test;
drop tablespace test
*
1행에 오류:
ORA-01549: 테이블스페이스가 비어있지 않으므로 INCLUDING CONTENTS 옵션
을 사용해 주십시오

SQL>  drop tablespace test including contents;

SQL>  select tablespace_name, bytes, file_name from dba_data_files;
SQL>  host  dir  c:\oracle\oradata\ora92
      test_01.dbf
      test_02.dbf
 
 7) 테이블스페이스를 삭제하더라도 관련 데이터 파일은 삭제되지 않습니다. 추가적인 작업을 통해 관련 데이터 파일을 함께 삭제하십시오. 
SQL>  host del c:\oracle\oradata\ora92\test_0*
SQL>  host dir  c:\oracle\oradata\ora92
SQL>  exit
 

 

 

http://www.dbguide.net/oracle/oracle_02.jsp 참조.

반응형

'Oracle > Oracle Error' 카테고리의 다른 글

ORA-14400  (0) 2010.04.01
ora-27476, ora-06512  (0) 2010.01.26
Linux Oracle9i Ora-01031:insufficient privileges  (0) 2008.11.19
Ora-32004, Ora-19905:10g Archive mode 설정 후 Error  (0) 2008.10.02
ORA-01653  (0) 2006.10.02
반응형
출처 존재하는가? | 곰팅이얌
원문 http://blog.naver.com/assembly1/150006411379

임의의 테이블(A)을 128(으)로 임의의(TS) 테이블스페이스에서 확장할 수 없습니다. 라는 에러메시지가 보이면 적용할 해결법이다.

 

**********************************************

UPDATE DBA_DATA_FILES
SET AUTOEXTENSIBLE = 'YES'
WHERE TABLESPACE_NAME='TS_ETSD'

 

DBA_DATA_FILES 뷰테이블이라 위의 문장은 실행할 수 없다(오라큰 문외한이기에 시도를...)

**********************************************

 

*********기존 테이블 스페이스 삭제*************

DROP TABLESPACE TS_ETSD (INCLUDING CONTENTS) ===> 테이블 스페이스에 정보가 있는 경우 추가되는 문장

 

*********새로운 테이블 스페이스 생성***********

CREATE TABLESPACE TS_ETSD
DATAFILE
  'C:\ORACLE\TS_ETSD.DBF' SIZE 1024M 
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED BLOCKSIZE (8K)===> 다른 테이블 스페이스에 잡혀있는 블럭사이즈로 잡아야 에러(ORA-29339)가 발생하지 않는다.

 

==========================================================================================

BLOCKSIZE (8K) 가 아니라 BLOCKSIZE 8K로 하니깐 되더라고요! 
안되시는 분들은 괄호를 빼고 해보시길 바랍니다.^^

==========================================================================================

 

나의 조치...

 

테이블에 입력,수정,삭제작업을 여러번 수행을 하면 발생하는 에러 현상입니다.

이 에러는 저장되어 테이블 스페이스의 공간이 부족한 경우 자주 발생하는 것입니다.

 

해결하는 방법은 2가지 방법이 있습니다.

1. 테이블스페이스의 datafile을 하나 더 만들어 주는 것.

    alter tablespace 테이블스페이스 이름

      datafile ='저장될 datafile의 경로명' size 100m;

    ex) alter tablespace users

           datafile = 'c:\prod\disk5\user02.dbf' size 200m;

 

2. 테이블스페이스의 기존 datafile의 size를 늘려 주는 것.

    alter database 

      datafile ='저장될 datafile의 경로명' resize 100m;

 

    dbguide라는 곳에서 참조하였습니다.

자세한 내용은 http://www.dbguide.net/oracle/oracle_02.jsp 이곳에서 확인해 보시거나

저의 Oracle Study에 ORA-01653 에 대한 것만 참조해서 써 놓았습니다.

반응형

'Oracle > Oracle Error' 카테고리의 다른 글

ORA-14400  (0) 2010.04.01
ora-27476, ora-06512  (0) 2010.01.26
Linux Oracle9i Ora-01031:insufficient privileges  (0) 2008.11.19
Ora-32004, Ora-19905:10g Archive mode 설정 후 Error  (0) 2008.10.02
ORA-01653  (0) 2006.10.20

+ Recent posts