반응형

오라클 서버 설치후 시스템 계정의 비밀번호를 까먹는 경우가 종종 있습니다.

이럴때 간단하게 시스템 계정의 비밀번호를 찾는 방법이 있어 포스팅 해보겠습니다.

또한, 일반 사용자에 대한 비밀번호 변경 하는 방법도 포스팅 하겠습니다.

 

 

1. 시스템 계정 비밀번호 찾기

  - 기본 시스템 계정은 sys , system 계정이 있습니다.

 

1-1. "Run SQL Command" 사용시

  가. 오라클 11g를 설치 할 경우 "Run SQL Command Line" 을 실행 합니다.

 

  나. conn 입력 후 엔터치면 사용자 명을 입력 하라고 합니다.

 

  다.  사용자명에 "sys as sysdba" 입력 합니다.

 

  라. 비밀번호는 없이 엔터를 입력 합니다.

 

  마. 그럼 Connected. 라고 하면서 접속이 됩니다.

 

  바. 접속 후 alter user sys identified by 1234; 로 비밀번호를 변경 합니다.

       (sys 는 계정명 입니다. 1234 는 변경할 비밀번호 입니다.)

 

  사. 또한, system 계정의 비밀번호도 변경 합니다.

 

   - Run SQL Command Line 실행 캡쳐 화면

 

1-2 cmd 사용시

  가. 윈도우에 보조프로그램에 명령프롬프트 실행

       또는 윈도우+r 실행 후 cmd 입력후 실행

 

  나. sqlplus 입력 합니다.

 

  다.  사용자명에 "sys as sysdba" 입력 합니다.

 

  라. 비밀번호는 없이 엔터를 입력 합니다.

 

  마. 그럼 Connected. 라고 하면서 접속이 됩니다.

 

  바. 접속 후 alter user sys identified by 1234; 로 비밀번호를 변경 합니다.

       (sys 는 계정명 입니다. 1234 는 변경할 비밀번호 입니다.)

 

  사. 또한, system 계정의 비밀번호도 변경 합니다.

 

   cmd 창으로 비밀번호 변경 실행 화면 캡쳐

 

 

2. 일반 사용자 비밀번호 변경

  - 일반 사용자의 비밀번호는 DBA권한이 있는 sys 계정으로 접속해야 합니다.

  - 접속후 alter user 계정 identified by 비밀번호; 명령으로 비밀번호 변경이 가능합니다.

  - 변경 후 conn 명령으로 계정 접속을 해봅니다. (저는 TUSER 계정의 비밀번호 변경 후 접속 해 보았습니다.)

 

 

 

 

일반사용자 및 시스템계정의 비밀번호 변경에 대해서 알아보았습니다.

비밀번호는 단순하게 1234로 변경 하였지만, 실제로 사용하시는 비밀번호는 특수문자 및 대소문자가 포함된 비밀번호를 사용하시기 바랍니다.

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

begin 
         FOR cur IN (SELECT OBJECT_NAME, OBJECT_TYPE
           FROM sys.USER_objects 
           WHERE  status = 'INVALID' ) LOOP 
          BEGIN
         if cur.OBJECT_TYPE = 'PACKAGE BODY' then 
          EXECUTE IMMEDIATE 'alter ' || cur.OBJECT_TYPE || ' "' ||  cur.OBJECT_NAME || '" compile body'; 
         else 
          EXECUTE IMMEDIATE 'alter ' || cur.OBJECT_TYPE || ' "' || cur.OBJECT_NAME || '" compile'; 
         end if; 
EXCEPTION
   WHEN OTHERS THEN NULL; 
END;
         end loop; 
         end;
         

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

SELECT
  TO_CHAR(NEXT_TIME,'YY/MM/DD(DY) HH24') "NEXT_TIME"
, COUNT(DISTINCT NAME) "TOTAL_ARC_COUNT"
, ROUND(SUM(DISTINCT BLOCKS*BLOCK_SIZE)/1024/1024/1024,2) "TOTAL_SIZE_GB"
, SUM(CASE WHEN INST_ID = 1 AND THREAD# = 1 THEN 1 ELSE 0 END) "RAC1"
, SUM(CASE WHEN INST_ID = 2 AND THREAD# = 2 THEN 1 ELSE 0 END) "RAC2"
, SUM(CASE WHEN INST_ID = 3 AND THREAD# = 3 THEN 1 ELSE 0 END) "RAC3"
, SUM(CASE WHEN INST_ID = 4 AND THREAD# = 4 THEN 1 ELSE 0 END) "RAC4"
FROM GV$ARCHIVED_LOG
WHERE NEXT_TIME >= TRUNC(SYSDATE) -10
GROUP BY TO_CHAR(NEXT_TIME,'YY/MM/DD(DY) HH24')
ORDER BY 1;



select * 
  from GV$ARCHIVED_LOG;
  
  
  select * from v$recovery_file_dest;
  
  select * from V$ARCHIVED_LOG;
  
  select * from v$archive;
  
  select * from v$log;
  
  select * from v$archive_dest;
  
  select * from v$archive_processes;
 
 select dest_name, name, sequence#, b.status
  from v$archive_dest a, v$archived_log b
  where a.dest_id = b.dest_id;

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

오라클(oracle) 락(lock) 확인 및 제거(kill)
============================================================================

 

-- 락걸린 테이블 확인
SELECT do.object_name, do.owner, do.object_type, do.owner,
vo.xidusn, vo.session_id, vo.locked_mode
FROM
v$locked_object vo , dba_objects do
WHERE vo.object_id = do.object_id ;

 

 

--해당테이블이 락에 걸렸는지..

SELECT A.SID, A.SERIAL#, B.TYPE, C.OBJECT_NAME
FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C
WHERE A.SID=B.SID AND B.ID1=C.OBJECT_ID
AND B.TYPE='TM' AND C.OBJECT_NAME IN ('테이블명');

 

 

/* 락발생 사용자와 sql, object 조회 */

SELECT distinct x.session_id, a.serial#,
d.object_name, a.machine, a.terminal,
a.program, b.address, b.piece, b.sql_text
FROM v$locked_object x, v$session a, v$sqltext b, dba_objects d
WHERE x.session_id = a.sid and
x.object_id = d.object_id and
a.sql_address = b.address
order by b.address,b.piece;

 

 

/* 락 발생 사용자확인 */

SELECT distinct x.session_id, a.serial#,
d.object_name, a.machine, a.terminal, a.program,
a.logon_time , 'alter system kill session ''' || a.sid || ', ' || a.serial# || ''';'
FROM gv$locked_object x, gv$session a, dba_objects d
WHERE x.session_id = a.sid and x.object_id = d.object_id
order by logon_time;

 

 

/* 접속 사용자 제거 */

--alter system kill session 'session_id,serial#';
alter system kill session '26,6044';

 

 

/* 현재 접속자의 sql 분석 */

SELECT distinct a.sid, a.serial#,
a.machine, a.terminal, a.program,
b.address, b.piece, b.sql_text
FROM v$session a, v$sqltext b
WHERE a.sql_address = b.address
order by a.sid, a.serial#,b.address,b.piece;

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

 
oracle: the password has expired.
-오라클 계정의 비밀번호 만료일이 지남. 

# sqlplus /nolog
-로그인 없이 SQL실행 

SQL> connect sys as sysdba
-dba 접속

 

SQL> select * from dba_profiles where profile = 'DEFAULT';
-password_life_time의 값 확인. 180일것임. unlimited로 바꿔야 함.

 

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
-'DEFAULT' profile에서 비밀번호 만료일을 unlimited로 변경.



SQL> alter user 계정명 account unlock;
-계정 락 해제.

 

SQL> alter user 계정명 identified by 새비밀번호; 
-만료된 비밀번호 다른 비밀번호로 변경. 
 

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

① NOMOUNT 단계

□ $ORACLE_HOME/dbs 에서 파라메터 파일 검색

  1.spfile<SID>.ora를 검색

  2. spfile<SID>.ora가 없으면 spfile.ora를 검색

  3. spfile.ora가 없으면 init<SID>.ora를 검색

□ SGA 할당

□ BACKGROUND PROCESS 시작

□ alert_<SID>.log 파일 및 Trace file 열기

■ NOMOUNT 모드에서 할 수있는 작업 : 데이터베이스 생성, 콘트롤 파일 재생성, 특정 백업 및 Recovery

나리오 실행

 

 

② MOUNT 단계

□ INSTANCE DATABASE 연결

□ PARAMETER FILE 에 지정된 CONTROL FILE OPEN

□ CONTROL FILE 을 확인하여 DATA FILE + REDO LOG FILE 경로 및 이름 확인( *DATA FILE, REDO LOG

FILE 을 여는것이 아님을 주의!경로와 이름만 확인 하는것 임.)

■ MOUNT 모드에서 할 수 있는 작업 : 데이터 파일의 이름/위치 바꾸기(*오프라인 T/S에 대한 데이터 파

일의 이름은 데이터베이스가 열린 상태에서도 바꿀 수 있음, *시스템 T/S에 대한 장애발생시 마운트 단

계에서만 가능!), 온라인 리두로그 파일 아카이브 모드 변경(ARCHIVE OR NOARCHIVE MODE) , 전체 데

이터 베이스 RECOVERY.

* : T/S -> 테이블 스페이스

 

 

③ OPEN 단계

□ NOMOUNT 단계에서 시작된 INSTANCE에 지정된 컨트롤 파일을 참조한뒤 ALL FILE(DATA FILE+

ONLINE REDO LOG FILE) OPEN

□ DATA FILE OPEN

□ ONLINE REDO LOG FILE OPEN

■ OPEN 모드에서 할 수 있는 작업 :1. 정상적인 데이터베이스 운영 상태에서는 유효한 모든 유저가 데이터

베이스에 연결하여 일반적인 데이터 액세스 작업을 수행할 수 있다.

2. DATA FILE 이나 ONLINE REDO LOG FILE이 없으면 open이 되지않으며 오류가 발생한다.

3. 오라클 서버는 DATA FILE 이나 ONLINE REDO LOG FILE 의 위치 OPEN 가능여부를 확인하고 파일을 확인하고 데이터 베이스일관성을 검사.

4. 필요한 경우 SMON(시스템 모니터) 백그라운드 프로세스가 Instance Recovery를 시작.

 

 

④ ORACLE STARTUP 종류

일반 시작

【일반 시작】

SQL> STARTUP OPEN 단계까지 자동으로 시작

【특정 파라메터 파일을 이용한 일반 시작】

SQL> STARTUP pfile=/data1/pfile/init<SID>.ora;

      *<SID>값은 해당 DB SID값으로 수정해서 사용.


【노마운트/마운트/오픈 단계별로 시작】

SQL> STARTUP NOMOUNT STARTUP으로 시작한뒤 MOUNT단계 로 넘어가고자 할 땐

ALTER DATABASE 사용(참고: NOMOUNT단계에서 MOUNT

단계를 건너뛰고 바로 OPEN을 할수는없음!)

SQL> STARTUP MOUNT

SQL> ALTER DATABASE OPEN;

* STARTUP SHUTDOWN NOMOUNT MOUNT OPEN은 가능하고 역으로 내려오는것은 안된다. OPEN MOUNT NOMOUNT 로는 안되고 하위단계(오픈 → 노마운트/마운트) 로 내려가고자할땐 SHUTDOWN 명령어를 통해 전체 데이터베이스를 내린뒤(SHUTDOWN 상태) 다시 원하는 단계(노마운트/마운트 단계)로 올려야한다.

 

제한된 모드로 시작

1. 제한된 모드로 데이터 베이스를 시작하면 RESTRICTED SESSION 권한을 가진 유저만 데이터 베이스에

접속할수 있다.

SQL> STARTUP RESTRICT DB SHUTDOWN 상태에서 제한된 모드로 시작 할경우.

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; DB OPEN 상태에서 제한된 모드 설정.

SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION; DB OPEN 상태에서 제한된 모드 해제.

 

읽기 전용 모드로 시작

1.DML(INSERT, DELETE, UPDATE) 명령과 DDL(CREATE, DROP, ALTER) 명령이 불가능하며 조회를 하기위한

SELECT 명령만 가능함.

2.읽기 전용 모드는 MOUNT 상태에서 설정해야함.

SQL> STARTUP MOUNT

SQL>ALTER DATABASE OPEN READ ONLY;

 

 

오라클 데이터 베이스 SHUTDOWN 종류

종료 종류

추가 접속 시도

접속중인 세션

수행중인 작업

취소된 작업 롤백 여부

NOMAL

혀용안함

종료까지 대기

수행

-

TRANSACTIONAL

허용안함

작업중인 세션은 종

료까지 대기

수행

-

IMMEDIATE

허용안함

강제종료

강제종료

O

ABORT

허용안함

강제종료

강제종료

X

 

① NOMAL

데이터베이스에 접속한 유저가 존재하면 해당 유저가 접속 종료할때 까지 대기했다가 데이터 베이스 종료

 

② TRANSACTIONAL

종료 명령을 수행한 시점에 처리되던 SQL이 종료할 때까지 대기 했다가 데이터베이스를 종료.

 

③ IMMEDIATE

종료 명령을 수행한 시점에 처리되던 SQL을 취소시키고 해당 SQL에 대한 롤백이 완료되면 데이터베이스를 종료

 

④ ABORT

종료 명령을 수행한 시점에 처리되던 SQL을 취소시키고 롤백을 수행하지 않고 데이터베이스를 종료

 

명령어

SQL> SHUTDOWN → 일반종료

SQL> SHUTDOWN IMMEDIATE → 일반적으로 많이 사용하는 종료

SQL> SHUTDOWN TRANSACTIONAL → 작업 보호시 사용하는 종료

SQL> SHUTDOWN ABORT → 비정상 종료

 

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

--뷰 상태 리스트
SELECT OBJECT_NAME
     , STATUS
     , B.COMMENTS
  FROM (SELECT A.*, 'NWISDBA' AS OWNER
          FROM USER_OBJECTS A
         WHERE OBJECT_TYPE = 'VIEW'
           AND STATUS = 'INVALID'
        ) A
     , ALL_TAB_COMMENTS B  
 WHERE A.OWNER = B.OWNER(+)  
   AND A.OBJECT_NAME = B.TABLE_NAME(+)  
 ORDER BY OBJECT_NAME;
-- WHERE OBJECT_NAME LIKE 'TB_ATTEND%' AND OBJECT_TYPE='TABLE'; 


oracle 각종 조회 쿼리
1. 사용자와 롤에 부여된 시스템 권한을 조회
SELECT * FROM USER_SYS_PRIVS; 

2. 현재 세션에서 사용자와 롤에 부여된 시스템 권한을 조회.
SELECT * FROM SESSION_PRIVS; 

3.. 내가 다른 사용자에게 부여한 객체 권한을 조회.
SELECT * FROM USER_TAB_PRIVS_MADE; 

4. 나에게 부여된 객체 권한, 객체 이름을 조회.
SELECT * FROM USER_TAB_PRIVS_RECD; 

5. 내가 다른 사용자에게 부여한 칼럼에 대한 객체 권한과 칼럼 이름을 조회.
SELECT * FROM USER_COL_PRIVS_MADE; 

6. 나에게 부여된 칼럼에 대한 객체 권한과 칼럼 이름을 조회.
SELECT * FROM USER_COL_PRIVS_RECD;

7. 롤에 부여한 시스템 권한 조회
SELECT * FORM ROLE_SYS_PRIVS; 

8. 롤에 부여한 객체 권한 조회
SELECT * FROM ROLE_TAB_PRIVS; 

9. 사용자가 부여받은 롤 조회
SELECT * FROM USER_ROLE_PRIVS; 

10. USER_데이터 딕셔너리 뷰 조회
SELECT TABLE_NAME FROM USER_TABLES; 

11. ALL_데이터 딕셔너리 뷰의 조회
SELECT OWNER, TABLE_NAME FROM ALL_TABLES; 

12. DBA_딕셔너리 뷰의 조회
SELECT OWNER, TABLE_NAME FROM DBA_TABLES; 

13. USER_TABLE 조회
SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS;
SELECT TABLE_NAME, TABLE_SPACE, MIN_EXTENTS, MAX_EXTENTS 
FROM USER_TABLES
WHERE TABLE_NAME LIKE 'ADD%'; //이런식을 테이블 이름을 넣고

 

14.USER_OBJECTS 조회
SELECT OBJECT_NAEM, OBJECT_TYPE, CREATED
FROM USER_OBJECTS
WHERE OBJECT_NAME LIKE 'TB_ATTEND%' AND OBJECT_TYPE='TABLE'; 

15. USER_CATALOG 조회
SELECT * FROM USER_CATALOG; 

16. USER_CONSTRAINTS 조회
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM USER_CONSTRAINTS
WHERE TABLE_NAME IN('TB_CLASS', 'TB_SUGANG');   

17. 인덱스 정보 조회
SELECT INDEX_NAME, UNIQUENESS 
FROM USER_INDEXES
WHERE TABLE_NAME='TBSTUDENT';   

18. 뷰의 확인
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS; 

19. redolog 조회
select group#,members, bytes/10241024||’M’ from v$log;      

20. redolog 위치 조회
 select member from v$logfile;    

21. 컨트롤 파일 파라미터 조회
show parameter control_files;
select * from v$controlfile; 

22. 동적으로 변경 가능한 파라미터 조회
SELECT
v.name,
v.value,
DECODE(ISSES_MODIFIABLE, 'IMMEDIATE', 'YES','FALSE', 'NO', 'DEFERRED', 'NO', 'YES') AS SES_MODIFIABLE,
DECODE(ISSYS_MODIFIABLE, 'IMMEDIATE', 'YES', 'FALSE', 'NO', 'DEFERRED', 'NO','YES') AS SYS_MODIFIABLE,
v.description
FROM V$PARAMETER v WHERE name not like 'nls%'
ORDER BY 1; 

23. 딕셔너리 뷰의 조회
SELECT * FROM DICT_COLUMNS WHERE TABLE_NAME LIKE '%INDEX%';
SELECT * FROM dict WHERE table_name LIKE UPPER('%&데이타사전%');

24. 세그먼트 조회
select segment_name, tablespace_name, segment_ID, FILE_ID from dba_rollback_segs; 

25. 블럭 조회
SHOW PARAMETER BLOCK; 

26. shared_pool_size 조회
SHOW PARAMETER SHARED 

27. 인스턴스 조회
select instance_name, host_name from v$instance; 

28. 버퍼 조회
show parameter buffer; 

29. 데이타 파일 조회
SELECT NAME,BYTES FROM V$DATAFILE;

30. DBA 데이타 파일 조회
SELECT FILE_NAME, TABLESPACE_NAME  FROM DBA_DATA_FILES; 

31. SORT 영역 크기 조회
SHOW PARAMETER SORT_AREA_SIZE; 

32. 아카이브 확인
archive log list;
SELECT * FROM V$DATABASE; (시스템이 아카이브인지 확인할 수 있다) 

33. 인덱스 블럭에 delete 된 entry 조회
 > analyze index 'index_name' validate structure 로 분석 후에
 > select  LF_ROWS,
            DEL_LF_ROWS,
            DEL_LF_ROWS*100/decode(LF_ROWS, 0, 1, LF_ROWS) PCT_DELETED, 
    from index_stats 
    where NAME= :p_index; 

34. 딕셔너리캐시 히트율 조회
select (1-(sum(getmisses)/sum(gets))) * 100 "Hit Ratio" 
from v$rowcache;  

35. 버퍼캐시 히트율 조회
select round(((1-(sum(decode(name, 'physical reads', value,0))/ 
(sum(decode(name, 'db block gets', value,0))+ 
(sum(decode(name, 'consistent gets', value, 0))))))*100),2) 
|| '%' "Buffer Cache Hit Ratio" 
from v$sysstat;

 36. 라이브러리캐시히트율 조회
select namespace, sum(gets) gets, sum(gethits) gethits,
       round(sum(gethits)/sum(decode(gets,0,0.0001,gets)),3)
       "Get Hit Ratio",
       sum(pins) pins, sum(pinhits) pinhits, 
       round(sum(pinhits)/sum(decode(pins,0,0.0001,pins)),3)
       "Pin Hit Ratio",
       sum(invalidations) invalidations
  from v$librarycache
group by namespace;    

37. 설치된 옵션 조회
SELECT * FROM V$OPTION;

 

38. Tablespace 장애 확인
select h.tablespace_name, d.name, h.error
from v$datafile d, v$datafile_header h

where d.file#=h.file#;

 


참조**********

구분 테이블명 설명 
오브젝트 USER_OBJECTS (OBJ) 모든 오브젝트에 대한 정보를 지원 오즈젝트 유형, 작성시간, 오브젝트에 사용된 최종 DDL 명령, alter, grant 및 revoke 등 
테이블 USER_TABLES (TABS) 테이블에 대한 정보 
열 USER_TAB_COLUMNS (COLS) 컬럼에 대한 정보 
뷰 USER_VIEWS 뷰에 대한 정보 
동의어 USER_SYNONYMS (SYN) 
시퀀스 USER_SEQUENCES (SEQ) 
제약조건 USER_CONSTARINTS   
제약조건열 USER_CONS_COLUMNS 제약 조건을 가진 열에 대한 정보 
제약조건의 예외사항 EXCEPTIONS 제약조건을 활성화시 에러사항에 대한 정보 
테이블 주석 USER_TAB_COMMENTS 테이블/뷰에 대한 주석 
열 주석 USER_COL_COMMENTS 열에 대한 주석 
인덱스 USER_INDEXES (IND) ( 인덱스에 관한 정보) 
인덱스 열 USER_IND_COLUMNS 인덱스열에 대한 정보 
클러스터 USER_CLUSTERS (CLU) 클러스터와 관련된 정보 
데이터베이스 링크 USER_DB_LINKS 링크에 관련된 정보 
스냅샷 USER_SNAPSHOTS   
스냅샷 로그 USER_SNAPSHOT_LOGS   
트리거 USER_TRIGGERS   
프로시저, 함수 및 패키지 USER_SOURCE   
코드 오류 USER_ERRORS   
테이블스페이스 USER_TABLESPACES   
영역 할당량 USER_TS_QUOTAS 테이블스레이스 단위로 사용자가 이용할 수 있는 영역의 최대크기와 할당된 영역의 크기 파악에 대한 정보 
세그먼트와 익스텐트 USER_SEGMENTS 
USER_EXTENTS   
여유 영역 USER_FREE_SPACE 현재 여유로 표시된 영역이 얼마인지에 대한 정보 
사용자 USER_USERS   
자원 제한량 USER_RESOURCE_LIMITS   
테이블 권한 USER_TAB_PRIVS   
열 권한 USER_COL_PRIVS   
시스템 권한  USER_SYS_PRIVS 

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

/*테이블 ANALYZE*/
SELECT 'ANALYZE TABLE '|| TABLE_NAME ||' COMPUTE STATISTICS;' 
  FROM USER_TABLES 
-- WHERE SUBSTR(TABLE_NAME,4,1) = '_'
   


/*인덱스 ANALYZE*/
SELECT 'ANALYZE INDEX NWISDBA.'||INDEX_NAME||' COMPUTE SYSTEM STATISTICS;'
  FROM USER_INDEXES --WHERE INDEX_TYPE <> 'LOB'
-- ORDER BY INDEX_NAME
;

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,