오라클 설치 후 Password 정책 관련하여 아무런 설정을 하지 않고 시스템을 운영하다 보면 Was에서 사용중인 계정의

패스워드가 만료되어 시스템이 정상동작하지 않는 현상이 나타납니다. 

패스워드가 만료되어 시스템이 동작하지 않는 현상을 예방하기 위해서 패스워드 만료정책을 수정하는 방법을 알아보도록 

하겠습니다.

(물론 보안을 위해서 주기적으로 패스워드를 변경하는것이 바람직 하지만...)

 

 

현재 설정된 패스워드 정책에 대해서 조회 합니다. 

SELECT * FROM DBA_PROFILES A WHERE A.profile = 'DEFAULT' AND A.resource_type = 'PASSWORD';

위 그림과 같이 UNLIMITED로 설정되어 있지 않고 180등의 숫자로 설정되어있으면 해당 일자가 지난뒤 패스워드가 만료되게 됩니다. 

 

 

 

위 그림과 같이 패스워드를 기간제한 없이 사용하도록 수정합니다. 

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

테이블 스페이스를 자동으로 사이즈가 늘어날 수 있도록 autoextend를 on으로 설정 했음에도 해당 오류가 발생하는 경우가 있습니다. 

 

해당 오류가 발생할 때에는 해당 테이블스페이스 데이터 파일의 용량을 확인해야합니다. 

 select file_name, tablespace_name, bytes, autoextensible
   from dba_data_files
  where tablespace_name='MY_TS';

bytes에 해당하는 내용이 용량을 나타내는 항목입니다.

자동 증가옵션을 넣었어도 해당용량이 최대 용량이 존재합니다. 

 

  • OS가 32비트인 경우 최대 16기가 까지 생성 가능
  • OS가 64비트인 경우 최대 32기가 까지 생성 가능

즉 OS의 비트 수에 따른 최대 용량이 존재하여 파일을 더이상 확장할 수 없는 경우 동일한 애러가 발생하게 됩니다. 

 

 

이 경우 데이터 파일을 추가하여 해당 오류를 해결 할 수 있습니다. 

/* 사용법
   ALTER TABLESPACE [TableSpaceName] 
     ADD DATAFILE [DataFileName] 
     SIZE [초기용량] 
     AUTUEXTEND ON NEXT [자동증가 용량] 
     MAXSIZE [최대 용량]
*/     
ALTER TABLESPACE MY_TS ADD DATAFILE '/TS_DATA01.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 32G

 

ORA-28040 : 일치하는 인증 프로토콜 없음

ORA-28040 : No matching authentication protocol 

 

 

원인

1. Oracle Oracle Server 와 Client 의 버전 차이

2. ojdbc jar의 버전이 맞지 않는 경우

 

해결방안 #1

설치된 DB Server의 sqlnet.ora 파일을 수정한다.

$ cd $ORACLE_HOME/network/admin
$ vi sqlnet.ora 
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10

다시 접속을 시도하여 접속이 되는지 확인한다.

 

접속이 되지 않는다면 리스너를 재기동하고 다시 시도한다.

 

해결방안 #2

ojdbc jar 버전을 변경한다. 일반적으로 ojdbc14 jar를 사용할 경우 많이 접할 수 있는 상황이며 

ojdbc8 jar, ojdbc7.jar, ojdbc6 jar 등으로 라이브러리를 변경하여 해결 할 수 있다.

 

 

https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/parameters-for-the-sqlnet.ora.html#GUID-B2908ADF-0973-44A9-9B34-587A3D605BED

 

Database Net Services Reference

This chapter provides a complete listing of the sqlnet.ora file configuration parameters.

docs.oracle.com

 

 

Oracle Data base 19c 버전을 사용하는 경우 jdbc jar를 8버전으로 사용해야만 한다(?) 라고 되어있다.

https://www.oracle.com/database/technologies/faq-jdbc.html

 

Oracle JDBC Frequently Asked Questions

For byte data, there are three Oracle SQL types: VARCHAR2, LONG and CLOB. VARCHAR2 data is of limited length, is stored directly in a column, and is transmitted to the server in inline packets. LONG data has a much larger limit (2 Gigibytes), is stored via

www.oracle.com

그런데.. 문제는 ojdbc8.jar을 사용하려면 jdk 8 버전부터 이상이어야 한다는 것이다. 

기존에 사용하는 JAVA 프레임워크가 스프링 하위 버전이라면 JDK가  8버전으로 변경되기 떄문에  버전에 맞게 프레임워크가 버전도 변경이 되어야 한다.(Spring 기준).. 

 

DB가 변경되었다고 해당 DB를 사용하는 어플리케이션이 변경되는 것은 아무래도 어느정도의 리스크를 생각해야만한다.

 

하지만 이러한 어려움을 Oracle의 설정으로 이겨낼 수 있다.

 

19c보다 하위 버전의 Oracle Client에서 접속할 수 있도록 설정하는 기능을 이용하면 JDK의 버전 변경 없이 Oracle 19C Databse를 사용할 수 있다.

 

/Oracle 설치 경로/network/admin/sqlnet.ora

해당 파일에 아래의 설정값을 추가한다.

SQLNET.ALLOWED_LOGON_VERSION_SERVER=9
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=9

Oracle client version 9 부터 사용가능하도록 설정하면 ojdbc8.jar의 변경없이 19c 데이터베이스를 사용할 수 있다.

Functions

 

1) Number functions

2) Charater functions

3) Conversion functions

4) Date functions

Operators

  - O/S label의 이진형식, 데이타형식은 주로 확인된 ORACLE에 사용. 

  - 이 아이템을 orperandsarguments라 부름

  - Operator는 특정한 charaterskeyword로 묘사

 

 

1) Arithmetic operators

2) Charater operators

  - 문자연결 연산결과는 두 문자열이 서로 다른 문자열로 두 문자열의 자료형식이 같은 CHAR형이면 결과는 이 형식의 제한된 255문자 국한되며, 만약 한쪽이 VARCHR2형이면 결과의 자료 형식은 VARCHR2형으로 제한 범위는 2000문자
형식을 따름
.

  - 문자열 안의 공백문자는 이 연산자에 의하여 그대로 보존됨.

 

3) Comparision operators

  - NULL 데이터타 베이스 용어에서 NULL은 필드에 데이타 베이스가 없다는 뜻임. 그것은 칼람이 제로거나 빈칸이라는 것을 의미하는 것이 아님. 제로나 빈칸은 값임. NULL어떤것도 그 필드안에 없다는 뜻임. 만일 Field = 9와 같은 비교식을 만들어 FieldNULL이면, 그 비교식은 Unknow으로 돌아 올 것임.

    이것은 조건이 불안하여 대부분의 SQL을 선호 하는 사람들은 UnknowFASLE로 바꾸어 특정연산자에게 IS NULL을 제공하여 NULL조건을 테스트함. 상당히 많은 로직버그를 추적할경우 NULL값을 비교하지 말고 FALSE의 초기값으로 복구하는지 확인함.

#1. \escape문자로보고 _앞에\가 선행하여 이것은 오락클이 해석시 _를 특수문자가 아니 일반문자로 인식

 

4) Logical operators

  - NOT, AND , OR 다른 언어와 내용 동일

 

5) SET operators

6) ORTHER operators

내부 Datatypes

 

(1) VARCHR2(size):변수길이인 영숫자 데이터. 최대 2000byte를 갖음.

(2) NUMBER(p.s):PrecisionPScaleS를 포함. P지정시 1~38까지 S지정시 -84~127의 범위.

(3) LONG:문자변수로 확장된 길이를 2GByte 또는 2^31-1까지 확장.

(4 )DATA:날자형 포함한 데이터 타입. ) Jan 1 4712BC - Dec 31 4712 AD

(5) RAW(size):크기가 255Byte까지 가능한 Binary 데이터.

(6) LONG RAW:크기가 Giga_Byte 데이터.

(7) ROWID:Table에서 행의 고유한 Address를 나타내는 16진 문자열.

(8) CHAR(size):1~255문자 사이의 길이를 갖는 영숫자 데이터.

(9) MLSLABLE:O/S Label의 이진형식.

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

Oracle Database 기초 #4 - Functions  (0) 2022.03.25
Oracle Database 기초 #3 - Operators  (0) 2022.03.25
Oracle Database 기초 #1  (1) 2022.03.25
TNSPING 이용한 접속 테스트  (0) 2021.02.16
Index Rebuild  (0) 2020.10.05

SQL(Structured Query Language, pronounced equel)ORACLE D/B환경에서 사용자나 개발자가  자료접근을 위해 반드시

     사용해야 하는 명령들의 집단임.

     1. SQL 역사

       -. 관계형자료 모델은 1970대초 Dr.E.F.Codd에 의하여 처음으로 개발됨.

       -. SQL언어는 1970대 중반 IBMPototype Relational Database Managment System에 의해 발전됨.

       -. 최초의 SQL언어는 (SEQUEL2)1976 IBM Journal of R&D에 의해 소개되었고,

       -. 1979ORACLE사가 상업용으로 이용 가능한 SQL의 실행을 소개함.

       -. SQLIBMD/B2SQL/DS에서도 실행됨.

       -. 현재 SQL은 광범위한 실행과 산업 구조화된 자료접근 언어로 이용됨.

     2. SQL 표준

       -. ANSI SQL3.135-1989 Database Language SQL with Integrity Enhancement or ANSI SQL89relational database        

          managment system의 표준으로 정의.

       -. 이는 ANSI X3.135-1986을 대신함과 ANSI SQL Addendum1.에 소개된 무결성 강화를 내포함.

       -. ANSIANSI X3.168-1989 atabase Language Embeded SQL에 내장된 SQL의 정의를 표준으로 채택함.

       -. 거의 모든 관계형 자료시스템은 SQL형식을 제공하며 ANSI SQL89를 표준으로 사용함.      

     3. 비처리 언어

       -. SQL비처리 언어임.

       -. 동일 시간대의 하나보다 많은 레코드 처리

       -. 자료의 자동처리 제공

    4. 모든 사용자를 위한 언어

       -. SQL은 모든 종류의 사용자로부터 모든 종류의 자료활동에 이용.

       -. system administrators

       -. database administrators

       -. security administrators

       -. application programmers

       -. decision support system personnel

       -. many other types of end users

       -. SQL모든사용자에게 D/B구성이나 응용를 위한 명령문 제공.

  5. 통일된 언어

    - querying data

    - inserting, updating, and deleting rows in table

    - creating, replacing, altering, and dropping objects

    - controlling access to the database and its object

    - guaranteeing database consistency and integrity

  6. 내장된 SQL

    -. 모든 SQL명령은 SELET,INSERT와 같이 SQL환경하 상호작용 도구들 안에서 이용 가능.

    -. PREPARE and OPENcontrol명령으로 처리 프로그래밍 언어안에서 표준SQL을 수행.

    -. 응용프로그램에 의해 호출되어 어떤 작업을 수행할수 있는 데이터베이스에 내장된 내장 프로시져 작성을 의미.

    -. 데이타베이스에 내장된 데이타베이스 시스템은 간단한 스크린과 메뉴 오브젝트를 완전한 툴 키트를 제공.

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

Oracle Database 기초 #3 - Operators  (0) 2022.03.25
Oracle Database 기초 #2 - Datatypes  (0) 2022.03.25
TNSPING 이용한 접속 테스트  (0) 2021.02.16
Index Rebuild  (0) 2020.10.05
자주쓰는 함수 정리 - 문자열 함수  (0) 2020.04.03

MS SQL에서 데이터를 편집할 때 스크립트를 작성하지 않고 편리하게 수정하는 방법으로 아래 그림과 같은 기능을 사용합니다.

 

하지만 데이터가 많을 경우 내가 찾는 데이터가 상위 200개안에 없을 경우 조건을 부여하여 해당 데이터를 편집하는 방법을 설명하겠습니다. 

 

상위 200개 행 편집을 클릭할 경우 아래 그림과 같이 상위 200개에 대해서 데이터가 조회됩니다.

 

조회된 데이터에 우클릭하여 팝업메뉴를 통해 데이터에 조건을 추가할 수 있습니다. 

 

아래 그림과 같이 필터 항목에 원하는 조건 값을 넣고 ctrl + R을 눌러 특정 데이터만 조회 및 편집할 수 있습니다. 

 

위의 기능으로 제공하는 조건은 모두 or 조건이기 때문에 SQL 문을 작성하여 편집할 데이터를 조회하는 방법도 있습니다. 

일반적으로 테이블을 생성할 때 아래와 같이 인덱스를 생성하게 된다.

ALTER TABLE [dbo].[REGION_MGMT] ADD  CONSTRAINT [PK_REGION_MGMT] PRIMARY KEY CLUSTERED 
(
	[REGION_CD] ASC,
	[NATION_CD] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

WITH 다음에 오는 ON/OFF가 무슨 뜻인지 알아보도록 한다.

 

 

LOB_COMPACTION = { ON | OFF }

LOB(Large Object) 데이터가 포함된 모든 페이지를 압축하도록 지정합니다. 
LOB 데이터 형식은 image, text, ntext, varchar(max), nvarchar(max), varbinary(max) 및 xml입니다. 이 데이터를 압축하면 디스크 공간을 더 효율적으로 사용할 수 있습니다. 기본값은 ON입니다.

  • OFF
    큰 개체 데이터가 포함된 페이지가 압축되지 않습니다.
    OFF를 지정해도 힙에는 아무 영향이 없습니다.
    LOB 열이 없는 경우 LOB_COMPACTION 절은 무시됩니다.

PAD_INDEX = { ON | OFF }

인덱스 패딩을 지정합니다. 기본값은 OFF입니다.

  • ON
    FILLFACTOR로 지정된 사용 가능한 공간의 비율이 인덱스의 중간 수준 페이지에 적용됩니다. FILLFACTOR를 지정함과 동시에 PAD_INDEX를 ON으로 설정하지 않으면 sys.indexes에 저장된 채우기 비율 값이 사용됩니다.

  • OFF 또는 fillfactor가 지정되지 않았습니다.
    중간 수준 페이지는 용량 한도 가까이 채워집니다. 이로 인해 중간 페이지의 키 집합을 기준으로 인덱스에 포함될 수 있는 최대 크기의 행 하나 이상을 위한 충분한 공간이 남겨집니다.

SORT_IN_TEMPDB = { ON | OFF }

tempdb에 정렬 결과를 저장할지 여부를 지정합니다. 기본값은 OFF입니다.

  • ON
    인덱스 작성에 사용된 중간 정렬 결과가 tempdb에 저장됩니다. tempdb가 사용자 데이터베이스와는 다른 디스크 세트에 있으면 인덱스를 만드는 데 필요한 시간이 줄어들 수 있습니다. 그러나 인덱스 작성 중에 사용되는 디스크 공간의 크기는 커집니다.

  • OFF
    중간 정렬 결과가 인덱스와 같은 데이터베이스에 저장됩니다.
    정렬 작업이 필요하지 않거나 메모리에서 정렬을 수행할 수 있으면 SORT_IN_TEMPDB 옵션이 무시됩니다.

 

IGNORE_DUP_KEY = { ON | OFF }

데이터 입력 시 PK(UNIQUE) 중복 오류가 발생할 경우 정상적인 데이터만 입력할 것인가 전부 롤백 할 것인가에 대한 설정입니다. 기본값은 OFF입니다.

 

  • ON
    중복된 키 값이 고유 인덱스에 삽입되는 경우 경고 메시지가 나타나고 고유성 제약 조건을 위반하는 행만 실패합니다.

  • OFF
    중복된 키 값이 고유 인덱스에 삽입되는 경우 오류 메시지가 나타나고 전체 INSERT 작업이 롤백됩니다.
    뷰, 고유하지 않은 인덱스, XML 인덱스, 공간 인덱스 및 필터링된 인덱스에 생성된 인덱스의 경우 IGNORE_DUP_KEY를 ON으로 설정할 수 없습니다.

    IGNORE_DUP_KEY를 보려면 sys.indexes를 사용하십시오.

    이전 버전과 호환되는 구문에서 WITH IGNORE_DUP_KEY는 WITH IGNORE_DUP_KEY = ON과 같습니다.

 

STATISTICS_NORECOMPUTE = { ON | OFF }

배포 통계를 다시 계산할지 여부를 지정합니다.
통계가 자동 생성 되지 않으면 데이터 증가 및 분포에 따라 인덱스의 영향도가 줄어 들 수 있으므로 OFF로 설정하는것이 일반적입니다.  기본값은 OFF입니다.

 

  • ON
    이전 통계가 자동으로 다시 계산되지 않습니다.
  • OFF
    자동 통계 업데이트가 설정됩니다.
    자동 통계 업데이트를 복원하려면 STATISTICS_NORECOMPUTE를 OFF로 설정하거나 NORECOMPUTE 절 없이 UPDATE STATISTICS를 실행합니다.
    배포 통계 자동 재계산 기능을 해제하면 쿼리 최적화 프로그램에서 테이블과 관련된 쿼리에 대해 최적의 실행 계획을 선택할 수 없습니다.

ONLINE = { ON | OFF }

인덱스 작업 중에 쿼리 및 데이터 수정에 기본 테이블과 관련 인덱스를 사용할 수 있는지 여부를 지정합니다. 
기본값은 OFF입니다.

XML 인덱스 또는 공간 인덱스의 경우 ONLINE = OFF만 지원되며 ONLINE을 ON으로 설정하면 오류가 발생합니다.

참고
온라인 인덱스 작업은 SQL Server Enterprise, Developer 및 Evaluation Edition에서만 사용할 수 있습니다.

  • ON
    인덱스 작업 중에 장기 테이블 잠금이 유지되지 않습니다. 인덱스 작업의 주 단계 중 내재된 공유(IS) 잠금만 원본 테이블에 유지됩니다. 따라서 기본 테이블 및 인덱스를 계속 쿼리 또는 업데이트할 수 있습니다. 작업이 시작될 때 아주 짧은 기간 동안 S(공유) 잠금이 원본 개체에서 유지됩니다. 작업이 끝날 때 짧은 기간 동안 비클러스터형 인덱스가 생성되는 경우에는 원본에 대해 S(공유) 잠금이 유지되고, 온라인 상태에서 클러스터형 인덱스가 생성 또는 삭제될 때나 클러스터형 또는 비클러스터형 인덱스가 다시 작성될 때는 SCH-M(스키마 수정) 잠금이 획득됩니다. 로컬 임시 테이블에서 인덱스를 생성하는 경우에는 ONLINE을 ON으로 설정할 수 없습니다.

  • OFF
    인덱스 작업 중에 테이블 잠금이 적용됩니다. 클러스터형 인덱스, 공간 인덱스 또는 XML 인덱스를 생성, 다시 작성 또는 삭제하거나 비클러스터형 인덱스를 다시 작성 또는 삭제하는 오프라인 인덱스 작업은 테이블에 대해 SCH-M(스키마 수정) 잠금을 획득합니다. 이 경우 작업 중에 모든 사용자가 기본 테이블에 액세스할 수 없게 됩니다. 비클러스터형 인덱스를 만드는 오프라인 인덱스 작업을 통해 테이블의 S(공유) 잠금을 획득합니다. 따라서 기본 테이블을 업데이트할 수 없지만 SELECT 문과 같은 읽기 작업은 허용됩니다.

ALLOW_ROW_LOCKS = { ON | OFF }

행 잠금의 허용 여부를 지정합니다. 기본값은 ON입니다.

  • ON
    인덱스에 액세스할 때 행 잠금이 허용됩니다. 행 잠금을 사용하는 시점은 데이터베이스 엔진이 결정합니다.

  • OFF
    행 잠금이 사용되지 않습니다.

ALLOW_PAGE_LOCKS = { ON | OFF }

페이지 잠금의 허용 여부를 지정합니다. 기본값은 ON입니다.

  • ON
    인덱스에 액세스할 때 페이지 잠금이 허용됩니다. 페이지 잠금을 사용하는 시점은 데이터베이스 엔진이 결정합니다.

  • OFF
    페이지 잠금이 사용되지 않습니다.

참고
ALLOW_PAGE_LOCKS가 OFF로 설정되면 인덱스를 다시 구성할 수 없습니다.

+ Recent posts