2017/11/08

Microsoft-Windows-CAPI2, 513, Error

- Windows Server 2016, Windows Backup

암호화 서비스에서 System Writer 개체의 OnIdentity() 호출을 처리하는 동안 오류가 발생했습니다. Details: AddLegacyDriverFiles: Unable to back up image of binary Microsoft Link-Layer Discovery Protocol. System Error: 액세스가 거부되었습니다.

(패치 업데이트 버그로 추정됨)

 

\> accesschk.exe -c mslldp

mslldp
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R S-1-5-32-549
R NT SERVICE\NlaSvc
R NT AUTHORITY\SERVICE   <------  mslldp 서비스 레지스트리 보안 설명자에 추가되어 있어야 함

 

\> sc sdshow mslldp 를 통해서 현재 값 조회

D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)

 

\> sc sdset mslldp D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;CCLCSWLOCRRC;;;SU)

를 통해서 "NT AUTHORITY\SERVICE" 계정을 추가해줌

 

 


2017/10/20

RMAN – 데이터베이스 복구/이전

# 재설치 복원
# 서버 이전 복원 (단순 복사 / RMAN)

동일 경로

  1. 기존 인스턴스 DB 의 DataFile/ControlFile/RedoLog 를 원래 경로에 복사(파티션 백업 복원)

다른 경로

  1. 기존 인스턴스 DB 의 DataFile/ControlFile/RedoLog 를 다른 경로에 복사(파티션 백업 복원)

 

[다른 경로(서버)의 백업 파일만 가져와서 복원]

RMAN> list backup;  -- 현재 카다로그의 백업셋 정보 확인
RMAN> crosscheck backup; -- 비교 검증
RMAN> delete expired backup; -- 기존 백업 'EXPIRED' 상태 제거

채널 ORA_DISK_1 사용 중

백업 조각 목록
BP 키  BS 키  Pc# Cp# 상태      장치 유형 조각 이름
------- ------- --- --- ----------- ----------- ----------
1       15      1   1   EXPIRED     DISK        D:\ORABACKUP\ORCL_01SEH05C_1_1_20170915

 

RMAN> catalog start with 'D:\orabackup2'; -- 백업 경로 변경

D:\orabackup2 패턴과 일치하는 모든 파일 검색 중

데이터베이스에서 알 수 없는 파일 목록
=====================================
파일 이름: D:\orabackup2\ORCL_01SEH05C_1_1_20170915

위의 파일을 분류하겠습니까? (YES 또는 NO 입력) y
파일 분류 중...
분류 작업 완료

 

RMAN> list backup;  -- 복사된 백업파일의 백업셋 정보 다시 확인

 

BS 키  유형 LV 크기       장치 유형 경과된 시간 완료 시간
------- ---- -- ---------- ----------- ------------ ---------
25      Full    9.42M      DISK        00:00:00     17/09/29
        BP 키: 25   상태: AVAILABLE  압축됨: NO  태그: TAG20170929T144247
        조각 이름: D:\ORABACKUP2\ORCL_0FSFM8OB_1_1_20170929
  포함된 SPFILE: 수정 시간: 17/09/29
  SPFILE db_unique_name: TESTDB
  포함된 제어 파일: Ckp SCN: 4648574      Ckp 시간: 17/09/29

 

RMAN>  list incarnation;  -- DB ID 확인
shutdown abort;
startup nomount;
restore controlfile from 'D:\ORABACKUP2\ORCL_0FSFM8OB_1_1_20170929';
alter database mount;

run {
restore database;
recover database noredo;
alter database open resetlogs;
}

 

 


2017/09/29

RMAN – 파라미터파일(spfile) 복구

# 백업셋 조회

RMAN> list backup;
RMAN> list backupset; 

# 제어 파일 복구

RMAN> restore spfile;  -- 데이터베이스가 unmount 상태일 때
RMAN> restore spfile to 'D:\oradata2\spfile_temp.ora';  -- 데이터베이스가 운영중인 경우에는 다른 경로에 복원
RMAN> restore spfile to pfile 'D:\oradata2\init_temp.ora';  -- spfile 을 특정 위치 pfile 로 복원
RMAN> restore spfile from 'D:\ORABACKUP\ORCL_0FSFM8OB_1_1_20170929' -- 특정 백업 조각에서 복원

 

 


RMAN – 제어파일(Control) 복구

# 백업셋 조회

RMAN> list backup;
RMAN> list backupset; 

 

# 제어 파일 복구

RMAN> restore controlfile;  -- 데이터베이스가 unmount 상태일 때
RMAN> restore controlfile from tag TAG20170929T144247; -- 특정 TAG 위치 백업셋으로 복원
RMAN> restore controlfile  from 'D:\ORABACKUP\ORCL_0FSFM8OB_1_1_20170929' -- 특정 백업 조각에서 복원
RMAN> restore controlfile to 'D:\oradata2';  -- 데이터베이스가 운영중인 경우에는 다른 경로에 복원

 

 


RMAN – 테이블/레코드 복구

# 백업셋 조회

RMAN> list backupset; 
RMAN> list backup of database;
RMAN> list backup of datafile "D:\oradata\orcl\test.DBF";
RMAN> list backup of tablespace test;
RMAN> list copy of tablespace "test";

 

-- 일반적인 방법  --

# 별도 데이터베이스에 테이블스페이스/데이터 복원

# 별도 위치에 복원된 데이터에서 특정 테이블 데이터 export

# 원본 데이터베이스의 대상 테이블 or 레코드 삭제후 import

 

-- RMAN 버젼(12c)에서 recover table 지원시  --

RMAN> recover table 대상테이블 until time "to_date('2017-10-10:22:30:50','yyyy-mm-dd:hh24:mi:ss')"  auxiliary  destination 'd:/data/temp';  -- 지정된 시점으로  복원

RMAN> recover table 대상테이블 until scn 10345 auxiliary  destination 'd:/data/temp'; -- 백업 지점으로 테이블 전체 복원

RMAN> recover table 대상테이블 until time "to_date('2017-10-10:22:30:50','yyyy-mm-dd:hh24:mi:ss')"  auxiliary  destination 'd:/data/temp'  remap table scott.test1:test1_temp;  -- 기존 테이블과 별도로 다른 테이블 이름으로 복원

 


2017/09/27

RMAN - 테이블스페이스 복구

# 백업셋 조회

RMAN> list backupset;
RMAN> list backup of database;
RMAN> list backup of datafile "D:\oradata\orcl\USERS01.DBF";
RMAN> list backup of tablespace "USERS";
RMAN> list copy of tablespace "USERS";
RMAN> report schema;  -- 테이블스페이스 정보 확인

 

# 테이블 스페이스 파일 손상/삭제 시  (오프라인 가능시)

RMAN> sql 'alter tablespace users offline immediate'; -- 대상 테이블스페이스 오프라인
RMAN> restore tablespace "USERS"; -- 파일 복구 (가장 마지막 백업본으로 복원. 백업셋/카피 모두 포함)
RMAN> recover tablespace "USERS"; -- 테이블스페스 복구
RMAN> sql 'alter tablespace users online'; -- 다시 온라인

*  백업셋/이미지 목록에서 마지막 백업본 확인 필요 (마지막 백업 이후 수정된 데이터는?)

 

# 테이블 스페이스 파일 손상/삭제시 (오프라인 불가시)

RMAN> shutdown abort;  -- 인스턴스 강제 종료
RMAN> startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;

 

# 테이블 스페이스 파일을 다른 파일명 or 경로에 복원하기 

RMAN> run {
sql 'alter tablespace users offline immediate'; -- 대상 테이블스페이스 오프라인
set newname for datafile 4 to 'D:\app\Administrator\oradata\temp\users01.dbf';  -- 대상 파일 번호의 Datafile 정보 변경
restore tablespace "USERS";
switch datafile 4;
recover tablespace "USERS";
sql 'alter tablespace users online';
}

 


2017/09/15

RMAN - 설정 및 백업

\dbhome_1\BIN>rman target system/xxxx
RMAN> connect target /   -- 현재 계정이 권한이 있는 경우

 

RMAN> show all;   -- 현재 기본 설정값 조회/설정  

# 백업파일 저장 위치 및 파일명 포맷  기본값 설정
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:/orabackup/orcl_%U_%T';

# 전체 데이터 백업 최적화 (이미 백업된 동일한 백업본이 있는 경우 건너뛰기)

RMAN> CONFIGURE BACKUP OPTIMIZATION ON;  

# 로그 삭제 정책

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 0 TIMES TO 'DISK';

# 백업 보전 정책 (2가지중 한가지 선택 적용)

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; (백업후 7일간 보존)
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 5; (최근 백업셋 5개 보존)

 

 

 

RMAN> report schema;  -- DB 테이블스페이스/파일 목록 조회

db_unique_name TESTDB을(를) 가진 데이터베이스에 대한 데이터베이스 스키마 보고서입니다.

영구 데이터 파일 목록
===========================
파일 크기(MB) 테이블스페이스 RB 세그먼트 데이터 파일 이름
---- -------- -------------------- ------- ------------------------
1 700 SYSTEM *** D:\APP\ADMINISTRATOR\ORADATA\TESTDB\SYSTEM01.DBF
2 780 SYSAUX *** D:\APP\ADMINISTRATOR\ORADATA\TESTDB\SYSAUX01.DBF
3 85 UNDOTBS1 *** D:\APP\ADMINISTRATOR\ORADATA\TESTDB\UNDOTBS01.DBF
4 5 USERS *** D:\APP\ADMINISTRATOR\ORADATA\TESTDB\USERS01.DBF

임시 파일 목록
=======================
파일 크기(MB) 테이블스페이스 최대 크기(MB) 임시 파일 이름
---- -------- -------------------- ----------- --------------------
1 197 TEMP 32767 D:\APP\ADMINISTRATOR\ORADATA\TESTDB\TEMP01.DBF

 

RMAN> backup database; -- 모든 Data 백업 (저장 경로는 전역값 참조)
RMAN> backup as compressed backupset  format 'D:/orabackup/orcl_data_%U_%T' database;
(압축,특정경로 지정시)
RMAN> backup tablespace users format 'D:/orabackup/orcl_data_users_%U_%T';
(특정 테이블스페이스만)
RMAN> backup archivelog all; -- 모든 아카이브로그 백업
RMAN> backup as compressed backupset format 'D:/orabackup/orcl_arc_%U_%T' archivelog all;
RMAN> backup archivelog all delete all input;
(로그 백업후 해당 로그 파일 삭제 - 미지정시 기본 정책 적용)
RMAN> copy datafile 'D:/oradata/testdb/USERS01.DBF' to 'D:/orabackup/USERS01.DBF';
(이미지 복사. 활용방법)

차등/증분/블록레벨

backup을(를) 17/09/15에서 시작 중
채널을 할당했습니다: ORA_DISK_1
ORA_DISK_1 채널: SID=1 장치 유형=DISK
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
입력 데이터 파일 파일 번호=00002 이름=D:\APP\ADMINISTRATOR\ORADATA\TESTDB\SYSAUX01.DBF
입력 데이터 파일 파일 번호=00001 이름=D:\APP\ADMINISTRATOR\ORADATA\TESTDB\SYSTEM01.DBF
입력 데이터 파일 파일 번호=00003 이름=D:\APP\ADMINISTRATOR\ORADATA\TESTDB\UNDOTBS01.DBF
입력 데이터 파일 파일 번호=00004 이름=D:\APP\ADMINISTRATOR\ORADATA\TESTDB\USERS01.DBF
채널 ORA_DISK_1: 조각 1을(를) 17/09/15에서 시작 중
채널 ORA_DISK_1: 조각 1을(를) 17/09/15에서 완료
조각 핸들=D:\ORABACKUP\ORCL_01SEH05C_1_1_20170915 태그=TAG20170915T112948 주석=NONE
채널 ORA_DISK_1: 백업 집합 완료. 경과된 시간: 00:00:25
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
백업 집합에 현재 제어 파일을 포함하는 중입니다.
백업 집합에 현재 SPFILE을 포함하는 중입니다.
채널 ORA_DISK_1: 조각 1을(를) 17/09/15에서 시작 중
채널 ORA_DISK_1: 조각 1을(를) 17/09/15에서 완료
조각 핸들=D:\ORABACKUP\ORCL_02SEH065_1_1_20170915 태그=TAG20170915T112948 주석=NONE
채널 ORA_DISK_1: 백업 집합 완료. 경과된 시간: 00:00:01
backup을(를) 17/09/15에서 완료

 

RMAN> list backupset; -- 백업셋 조회 (백업정보는 기본으로 컨트롤파일에 저장)


백업 집합 목록
===================


BS 키 유형 LV 크기 장치 유형 경과된 시간 완료 시간
------- ---- -- ---------- ----------- ------------ ---------
1 Full 1.21G DISK 00:00:19 17/09/15
BP 키: 1 상태: AVAILABLE 압축됨: NO 태그: TAG20170915T112948
조각 이름: D:\ORABACKUP\ORCL_01SEH05C_1_1_20170915
백업 집합 1의 데이터 파일 목록
파일 LV 유형 Ckp SCN Ckp 시간 이름
---- -- ---- ---------- -------- ----
1 Full 3705783 17/09/15 D:\APP\ADMINISTRATOR\ORADATA\TESTDB\SYSTEM01.DBF
2 Full 3705783 17/09/15 D:\APP\ADMINISTRATOR\ORADATA\TESTDB\SYSAUX01.DBF
3 Full 3705783 17/09/15 D:\APP\ADMINISTRATOR\ORADATA\TESTDB\UNDOTBS01.DBF
4 Full 3705783 17/09/15 D:\APP\ADMINISTRATOR\ORADATA\TESTDB\USERS01.DBF

BS 키 유형 LV 크기 장치 유형 경과된 시간 완료 시간
------- ---- -- ---------- ----------- ------------ ---------
2 Full 9.36M DISK 00:00:02 17/09/15
BP 키: 2 상태: AVAILABLE 압축됨: NO 태그: TAG20170915T112948
조각 이름: D:\ORABACKUP\ORCL_02SEH065_1_1_20170915
포함된 SPFILE: 수정 시간: 17/09/14
SPFILE db_unique_name: TESTDB
포함된 제어 파일: Ckp SCN: 3705791 Ckp 시간: 17/09/15

 

RMAN> CROSSCHECK BACKUPSET; -- 백업셋 정보와 파일간 일관성 체크 
RMAN> CROSSCHECK COPY;

RMAN> DELETE NOPROMPT OBSOLETE; -- 사용되지 않는 레코드 삭제 (불일치, 미존재등)
RMAN> DELETE NOPROMPT EXPIRED BACKUP;  -- 만기된 레코드 삭제
RMAN> DELETE NOPROMPT EXPIRED COPY;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;

RMAN> validate database;  -- 백업 유효성 확인

 

# SQL Developer DBA 를 이용하면 GUI 를 이용하여 명령어를 손쉽게 생성 가능

* RUN{} 스크립트를 만들어서  배치 실행 가능
* 리스너 등 그외 서버 설정 파일등은 별도 백업을 진행해야 한다 

 



Oracle-RMAN-1.png
Oracle-RMAN-3.png
Oracle-RMAN-2.png

2017/09/14

Oracle spfile 복구

파라미터 설정을 잘못한 경우 오류가 발생하여, DB 시작이 안되는 경우에 활용

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORA-16032: parameter xxxxx destination string cannot be translated
ORA-09291: sksachk: invalid device specified for archive destination
OSD-04018: ?????? ???????? ???? ?????? ???????? ?? ????????.
O/S-Error: (OS 123) ???? ????, ???????? ???? ???? ???? ?????? ?????? ??????????????.

 

SQL> conn system/xxxx as sysdba

[pfile 지정하여 마운트 - 기본 설치값 또는 백업용 지정]
SQL> startup mount pfile=D:\app\Administrator\product\11.2.0\dbhome_1\database\INITTESTDB.ORA
ORACLE 인스턴스가 시작되었습니다.  

[오류가 있는 spfile 을 참조하여 pfile 생성 - 생성된 pfile 에서 오류 부분 수정]
SQL> create pfile from spfile;
파일이 생성되었습니다. (경로는,  설치 기본 경로를 참조 "dbhome_1\database\")

[수정된 pfile 을 참조하여 다시 spfile 생성]
SQL> create spfile from pfile; 
파일이 생성되었습니다.

[백업 보관용으로 pfile 생성]
SQL> create pfile from spfile;

SQL> shutdown immediate
SQL> startup

 

 



Oracle-spfile-1.png

Oracle Archive Log Mode 설정

# SQL Plus

[DB 확인]
SQL> select name from v$database;
NAME
---------
TESTDB

[Archive Log 설정 확인]
SQL> archive log list;
ORA-01031: 권한이 불충분합니다
SQL> conn system/passwd as sysdba
연결되었습니다.
SQL> archive log list;
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함으로 설정됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 135
현재 로그 순서 137

[Archive Log 속성  적용 - 특정 경로, 파일명 필요시]
SQL> alter system set log_archive_dest_1='location=D:\app\Administrator\oradata\testdb\archive1' scope=spfile;
SQL> alter system set log_archive_dest_2='location=D:\app\Administrator\oradata\testdb\archive2' scope=spfile;
SQL> alter system set log_archive_format="%s_%t_%r.arc" scope=spfile;

[DB 종료]
SQL> shutdown immediate;

[DB Mount]
SQL> startup mount;

[Archive Log 설정  확인]
SQL> archive log list;
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함으로 설정됨
아카이브 대상 D:\app\Administrator\oradata\testdb\archive2
가장 오래된 온라인 로그 순서 135
현재 로그 순서 137

[DB Archive Log Mode 설정]
SQL> alter database archivelog;

데이타베이스가 변경되었습니다.

[Archive Log 설정  확인]
SQL> archive log list;
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용으로 설정됨
아카이브 대상 D:\app\Administrator\oradata\testdb\archive2
가장 오래된 온라인 로그 순서 135
아카이브할 다음 로그 137
현재 로그 순서 137

[DB 활성]
SQL> alter database open;
데이타베이스가 변경되었습니다.

[Archive Log 파일 변경 테스트]
SQL> alter system switch logfile;
시스템이 변경되었습니다.

 

 



Oracle-ArchiveLog-1.png

2017/09/11

Oracle Export, Import (백업/복원)

# Export 백업

exp userid=system/manager file='C:\full.dmp' full=y
exp userid=system/manager@SIDName file='C:\full.dmp' full=y (특정SID백업)
exp userid=scott/tiger file='C:\scott.dmp' (특정 소유자 개체 전체)
exp userid=system/manager file='C:\data.dmp' TABLESPACES=USERS (특정 테이블스페이스)
exp userid=system/manager file='C:\data.dmp' TABLES=(a,b) (특정 테이블)

 

# Import 복원

imp userid=system/system file='C:\full.dmp' full=y
imp userid=system/system@SIDName file='C:\full.dmp' full=y (특정SID복원)
- 복원하려는 시스템에 동일한 SID 가 존재해야 함


imp userid=system/manager owner=scott file='C:\scott.dmp'
- 복원하려는 시스템에 동일한 DB 계정 및 TableSpace 가 존재해야 함 (SID는 상관없음)

imp userid=system/system@SIDName file='C:\full.dmp' FROMUSER=scott TOUSER=scott2 tables=(a,b) 
- 특정 소유자 테이블을 다른 소유자 테이블로 복원

impdp  file=blog_data.dmp directory=mydir remap_tablespace=USERS:DATA
- 다른 테이블스페이스에 복원


exp --------------------------------------------------------------------------
USERID 사용자 이름/비밀번호    FULL 전체 파일 익스포트(N)
BUFFER 데이터 버퍼 크기    OWNER 소유자 사용자 이름 목록
FILE 출력 파일(EXPDAT.DMP)     TABLES 테이블 이름 목록
COMPRESS 하나의 확장 영역으로 임포트(Y)     RECORDLENGTH IO 레코드 길이
GRANTS 권한 부여 익스포트(Y)    INCTYPE 증분 익스포트 유형
INDEXES 인덱스 익스포트(Y)     RECORD 증분 익스포트 추적(Y)
DIRECT 직접 경로(N)     TRIGGERS 트리거 익스포트(Y)
LOG 화면 출력의 로그 파일     STATISTICS 객체 분석(ESTIMATE)
ROWS 데이터 행 익스포트(Y)    
CONSISTENT 테이블간 일관성(N)     CONSTRAINTS 제약 조건 익스포트(Y)
QUERY 테이블의 부분 집합을 엑스포트하는 데 사용하는 select 절
TTS_FULL_CHECK TTS에 대한 전체 또는 부분 종속성 검사 수행
TABLESPACES 익스포트할 테이블스페이스 목록

imp --------------------------------------------------------------------------
USERID 사용자명/비밀번호 FULL 파일 전체 임포트 (N)
BUFFER 데이터 버퍼의 크기 FROMUSER 소유 사용자명 목록
FILE 입력 파일들 (EXPDAT.DMP) TOUSER 사용자명의 목록
SHOW 파일 목차만 목록 (N) TABLES 테이블명 목록
IGNORE 생성 오류 무시 (N) 
GRANTS 권한부여 임포트 (Y) INCTYPE 증분 임포트 유형
INDEXES 인덱스 임포트 (Y) COMMIT 배열 삽입 커밋 (N)
ROWS 데이터 행 임포트 (Y) 
LOG 화면 출력의 로그 파일 CONSTRAINTS 제약조건을 임포트 (Y)
DESTROY 테이블스페이스 데이터 파일 겹쳐쓰기(N)
INDEXFILE 지정된 파일에 테이블/인덱스 정보 쓰기
DATA_ONLY 데이터만 임포트(N)

 


Oracle Listener / Tnsnames / Sqlnet 설정

listener.ora (서버) / tnsnames.ora (클라이언트)  / sqlnet.ora 파일 편집시, 포맷 오류 또는 오타등이 발생할수 있으므로 직접 편집 보다는 아래와 같은 툴을 활용하여 수정

- Oracle Net Configuration Assistant
- Oracle Net Manager
- 파일 위치 ex, File : \app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

 

# 서버 서비스 제어 \dbhome_1\BIN>lsnrctl
  LSNRCTL> stop  (설정값 변경후에는 재시작 권장)
  LSNRCTL> start
  LSNRCTL> service
  LSNRCTL> status

 

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-9IHO67M3NVF)(PORT=1521)))
서비스 요약...
"CLRExtProc" 서비스는 1개의 인스턴스를 가집니다.
"CLRExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"testdb" 서비스는 1개의 인스턴스를 가집니다.
"testdb" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
명령이 성공적으로 수행되었습니다

 

# 클라이언트 확인 \dbhome_1\BIN>tnsping.exe testdb

별칭 분석을 위해 TNSNAMES 어댑터 사용
DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-9IHO67M3NVF)(PORT = 1521)) (CONNECT_DATA = (SE
VER = SHARED) (SERVICE_NAME = testdb)))에 접속하려고 시도하는 중
확인(0밀리초)

 


Oracle Net Manager - 리스너 설정등

- 프로파일
- 서비스 이름 지정
- 리스너 설정
   (ex, File : \app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
   Service : OracleOraDb11g_home1TNSListener)

 



oracle-Net-Manager-1.png

2017/09/08

Oracle Net Configuration Assistant - 리스너 구성 등

Oracle Net Configuration Assistant 를 활용하면, 리스너 구성 등 연결, 네트워크 구성등을 할수 있습니다. 물론 환경설정 파일을 직접 수정해도 되지만 오타 또는 포맷에 맞지 않는 경우 오류가 발생하므로, 기본 제공되는 툴을 활용하는 것도  좋은 방법입니다.

리스너 : 추가, 재구성, 삭제, 이름 바꾸기
   (ex, File : \app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
   Service : OracleOraDb11g_home1TNSListener)

 

 



oracle-Net-Configuration-1.png

Oracle Database 추가/구성/삭제 - Database Configuration Assistant

Database Configuration Assistant 를 사용하여, 인스턴스를 추가로 설치하거나 이미 설치된 인스턴스를 제거할수 있습니다. 

 



oracle-Configuration-1.png

Oracle Database 설정 - Administration Assistant

Oracle 설치 완료후, 설치된 인스턴스의 설정을 변경하고자 하는 경우.
* 물론 쿼리 명령어를 사용해도 되지만, 편리한 도구가 있으면 먼저 활용해 보는것도...

 

 

- Oracle 홈 : 기본 SID, control 파일 위치등 Oracle 작동 환경 설정값 
- OS 데이터베이스 관리자/운영자 (Oracle 제어 가능한 Windows 인증 계정)
- 인스턴스의 시작/정지/옵션/프로세스. Windows 인증 계정, Role 설정

 

ex, 
아래와 같은 오류시 현재 sqlplus 를 실행하는 계정이 윈도우 "ora_dba" 그룹에 포함되어 있지 않아서 권한이 없는 경우로, Administration Assistant 의 "OS 데이터베이스  관리자 - 컴퓨터" 에 계정을 추가해 주면 됨.

SQL> conn /as sysdba;
ERROR:
ORA-01031: insufficient privileges

"ora_dba" 그룹에 기본으로 포함되어 있는 계정 : LocalSystem, Oracle 설치시 사용된 계정

 

 



oracle-Administration-1.png

2017/08/31

MSSQL DB 분리시 연결 해제/차단

여러곳에서 연결을 해서 사용중인 DB 의 분리는, 계속해서 외부나 기타 App 에서 연결을 시도하기 때문에 단일 사용자 모드로 변경해도 오류가 발생하면서 진행되지 않을수 있음.

ALTER DATABASE 대상DB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
=> 다중 접속 서비스의 DB의 경우, 단일로 변경되어도 이미 그 단일 1개 연결이 즉시 되어 있어서 DB 분리 에러가 발생함

메시지 3703, 수준 16, 상태 2, 줄 1
데이터베이스 '대상DB'은(는) 현재 사용 중이므로 분리할 수 없습니다.

 

1. 방화벽을 통해서  SQL Port 를 차단하여 서버 외부 연결 방지
2. MSSQL 서비스외, SQLAgent 등 SQL 관련 다른 서비스를 모두 중지
3. 작업모니터 또는 프로세스 Kill 쿼리를 사용하여 대상 DB 연결 프로세스 모두 종료
4. DB 분리  EXEC sp_detach_db '대상DB', 'true';

 

* 주의 : Management Studio 와 같은 도구 이용시, DB목록을 열거 후  대상 DB를 선택하면 1개 연결이 되버리므로, DB 분리 쿼리문 연결 외  다른 연결이 되지 않도록 주의 필요

 


- 멀티 접속으로 변경시 ALTER DATABASE 대상DB SET MULTI_USER WITH ROLLBACK IMMEDIATE

- 아래와 같은 프로세스 kill 쿼리문과 함께 DB 분리 프로시져 쿼리문을 바로 붙여서 같이 실행

USE [master]
GO
SET NOCOUNT ON

DECLARE @DBName VARCHAR(50);
DECLARE @spidstr VARCHAR(8000);
DECLARE @ConnKilled SMALLINT

SET @ConnKilled = 0
SET @spidstr = ''
SET @DBName = '대상DB'

IF db_id(@DBName) < 4 

BEGIN 
           PRINT 'Connections to system databases cannot be killed'
           RETURN
END

SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; '
FROM master..sysprocesses WHERE dbid=db_id(@DBName)

IF LEN(@spidstr) > 0

BEGIN
           EXEC(@spidstr)
           SELECT @ConnKilled = COUNT(1)  FROM master..sysprocesses
           WHERE dbid=db_id(@DBName)
END

 


2017/07/12

MSSQL LocalSystem 계정으로 로그온

psexec -i -s "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"

이 방법은, NT AUTHORITY\SYSTEM 계정이 SQL 계정 목록에 포함되어 있고, 적절한 권한이 할당 되어 있는 경우에, 사용자 계정 정보 없이 LocalSystem 계정으로 Management Studio 를 이용하여 SQL 에 접근하는 방법. (주로 관리자 계정 정보를 알수 없는 경우에 활용)

psexec 가 간단하지만, 그외 LocalSystem 계정으로 실행되는 여러가지 프로세스 또는 서비스를 활용해도 가능함.

 

 

 


2017/04/28

netsh - portproxy, nat (port forwarding)

netsh interface portproxy add v4tov4 listenport=4389 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33

netsh interface portproxy add v4tov4 listenport=4389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101


netsh interface portproxy add v4tov4 listenport=4389  connectport=3389 connectaddress= 192.168.100.103 protocol=tcp


netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.100.101
netsh interface portproxy show all
netsh interface portproxy reset

"IP Helper" service 


netsh routing ip nat add portmapping "LAN NAME" tcp 0.0.0.0 5118  192.168.0.3 8182

 


2017/04/17

중국 주요 IP 할당 대역 (방화벽 차단용)

IP 할당 블럭중에, 한국쪽으로 해킹/스캔 이력이 있었거나 넓은 폭으로 중국에서 할당 받은 대역 목록.

해외에서 해킹 접속건이 가장 많고 빈번한 곳이 중국으로, 중국쪽에 접속 서비스를 하지 않으면서  접근 시도가 있는 경우 방화벽에서 차단해 보는 것도 좋음.  (차단 목록이 많으므로 대량 접속 서버/방화벽에서는 부하를 잃으킬 수 있으니 주의 필요)

 

14.16.0.0-14.31.255.255,
14.103.0.0-14.127.255.255,
14.144.0.0-14.159.255.255,
27.184.0.0-27.227.255.255,
36.96.0.0-36.223.255.255,
39.64.0.0-39.108.255.255,
39.128.0.0-39.191.255.255,
42.128.0.0-42.143.255.255,
42.156.36.0-42.187.123.255,
42.202.0.0-42.240.255.255,
47.92.0.0-47.127.255.255,
49.64.0.0-49.95.255.255,
58.30.0.0-58.63.255.255,
58.192.0.0-58.223.255.255,
58.240.0.0-58.255.255.255,
59.32.0.0-59.83.255.255,
59.192.0.0-60.31.255.255,
60.160.0.0-60.191.255.255,
60.200.0.0-60.223.255.255,
61.128.0.0-61.191.255.255,
61.232.0.0-61.237.255.255,
61.240.0.0-61.243.255.255,
101.4.0.0-101.7.255.255,
101.16.0.0-101.49.255.255,
101.64.0.0-101.78.3.255,
101.80.0.0-101.96.11.255,
101.104.0.0-101.107.255.255,
101.120.0.0-101.126.255.255,
101.129.0.0-101.135.255.255,
101.144.0.0-101.159.255.255,
101.192.0.0-101.201.255.255,
101.224.0.0-101.233.255.255,
101.236.0.0-101.249.255.255,
101.251.8.0-101.254.255.255,
103.32.0.0-103.35.51.255,
106.2.0.0-106.9.255.255,
106.11.0.0-106.50.255.255,
106.52.0.0-106.63.255.255,
106.80.0.0-106.95.255.255,
106.108.0.0-106.127.255.255,
106.224.0.0-106.239.255.255,
110.16.0.0-110.19.255.255,
110.40.0.0-110.43.255.255,
110.51.0.0-110.53.255.255,
110.56.0.0-110.65.255.255,
110.80.0.0-110.91.255.255,
110.94.0.0-110.127.255.255,
110.152.0.0-110.157.255.255,
110.176.0.0-110.223.255.255,
110.240.0.0-111.63.255.255,
111.72.0.0-111.79.255.255,
111.112.0.0-111.117.255.255,
111.126.0.0-111.167.255.255,
111.172.0.0-111.183.255.255,
111.192.0.0-111.215.255.255,
111.224.0.0-111.231.255.255,
112.0.0.0-112.63.162.115,
112.63.162.152-112.67.255.255,
112.80.0.0-112.103.255.255,
112.192.0.0-112.195.255.255,
112.224.0.0-113.9.255.255,
113.12.0.0-113.18.255.255,
113.24.0.0-113.27.255.255,
113.44.0.0-113.51.255.255,
113.54.0.0-113.59.127.255,
113.62.0.0-113.129.255.255,
113.132.0.0-113.143.255.255,
113.218.0.0-113.251.255.255,
114.80.0.0-114.107.255.255,
114.208.0.0-114.255.255.255,
115.44.0.0-115.63.255.255,
115.100.0.0-115.107.255.255,
115.148.0.0-115.159.255.255,
115.168.0.0-115.175.255.255,
115.190.0.0-115.239.255.255,
116.1.0.0-116.11.255.255,
116.16.0.0-116.31.255.255,
116.52.0.0-116.57.255.255,
116.128.0.0-116.192.255.255,
116.228.199.140-116.236.185.219,
116.242.0.0-116.249.255.255,
117.8.0.0-117.15.255.255,
117.21.0.0-117.45.255.255,
117.59.0.0-117.73.255.255,
117.74.128.0-117.95.255.255,
117.112.0.0-117.119.255.255,
117.124.0.0-117.191.255.255,
118.72.0.0-118.81.255.255,
118.112.0.0-118.126.255.255,
118.193.96.0-118.199.255.255,
118.224.0.0-118.230.255.255,
118.244.0.0-119.2.31.255,
119.2.128.0-119.8.255.255,
119.27.0.0-119.40.255.255,
119.48.0.0-119.55.255.255,
119.84.0.0-119.91.255.255,
119.96.0.0-119.103.255.255,
119.112.0.0-119.147.255.255,
119.148.160.0-119.148.191.255,
119.161.120.0-119.167.255.255,
119.176.0.0-119.191.255.255,
119.252.240.0-120.15.255.255,
120.30.0.0-120.49.255.255,
120.64.0.0-120.71.255.255,
120.76.0.0-120.87.255.255,
120.128.0.0-120.135.255.255,
120.192.0.0-120.255.255.255,
121.8.0.0-121.43.255.255,
121.192.0.0-121.199.255.255,
121.224.0.0-121.239.255.255,
122.4.0.0-122.8.255.255,
122.64.0.0-122.97.255.255,
122.136.0.0-122.143.255.255,
122.188.0.0-122.195.255.255,
122.226.204.104-122.247.255.255,
123.4.0.0-123.15.255.255,
123.52.0.0-123.59.255.255,
123.64.0.0-123.98.127.255,
123.112.0.0-123.135.255.255,
123.144.0.0-123.175.255.255,
123.249.0.0-123.249.255.255,
124.67.0.0-124.79.255.255,
124.88.0.0-124.95.255.255,
124.112.0.0-124.119.255.255,
124.126.0.0-124.135.255.255,
124.160.0.0-124.167.255.255,
124.200.0.0-124.207.255.255,
124.220.0.0-124.240.191.255,
125.31.192.0-125.47.255.255,
125.64.0.0-125.98.255.255,
125.104.0.0-125.127.255.255,
125.216.0.0-125.223.255.255,
139.196.0.0-139.215.255.255,
171.8.0.0-171.15.255.255,
171.34.0.0-171.47.255.255,
171.80.0.0-171.95.255.255,
171.104.0.0-171.127.255.255,
171.208.0.0-171.223.255.255,
175.0.0.0-175.27.255.255,
175.46.0.0-175.95.255.255,
175.146.0.0-175.155.255.255,
175.160.0.0-175.175.255.255,
175.185.0.0-175.191.255.255,
180.95.128.0-180.127.255.255,
180.136.0.0-180.143.255.255,
180.152.0.0-180.168.81.51,
180.168.170.80-180.175.255.255,
182.32.0.0-182.47.255.255,
182.96.0.0-182.151.255.255,
182.200.0.0-182.207.255.255,
182.240.0.0-182.247.255.255,
183.0.0.0-183.71.255.255,
183.128.0.0-183.170.255.255,
183.184.0.0-183.255.255.255,
202.97.128.0-202.120.24.223,
202.120.25.0-202.122.7.255,
202.192.243.0-202.207.255.255,
210.25.0.0-210.31.210.3,
210.31.210.8-210.47.255.255,
210.72.0.0-210.78.255.255,
211.64.0.0-211.71.255.255,
211.80.0.0-211.103.255.255,
211.136.0.0-211.160.50.255,
211.160.54.0-211.167.255.255,
218.0.0.0-218.30.55.255,
218.56.0.0-218.80.233.127,
218.80.233.132-218.99.255.255,
218.104.0.0-218.109.255.255,
218.192.0.0-218.207.255.255,
218.240.0.0-218.247.255.255,
219.128.0.0-219.159.255.255,
219.216.0.0-219.239.255.255,
219.242.0.0-219.247.255.255,
220.160.0.0-220.207.255.255,
220.248.0.0-220.252.255.255,
221.0.0.0-221.12.191.255,
221.172.0.0-221.183.255.255,
221.192.0.0-221.199.207.255,
221.199.224.0-221.239.255.255,
222.16.0.0-222.68.180.211,
222.68.180.216-222.95.255.255,
222.128.0.0-222.143.255.255,
222.168.0.0-222.223.255.255,
222.240.0.0-222.249.255.255,
223.0.0.0-223.15.255.255,
223.64.0.0-223.117.255.255,
223.120.0.0-223.129.255.255,
223.144.0.0-223.163.255.255,
223.208.0.0-223.215.255.255,
223.240.0.0-223.251.255.255

 


2017/03/16

네트워크 프로파일 변경 (Network Profile)

어떤거 하다 보면 모르게 바뀌어 있어서, 좀 짜증나는 것

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

Category 값 수정 :
0 = 공용 네트워크
1 = 개인 네트워크
2 = 도메인 네트워크

 


2017/03/14

코드사인 .spc .pvk 조합하여 .pfx 변환

예제

pvkimprt -import -pfx mycert.spc mycert.pvk  실행하면, 패스워드 확인창 후 .pfx 내보내기 창에서 저장

pvkimprt

 

 

 


2017/02/04

PostgreSQL initdb.exe 실행시 The program "postgres" is needed by initdb but was not found 오류

PostgreSQL 최초 설치시, initdb.exe 를 실행하면 아래와 같은 오류가 발생할수 있음.

The program "postgres" is needed by initdb but was not found in the
same directory as "D:\PostgreSQL\9.6\bin\initdb.exe".
Check your installation.

=> 위 오류가 발생하는 이유는 initdb.exe 가 pgsql 이 존재하는 그리고 data 로 지정된 폴더에 대해서 Windows 권한을 체크하기 때문

그래서 현재 설치를 실행하는 Windows 계정명에 대해서, pgsql 폴더에 대해서 명시적으로 권한 설정을 해줘야 함.(Administrators 그룹에 들어가 있다고 해서 권한이 충분해서 되는것이 아니라, 명시적으로 계정명을 확인)

 

----- 정상적으로 권한이 확인되는 경우 -----

D:\PostgreSQL\9.6\bin>initdb.exe -U postgres -A password -W -E utf8 -D D:\PostgreSQL\9.6\data
이 데이터베이스 시스템에서 만들어지는 파일들은 그 소유주가 "Administrator" id로
지정될 것입니다. 또한 이 사용자는 서버 프로세스의 소유주가 됩니다.

데이터베이스 클러스터는 "Korean_Korea.949" 로케일으로 초기화될 것입니다.
initdb: "Korean_Korea.949" 로케일에 알맞은 전문검색 설정을 찾을 수 없음
기본 텍스트 검색 구성이 "simple"(으)로 설정됩니다.

자료 페이지 체크섬 기능 사용 하지 않음

새 superuser 암호를 입력하십시오:
암호 확인:

이미 있는 D:/PostgreSQL/9.6/data 디렉터리의 액세스 권한을 고치는 중 ...완료
하위 디렉터리 만드는 중 ...완료
max_connections 초기값을 선택하는 중 ...100
기본 shared_buffers를 선택하는 중... 128MB
사용할 동적 공유 메모리 관리방식을 선택하는 중 ... windows
환경설정 파일을 만드는 중 ...완료
부트스트랩 스크립트 실행 중 ... 완료
부트스트랩 다음 초기화 작업 중 ... 완료
자료를 디스크에 동기화 하는 중 ... 완료

작업완료. 이제 다음 명령을 이용해서 서버를 가동 할 수 있습니다:

    "pg_ctl" -D "D:\PostgreSQL\9.6\data" -l 로그파일 start

 


가장 많이 본 글