--특정 사용자 테이블별 용량 확인#1
SELECT
	owner, segment_name, segment_type, sum(bytes)/1024/1024 AS MB
FROM
	DBA_SEGMENTS
WHERE
	segment_type='TABLE'
	AND owner = [사용자 아이디]
GROUP BY
	owner, segment_name, segment_type
ORDER BY
	mb desc;	


--특정 사용자 테이블별 용량 확인#2
SELECT
	A.segment_name, ROUND(SUM(A.bytes)/1024/1024) "SIZE_MB", A.segment_type
FROM
	DBA_SEGMENTS A, DBA_TABLES B
WHERE
	A.segment_name = B.TABLE_NAME
	AND A.segment_type IN ('TABLE', 'TABLE_PARTITION')
	AND A.owner = [사용자 아이디]
GROUP BY
	A.segment_name, A.segment_type
ORDER BY
	2 DESC;


--특정 사용자 테이블별 인덱스 용량
SELECT
	A.segment_name, ROUND(SUM(A.bytes)/1024/1024) "SIZE_MB", A.segment_type
FROM
	DBA_SEGMENTS A, DBA_INDEXES B
WHERE
	A.segment_name = B.index_name
	AND A.segment_type IN ('INDEX', 'INDEX PARTITION')
	AND A.owner = [사용자 아이디]
GROUP BY
	A.SEGMENT_NAME, A.SEGMENT_TYPE
ORDER BY
	2 DESC;


--특정 사용자 테이블별 1행당 소요 용량
SELECT
	table_name, SUM(data_length) AS byte
FROM
	ALL_TAB_COLUMNS
WHERE
	owner = [사용자 아이디]
GROUP BY
	table_name
ORDER BY
	byte DESC;
Posted by 하리하라​
:

background parsing job....

DBMS 2025. 3. 7. 10:26 |

DBEAVER에서 무한 진행 프로그래스바 메세지

디버 메뉴 "윈도우 > 환경 설정"에서 아래 기능을 찾아 비활성화 하면 사라짐

 

메뉴명만 보면 "시멘틱 분석" 활성?

문장의 형태소(단어, 구문) 분석?? 누구? 디버가? 아님 DBMS? 

 

꼬라지를 보면 디버가 범인. ㅎㅎ

쿼리 형태소 분석해서 뭐할라구??

해당 메뉴는 버전에 따라 언어 설정에 따라 위치가 조금씩 다 다르나 최종 "Code Editor"를 찾으면 된다는 전설이다.

 

 

 

참고 

https://github.com/dbeaver/dbeaver/issues/36542

Posted by 하리하라​
:

● 가상 데이터 입력할 테이블 생성

CREATE TABLE TEST(
	V1 VARCHAR2(100), 
	V2 VARCHAR2(100), 
	V3 VARCHAR2(100), 
	V4 VARCHAR2(100), 
	V5 VARCHAR2(100), 
	V6 VARCHAR2(100), 
	V7 VARCHAR2(100), 
	V8 VARCHAR2(100), 
	V9 VARCHAR2(100), 
	V10 VARCHAR2(100)
);

 

 

● 100만건 입력 스크립트 실행

INSERT INTO TEST
SELECT
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000)
FROM
	DUAL
CONNECT BY
	LEVEL <= 1000000

 

 

● 입력 속도 확인 결과 / DBeaver v25.0.0 

 

 

● 입력 속도 결정적 장비 정보 - I/O HDD, M.2 GEN5 SSD

 

 

● 백만건 집계 / 0.3초

 

 

 

● 추가 백만건 입력 및 입력에 따른 테이블스페이스 변화 / 9초

 

- 백만건 입력 전 용량 / 133MB

 

- 백만건 입력 후 용량 / 257MB / 2배 증가(최초 테이블스페이스 사용 기준)

 

 

● 대부분 회사의 입출력 장치(SATA or SAS)에 만든 테이블스페이스 테스트

 

- 종전 입출력 하드웨어 스펙

 

- 대부분 서버 장비 입출력 하드웨어 스펙

 

눈으로 보이는 성능 차이는 62배. 그럼 실질적으로 느린 장치에다 테이블스페이스 만들고 동일하게 성능 테스트

 

 

● 2GB 테이블스페이스 생성 / 느린 하드라 그런가 11초 걸림

CREATE TABLESPACE TEST
   DATAFILE '/PATH.../.../test.dbf'
   SIZE 2048M
   AUTOEXTEND ON
   NEXT 4M MAXSIZE UNLIMITED
   LOGGING PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE
   BLOCKSIZE 8K
   SEGMENT SPACE MANAGEMENT MANUAL
   FLASHBACK ON;

만들고 봤더니 기존 대비 10배 크게 만듬 

 

 

● 만든 거 삭제 

 

 

● 초기 100MB 용량으로 테이블스페이스 다시 생성

 

 

● 해당 영역으로 테이블 생성

 

 

● 입력 테스트 / 10초 / M.2와 같음.. ㅎㅎ

 

 

● 추가 100만건 입력 후 테이블스페이스 변화

- 각 200만 데이터가 들어있는 USERS, TEST 테이블스페이스 용량 비슷해짐 

 

 

● 각 200만건 있는 TEST, TEST2 테이블 조회 

결국 둘 다 조회 속도 같음

 

 

● 결론

DB에서 M.2 SSD 단순 입력/조회 성능은 같다??? I/O 62배 차이눈??  상관 없는겨??

랜덤 액세스에서 차이 나는겨?? 일단 요기까지 

 

 

'DBMS > ORACLE' 카테고리의 다른 글

오라클 테이블 용량 확인  (0) 2025.03.07
오라클 테이블스페이스 관리  (0) 2025.03.04
오라클 최초 사용 - 사용자 계정 생성  (0) 2025.03.04
DBA 무조건 로그인  (0) 2025.03.04
오라클 설치 무한대기 오류  (0) 2025.03.04
Posted by 하리하라​
:

--기본 테이블스페이스 조회 / 해당 계정 DBA 권한 필요

SELECT * FROM DBA_TABLESPACES;

 

 

--테이블스페이스 경로 확인

SELECT TABLESPACE_NAME, FILE_NAME, BYTES FROM dba_data_files;

 

 

--사용자별 사용 테이블스페이스 확인

SELECT USERNAME, DEFAULT_TABLESPACE FROM dba_users; 

 

 

--사용자 테이블스페이스 설정

ALTER USER [사용자 계정명] DEFAULT TABLESPACE [테이블스페이스명] QUOTA UNLIMITED ON [테이블스페이스명] ;

 

 

--전체 테이블스페이스 조회 및 경로 확인

SELECT
	A.TABLESPACE_NAME "테이블스페이스명",
	A.FILE_NAME "파일경로",
	(A.BYTES - B.FREE)    "사용공간",
	B.FREE                "여유 공간",
	A.BYTES               "총크기",
	TO_CHAR( (B.FREE / A.BYTES * 100) , '999.99')||'%' "여유공간"
FROM (
	SELECT
		FILE_ID,    TABLESPACE_NAME,    FILE_NAME,    SUBSTR(FILE_NAME,1,200) FILE_NM,    SUM(BYTES) BYTES
	FROM
		DBA_DATA_FILES
	GROUP BY
		FILE_ID,TABLESPACE_NAME,FILE_NAME,SUBSTR(FILE_NAME,1,200)
	) A, (
	SELECT
		TABLESPACE_NAME,    FILE_ID,    SUM(NVL(BYTES,0)) FREE  
	FROM
		DBA_FREE_SPACE
	GROUP BY
		TABLESPACE_NAME,FILE_ID
	) B
WHERE
	A.TABLESPACE_NAME = B.TABLESPACE_NAME
	AND A.FILE_ID = B.FILE_ID

 

 

--특정 테이블, 테이블스페이스 변경

alter table [테이블명] move tablespace [테이블 스페이스명]

 

 

--해당 테이블스페이스의 물리적인 파일의 이름 또는 위치변경

alter tablespace rename [A] to [B]

 

 

--해당 테이블스테이스의 용량을 1024메가로 변경

alter tablespace [테이블스페이스명] add datafile [추가할데이터파일명] size 1024M;

 

 

--해당 데이터파일경로에 해당하는 테이블스페이스의 크기가 FULL이 되면 자동으로 100메가씩 증가.

alter database datafile [데이터파일경로] autoextend on next 100m maxsize unlmited;

 

 

 

★ 삭제 주의, 삭제 옵션 다 이해 후 실행 필요

★ 운영 중인 테이블스페이스 날림 철컹철컹    

 

 

--테이블스페이스 삭제

drop tablespace [테이블 스페이스명];

 

 

--테이블스페이스 내의 객체(테이블, 인덱스등)를 전체 삭제

drop tablespace [테이블 스페이스명] include contents;

 

 

--테이블스페이스의 모든 세그먼트를 삭제. (데이타가 있는 테이블 스페이스 제외)

drop tablespace [테이블 스페이스명] including contents;

 

 

--삭제된 테이블스페이스를 참조하는 다른 테이블스페이스의 테이블로부터 참조무결성 제약 조건을 삭제

drop tablespace [테이블 스페이스명] cascade constraints;

 

--테이블 스페이스의 물리적파일까지 삭제

drop tablespace [테이블 스페이스명] including contents and datafiles;

 

 

--테이블스페이스 생성

CREATE TABLESPACE TEST
   DATAFILE '/PATH.../.../test.dbf'
   SIZE 2048M
   AUTOEXTEND ON
   NEXT 4M MAXSIZE UNLIMITED
   LOGGING PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE
   BLOCKSIZE 8K
   SEGMENT SPACE MANAGEMENT MANUAL
   FLASHBACK ON;

 

 

--생성 계정에 테이블스페이스 설정
CRAETE USER [사용자계정명] IDENTIFIED BY [비번] DEFAULT TABLESPACE TEST;

 

 

--테이블 만들 때 테이블스페이스 지정

CREATE TABLE [테이블명] ( ..... 내용 ...... ) TABLESPACE [존재하는 테이블스페이스명];

 

Posted by 하리하라​
:

설치 시, 아이디 물어보는 것 없이

비밀번호 입력란에 입력했던 비번 기억 - ①

 

설치 완료 후

1. CLI 실행

 

2. sqlplus 실행

 

3. 아이디 system 입력

 

4. 설치 비밀번호 ① 입력

 

5. 접속 성공 메세지 확인 후

 

6. conn/as sysdba 입력

 

7. "연결되었습니다" 메세지 확인

(위를 CLI에서 한번에 실행하는 방법 / sqlpus "/as sysdba")

 

8. alter session set "_ORACLE_SCRIPT"=true; 실행 / 일반 계정 생성 활성화

- false는 특수 계정 만들 때 ##userid 식으로 샵을 넣어 만듬. 넣지 않으면 오류 발생

- 해당 설정을 해주지 않고 계정 생성 시 "ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다." 오류 발생

- 이경우 create user c##{사용자 아이디} identified by {사용자 비밀번호}; 식으로 생성 필

 

9. 사용자 계정 생성 실행

create user {사용자 계정명} identified by {비밀번호};

 

10. 사용자 DBA 권한 부여

grant dba to {사용자 계정명};

 

11. 일반 사용자 권한 부여 / 접속 및 테이블 테이블 생성(리소스 사용) 권한

grant connect, resource to {사용자 계정명};

 

12. 사용자 삭제

drop user {사용자 아이디} cascade;

 

※ c##{사용자 아이디} 사용자 계정

- ##은 보통 시스템 계정에 붙는 규칙이며 c는 공통 사용자(common user) 명시적 표기

- 오라클 12c 버전부터 생김

- 위에는 특수 목적이라 했지만, 개인 사용자와 공통으로 쓰는 사용자 계정을 명시적으로 분리하여 쓰기 위함

- 즉 c##로 시작하는 계정은 나 혼자 쓰는 것이 아닌 공용(common) 계정이라는 뜻을 명시적으로 표시

- c## 사용자는 여러개 CDB(Container Database)에서 계정이 공유되어 CDB의 모든 PDB(Public DB)에 접근 할 수 있음

  (C##가 없는 계정 경우 해당 DB만 사용)

 

※ connect, resource, dba 같은 role 부여 지양

- create session, create table, create procedure, select, update, all, index, alter... 등 권한을 묶어 놓은 connect, resouce 같은 것(=role)으로 일괄 권한 부여가 아닌 필요한 권한(craete table..)만 직접 부여하여 보안을 제고하는 것을 선호

- role이 아닌 rule은 SQL Optimization 동작 원리. RBO(Role-Base Optimization) vs CBO(Cost-Base Optimization). 혼동 주의

Posted by 하리하라​
:

DBA 무조건 로그인

DBMS/ORACLE 2025. 3. 4. 11:33 |

CLI 에서 아래 입력

sqlpls "/as sysdba"

 

 

로그인 되지 않을 경우

DBA가 해당 방법 막았을 경우 

 

 

오라클 설치 후 따로 만진 것이 없다면

무조건 로그인 가능

 

 

sysdba 막는 방법은

sqlnet.ora 파일에서 아래 내용 추가

SQLNET.AUTHENTICATION_SERVICES=(NONE)

 

즉 막혀 있으면

해당 파일에서 해당 영역을 수정하여 강제 로그인 가능

 

 

 

Posted by 하리하라​
:

● 설치 환경

- AMD 7995x 

- 32G RAM

- HDD M.2 GEN5 2G

 

 

● 설치 무한대기 구간

 M.2 특성상 쭉쭉 고속으로 설치되다

 

① Oracle Database Configuration Assistant 90% 진행 상태

- 네트워크 상태, I/O 상태 등 모든 부하가 없는 상태로 거의 멈춘 상태처럼 보이나

무작정 기다림 정상 설치 진행 확인 / 10분 소요

 

② 신규 데이터베이스 구성 

- 이전 무한 대기 상태와 비슷, 또 역시 무작정 기다림 정상 설치 진행 / 10분 소요

 

 

● 결론

- 오라클 설치 관련 로그에 아무것도 올라오지 않으면 무작정 기다리는 것이 해법

- M.2 아닌 경우 시간이 더 걸리는 것인지는 미확인. 그러나 빈번한 I/O 발생으로 지연은 아님 

- 인터넷은 검색 결과 대부분 재설치로 해결. 근본적인 문제 내용은 CPU 개수 문제가 유일

Posted by 하리하라​
:

MariaDB(MySQL) 관리

DBMS 2024. 9. 3. 14:05 |

#계정 원격 접속 허용

grant all privileges on *.* to '계정명'@'%';

예) grant all privileges on *.* to 'root'@'%';

 

#계정 로컬 전용 접속 계정 생성

grant all privileges on *.* to '계정명'@'localhost';

예) grant all privileges on *.* to '홍길동'@'localhost';

 

#계정 비밀번호 변경 / 계정이 하나 일 때 

alter user 계정명 identified by '비밀번호';

예) alter user 홍길동 identified by '열려라들깨';

 

#계정 비밀번호 변경 / 같은 계정 localhost, remote 등 접속이 다를 때

alter user '계정명'@'호스트' identified by '비밀번호';

예) alter user '홍길동'@'localhost' identified by '열려라참깨';

예) alter user '홍길동'@'%' identified by '열려라들깨';

 

#계정 생성

create user '계정명'@'호스트' identified by '비밀번호';

예) create user '홍길동'@'%' identified by '열려라참깨';

 

#생성 계정 접근 DB 설정 및 해당 DB 권한 설정

grant all privileges on DB명.* to '계정명'@'호스트';

예) grant all privileges on 테스트DB.* to '홍길동'@'%';

 

※ 계정 정보 생성, 수정, 권한 등 상기 작업 후 꼭 해줘야 하는 명령어

flush privileges;

 

#로그인 할 때 TLS/SSL 오류 발생 시 "--ssl=0" 기술

mysql -h 접속조수 -P 포트번호 -u계정아이디 -p --ssl=0

Posted by 하리하라​
:

MSSQL 관리

DBMS 2024. 5. 16. 14:49 |

● SQL 계정으로 로그인 되지 않을 때

 

- 윈도우 계정으로 로그인 후 SQL Query 실행하는 방법으로 "SP_ReadErrorLog" 실행 

 

- 계정이 잠겨서 발생하는 문제 경우 아래 실행

ALTER LOGIN sa WITH PASSWORD = '비번' UNLOCK

 

 

● Sequence 사용

CREATE SEQUENCE tempUid AS BIGINT
START WITH 1
INCREMENT BY 1
MINVALUE 1
NO MAXVALUE;

CREATE TABLE TEMP(
	uid BIGINT NOT NULL DEFAULT (NEXT VALUE FOR tempUid) PRIMARY KEY,
	name VARCHAR(100)
)

SELECT * FROM TEMP;

INSERT INTO TEMP(name) VALUES
	('최길동'),
	('박길동');

SELECT * FROM TEMP;

 

 

● 가상테이블 사용

WITH T(val1) AS(
	SELECT 1 
)
SELECT * FROM T
Posted by 하리하라​
:

MSSQL 설치 후

SSMS(Microsoft SQL Server Management Studio)에서 로그인 할 때 아래처럼 오류가 발생할 때

 

쉽게 로그인 팝업에서 탭메뉴 "추가 연결 매개 변수" 클릭 후

 

TrustServerCertificate=True

이거 넣어주면 해결 완료

 

여기저기 같은 버전 10번은 설치한 거 같은데 

이런 증상이 없는 컴퓨터도 있고 

로그인 할 때 윈도우 계정으로 하면 잘되는 경우도 있고
윈도우 계정도 동일한 오류가 발생하는 경우도 있고
아무튼 위 기술해주면 모두 로그인 성공!

Posted by 하리하라​
:

설치 완료 후 설치 앱 목록에서 SSCM 실행 & TCP/IP 사용으로 변경

 

 

TCP/IP 더블 클릭, IPALL TCP 동적 포트 0으로 변경 후 적용

 

 

방화벽 인바운드 규칙 / 프로그램 등록 / 해당 실행 파일 등록

 

 

MSSQL 설치 완료 후 별도 설치를 묻는 MSSMS(Microsoft SQL Server Management Studio) 설치 후 윈도우 계정으로 로그인 후 사용자 생성 및 설정

 

 

최상단 루트 항목 오른쪽 클릭 / 속성 선택으로 뜨는 팝업창 / 보안 / SQL Server 및 Windows 인증 모드 선택 / 서버 재시작

Posted by 하리하라​
:

● 백업

mysqldump -u [사용자명] -p [데이타베이스명]  --all-databases --default-character-set [캐릭터셋 ] > [파일명]

 

1. mysqldump -u root -p --all-databases -R -E --triggers --default-character-set utf-8 > all_db.sql

2. mysqldump -u root -p mysql table1 table2 -R -E --triggers --default-character-set utf8 > mysql_db.sql

 

* -R은 함수 및 프로시저 포함 백업

* -E는 이벤트 포함 백업(Oracle 경우 JOB)

 

 

● 복원

mysql -u [사용자명] -p [데이터베이스명] < [파일명]

* --all-databases 옵션으로 전체 백업 했을 때 복원은 [데이터베이스명] 부분 삭제

 

 

● 기타

- 증감분 백업도 명령어 레벨로 지원

- 이중화 지원

Posted by 하리하라​
:

● MariaDB 설치 후 CLI 접속은 정상, 토드 등 DB 접속툴 오류 발생

  설치한 MariaDB 언어셋 확인

● 기존 언어셋 utf8mb3를 utf8mb4로 변경하기 위해 my.ini 에서 설정 

 

● DB 재시작

 

● 이후 언어셋 변경 확인

정상 로그인 확인 

Posted by 하리하라​
: