+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

본인 혼자 공부하는 거니.... 태클은 말아주세요~~~ㅠ.ㅠ


*** Oracle Study Local VM Info
 - ver : Oracle 11.2.0.1
 - IP : 10.1.1.100
 - Port : 1521
 - sys / test
 - system / manager
 
 
oracle]$ sqlplus '/as sysdba'
SQL> startup
SQL> shutdown immediate

oracle]$ lsnrctl start
oracle]$ lsnrctl stop 

*** sys / system 계정 접속 불가시 확인 방법
oracle]$ sqlplus /nolog
SQL> conn sys/vmadmin as sysdba;


*** SQL 터미널 세팅
set pages 0
set long 40000
set line 500

*** 현재의 커널 매개변수
# ipcs -l

 

*** Oracle TableSpace 정보확인
Orange > 해당서버 접속 > TableSpace 탭 부붙에서 상세 정보 확인 가능

 

*** Ora-01017 에러시 확인 및 조치
** Lisner 정보와 "tnsname.ora" 파일과 비교 확인

$ lsnrctl status 로 확인되는 lisner 파일 정보 <-> Client 상의 '$ORACLE_HOME/network/admin/tnsname.ora' 파일의 정보

 

** Lisner Logfile Size (4기가 이상인 경우 발생가능)
$ lsnrctl status 명령어로 로그파일 경로 확인

** 오라클 환경에서 대소문자 구분을 없애주어야 로그인이 쉬워짐(11g 부터 대소문자 구분이 되고 있음)
SQL> show parameter sec_case;                                             ## 해당 명령어로 확인시 'TRUE' 값이면 대소문자 구분
SQL> alter system set sec_case_sensitive_logon=false;                 ## 해당 명령어로 변경

 

** Orange V4 이하에서 불가
-- ​오라클 11g는 비밀번호 대소문자를 구분하게 설정되어 있으나 오렌지 프로그램에서는 비밀번호를 모두 대문자로 변환한 뒤 로그인 시도한다.

 

 

--======================================================================================
--#. 
--======================================================================================

--======================================================================================
--#. 현재 접속한 DB 호스트 정보와 Client 정보 확인
--======================================================================================
SELECT
    UTL_INADDR.GET_HOST_ADDRESS AS DB_HOST_IP,
    UTL_INADDR.GET_HOST_NAME AS DB_NAME,
    sys_context('USERENV', 'IP_ADDRESS') AS CLIENT_IP,
    sys_context('USERENV', 'SESSION_USER') AS DB_USER,
    sys_context('USERENV', 'TERMINAL') AS TERMINAL,
    sys_context('USERENV', 'HOST') AS CLIENT_PCNAME,
    sys_context('USERENV', 'OS_USER') AS CLIENT_USERNAME,
    sys_context('USERENV', 'isDBA') ADMIN_MODE
FROM DUAL;

--======================================================================================
--#. 현재 열린 SESSION 정보확인
--======================================================================================
SELECT * FROM v$resource_limit WHERE resource_name in ('processes', 'sessions', 'transactions');


--======================================================================================
--#. 현재 접속한 사용자의 자신 권한 확인
--======================================================================================
select * from session_privs;


--======================================================================================
--#. Oracle Archive Mode Check
--======================================================================================
SELECT ARCHIVER FROM v$instance;

 

 

--======================================================================================
--#. Oracle 사용자 관련
--======================================================================================
--## ORACLE 전체 사용자 조회
SELECT USERNAME, PASSWORD FROM DBA_USERS;
SELECT * FROM ALL_USERS;

SELECT * FROM ALL_USERS
WHERE USERNAME = 'eaimgr'
;

SELECT * FROM DBA_USERS WHERE USERNAME = 'cello';


--## ORACLE 사용자 비밀번호 변경
ALTER USER <&USER> IDENTIFIED BY <&PASSWORD>;

ALTER USER SYSTEM IDENTIFIED BY MANAGER;
ALTER USER SYSTEM IDENTIFIED BY vmadmin;

--## ORACLE 사용자 비밀번호 변경 후 확인
CONN <&USER>/<&PASSWORD>

--## ORACLE 사용자 Blocked 확인
SELECT username,account_status,lock_date FROM dba_users;

--## ORACLE 사용자 Blocked 상태 해제
ALTER USER <&USER> ACCOUNT UNLOCK;

--## ORACLE 사용자 Blocked 상태로 전환
ALTER USER <&USER> ACCOUNT LOCK;

--## ORACLE User 생성 (스키마 생성)
CREATE USER <&USER>
IDENTIFIED by <&PASSWORD>
default TABLESAPCE <&TBS_Name>;

CREATE USER EAIMGR IDENTIFIED BY EAIMGR;

CREATE USER cello IDENTIFIED BY cello;

--## 사용자 생성 후 최소 아래의 권한이 필요.
GRANT CREATE SESSION TO <&USER>;
GRANT CREATE table TO <&USER>;
GRANT UNLIMITED TABLESPACE TO <&USER>;
--## 만약 추가 요청이 오는 경우 아래와 같이 필요한 권한을 추가한다.
GRANT CREATE SEQUENCE TO <&USER>;
GRANT CREATE PROCEDURE TO <&USER>;
GRANT CREATE VIEW TO <&USER>;

 

 

--======================================================================================
--#. Oracle Table 관련
--======================================================================================
--## USER 의 테이블 정보 확인 (파티션 타입)
SELECT
    A.SEGMENT_NAME,
SUM(A.BYTES)/1024 AS SIZE_KB,
    SUM(A.BYTES)/1024/1024 AS SIZE_MB,
SUM(A.BYTES)/1024/1024/1024 AS SIZE_GB
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 = '&USER'
GROUP BY A.SEGMENT_NAME
;

 

*** Oracle Partition Table 관련
** 전체 파티션 테이블 조회
SELECT * FROM ALL_TAB_PARTITIONS;

SELECT * FROM ALL_TAB_PARTITIONS
WHERE TABLE_NAME = 'TBL_TFP_PLAN'
;

SELECT * FROM CELLOPL.TBL_TPP_PLAN
PARTITION (PFNL20190701P001A)
;

** 전체 파티션 테이블의 키 칼럼 조회
SELECT * FROM ALL_PART_KEY_COLUMNS

 

--## Oracle Table 용량확인 

select owner,segment_name,segment_type,sum(bytes)/1024/1024 as MB
from dba_segments
where owner='사용자'
and segment_name='테이블명'
GROUP BY owner,segment_name,segment_type;


select 
        table_name, 
        num_rows,
        num_rows * avg_row_len, 
        round((num_rows * avg_row_len/1024),2) "SIZE(Kb)", 
        round((num_rows * avg_row_len/1024/1024),2) "SIZE(Mb)", 
        round((num_rows * avg_row_len/1024/1024/1024),2) "SIZE(Gb)",
        last_analyzed
from user_tables

where table_name like 'TS%'
;

 

--======================================================================================
--#. Oracle TableSpace 관련
--======================================================================================
--## TableSpace 전체 조회 
SELECT * FROM DBA_TABLESPACES;

--## TableSpace 전체에서 특정 테이블스페이스명 조회 
SELECT * FROM DBA_TABLESPACES
WHERE TABLESPACE_NAME = '&TBS_Name';

--## Table_Name and TableSpace_Name 을 비교해서 볼때
SELECT * FROM DBA_TABLES
WHERE TABLESPACE_NAME='&TBS_Name';

--## TableSpace 별 용량조회
SELECT SUBSTR (a.tablespace_name, 1, 30) tablespace,
ROUND (SUM (a.total1) / 1024 / 1024, 1) "Total_MB",
ROUND (SUM (a.total1) / 1024 / 1024, 1) - ROUND (SUM (a.sum1) / 1024 / 1024, 1) "Used_MB",
ROUND (SUM (a.sum1) / 1024 / 1024, 1) "Free_MB",
ROUND (
(ROUND (SUM (a.total1) / 1024 / 1024, 1) - ROUND (SUM (a.sum1) / 1024 / 1024, 1))
            / ROUND (SUM (a.total1) / 1024 / 1024, 1) * 100, 2
) "Used%"
FROM (
SELECT tablespace_name,
0 total1,
SUM (bytes) sum1,
MAX (bytes) MAXB,
COUNT (bytes) cnt
FROM dba_free_space
GROUP BY tablespace_name
UNION
SELECT tablespace_name,
SUM (bytes) total1,
0,
0,
0
FROM dba_data_files
GROUP BY tablespace_name) a
GROUP BY a.tablespace_name
ORDER BY tablespace;


--## TABLESPACE_NAME 별로 용량조회
SELECT  SUBSTR(A.TABLESPACE_NAME,1,30) TABLESPACE,
              ROUND(SUM(A.TOTAL1)/1024/1024,1) "TOTALMB",
              ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1) "USEDMB",
              ROUND(SUM(A.SUM1)/1024/1024,1) "FREEMB",
              ROUND((ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1))

              /ROUND(SUM(A.TOTAL1)/1024/1024,1)*100,2) "USED%"
  FROM
             (SELECT  TABLESPACE_NAME,0 TOTAL1,SUM(BYTES) SUM1,MAX(BYTES) MAXB,

                            COUNT(BYTES) CNT
                 FROM  DBA_FREE_SPACE
               GROUP  BY TABLESPACE_NAME
              UNION
              SELECT  TABLESPACE_NAME,SUM(BYTES) TOTAL1,0,0,0
                 FROM  DBA_DATA_FILES
               GROUP  BY TABLESPACE_NAME) A
GROUP BY A.TABLESPACE_NAME
ORDER BY TABLESPACE;


--## 전체 합처리
SELECT  ROUND(SUM(A.TOTAL1)/1024/1024/1024,1) "TOTALGB",
              ROUND(SUM(A.TOTAL1)/1024/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024/1024,1) "USEDGB",
              ROUND(SUM(A.SUM1)/1024/1024/1024,1) "FREEGB",
              ROUND((ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1))

              /ROUND(SUM(A.TOTAL1)/1024/1024,1)*100,2) "USED%"
  FROM
             (SELECT  TABLESPACE_NAME,0 TOTAL1,SUM(BYTES) SUM1,MAX(BYTES) MAXB,

                            COUNT(BYTES) CNT
                 FROM  DBA_FREE_SPACE
               GROUP BY TABLESPACE_NAME
              UNION
              SELECT  TABLESPACE_NAME,SUM(BYTES) TOTAL1,0,0,0
                 FROM  DBA_DATA_FILES
               GROUP BY TABLESPACE_NAME) A



--### 80% 이상 테이블 스페이스 정보 출력하기
COLUMN Tablespace        format a25 heading 'Tablespace Name'
COLUMN autoextensible         format a11              heading 'AutoExtend'
COLUMN files_in_tablespace    format 999             heading 'Files'
COLUMN total_tablespace_space format 99999999 heading 'TotalSpace'
COLUMN total_used_space       format 99999999 heading 'UsedSpace'
COLUMN total_tablespace_free_space format 99999999 heading 'FreeSpace'
COLUMN total_used_pct              format 9999      heading '%Used'
COLUMN total_free_pct              format 9999     heading '%Free'
COLUMN max_size_of_tablespace      format 99999999 heading 'ExtendUpto'
COLUMN total_auto_used_pct         format 999.99      heading 'Max%Used'
COLUMN total_auto_free_pct         format 999.99      heading 'Max%Free'
WITH tbs_auto AS
     (SELECT DISTINCT tablespace_name, autoextensible
                 FROM dba_data_files
                WHERE autoextensible = 'YES'),
     files AS
     (SELECT   tablespace_name, COUNT (*) tbs_files,
               SUM (BYTES/1024/1024) total_tbs_bytes
          FROM dba_data_files
      GROUP BY tablespace_name),
     fragments AS
     (SELECT   tablespace_name, COUNT (*) tbs_fragments,
               SUM (BYTES)/1024/1024 total_tbs_free_bytes,
               MAX (BYTES)/1024/1024 max_free_chunk_bytes
          FROM dba_free_space
      GROUP BY tablespace_name),
     AUTOEXTEND AS
     (SELECT   tablespace_name, SUM (size_to_grow) total_growth_tbs
          FROM (SELECT   tablespace_name, SUM (maxbytes)/1024/1024 size_to_grow
                    FROM dba_data_files
                   WHERE autoextensible = 'YES'
                GROUP BY tablespace_name
                UNION
                SELECT   tablespace_name, SUM (BYTES)/1024/1024 size_to_grow
                    FROM dba_data_files
                   WHERE autoextensible = 'NO'
                GROUP BY tablespace_name)
      GROUP BY tablespace_name)
SELECT c.instance_name,a.tablespace_name Tablespace,
       CASE tbs_auto.autoextensible
          WHEN 'YES'
             THEN 'YES'
          ELSE 'NO'
       END AS autoextensible,
       files.tbs_files files_in_tablespace,
       files.total_tbs_bytes total_tablespace_space,
       (files.total_tbs_bytes - fragments.total_tbs_free_bytes
       ) total_used_space,
       fragments.total_tbs_free_bytes total_tablespace_free_space,
       round((  (  (files.total_tbs_bytes - fragments.total_tbs_free_bytes)
           / files.total_tbs_bytes
          )
        * 100
       )) total_used_pct,
       round(((fragments.total_tbs_free_bytes / files.total_tbs_bytes) * 100
       )) total_free_pct
  FROM dba_tablespaces a,v$instance c , files, fragments, AUTOEXTEND, tbs_auto
WHERE a.tablespace_name = files.tablespace_name
   AND a.tablespace_name = fragments.tablespace_name
   AND a.tablespace_name = AUTOEXTEND.tablespace_name
   AND a.tablespace_name = tbs_auto.tablespace_name(+)
and (((files.total_tbs_bytes - fragments.total_tbs_free_bytes)/ files.total_tbs_bytes))* 100 > 80
order by total_free_pct;

 

--## Oracle TableSpace 생성 (신규 생성시)
CREATE TABLESPACE <&TABLESPACE_NAME>
DATAFILE '<&데이타파일명>' SIZE 10G AUTOEXTEND OFF
LOGGING
DEFAULT STORAGE ( 
                  MAXEXTENTS  UNLIMITED
                )
EXTENT MANAGEMENT DICTIONARY
BLOCKSIZE 8K
FLASHBACK ON

 

 

--## Oracle TableSpace 기존 테이블스페이스에 추가
 SQL> ALTER TABLESPACE &TBS_Name ADD DATAFILE '&데이타파일명' SIZE XXXm;

--<< ex >>
-- ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/sysdata/undotbs02.dbf' SIZE 30G;

 

 

--## Oracle TableSpace 기존 테이블스페이스에서 데이터 파일 삭제
 SQL> ALTER TABLESPACE &TBS_Name DROP DATAFILE '&데이타파일명';

--<< ex >> 
-- ALTER TABLESPACE UNDOTBS1 DROP DATAFILE '/sysdata/undotbs02.dbf';

 

--## Oracle 테이블 스페이스 및 데이타 파일별 용량확인 
SELECT    A.TABLESPACE_NAME "테이블스페이스명",
          A.FILE_NAME "파일경로",
            A.BYTES/1024/1024                              "총크기(MB)",
            (A.BYTES - B.FREE)/1024/1024                   "사용공간(MB)",
            B.FREE/1024/1024                               "여유 공간(MB)",
            TO_CHAR( (B.FREE / A.BYTES * 100) , '999.99')||'%' "여유공간",
          A.ONLINE_STATUS
      FROM
       (
         SELECT FILE_ID,
                TABLESPACE_NAME,
                FILE_NAME,
                SUBSTR(FILE_NAME,1,200) FILE_NM,
                SUM(BYTES) BYTES,
                ONLINE_STATUS
           FROM DBA_DATA_FILES
         GROUP BY FILE_ID,TABLESPACE_NAME,FILE_NAME,SUBSTR(FILE_NAME,1,200),ONLINE_STATUS
       ) 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;


--## Oracle 테이블 스페이스별 용량확인
select   substr(a.tablespace_name,1,30) tablespace,
         round(sum(a.total1)/1024/1024,1) "TotalMB",
         round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) "UsedMB",
         round(sum(a.sum1)/1024/1024,1) "FreeMB",
         round((round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1))/round(sum(a.total1)/1024/1024,1)*100,2) "Used%"
from
         (select   tablespace_name,0 total1,sum(bytes) sum1,max(bytes) MAXB,count(bytes) cnt
          from     dba_free_space
          group by tablespace_name
          union
          select   tablespace_name,sum(bytes) total1,0,0,0
          from     dba_data_files
          group by tablespace_name) a
group by a.tablespace_name
order by tablespace;

 

 

--======================================================================================
--#. Oracle DB Link
--======================================================================================
--## Oracle DB Link 정보확인
-- Orange > 해당서버 접속 > DB Link 탭 부붙에서 상세 정보 확인 가능

SELECT * FROM DBA_DB_LINKS;

SELECT * FROM DBA_DB_LINKS WHERE DB_LINK = 'DL_CELLOTOVMTRUST';

--## Oracle DB-Link 사용 가능 여부 확인
-- SQL> SELECT COUNT(*) FROM TABLE_NAME@DB_LINK;

SELECT COUNT(*) FROM tab @DL_VMTRUST_ERP;

 

 

--## Oracle DB Link 생성
--/* SQL>
[[ 공용방식 ]]
CREATE PUBLIC DATABASE LINK DL_VMAMTOVMPROD
 CONNECT TO apps
 IDENTIFIED BY apps
 USING 'VMPROD';

[[ 일반방식 ]]
CREATE DATABASE LINK <LINK_NAME>
CONNECT TO <연결하고자 하는 user> IDENTIFIED BY <연결하고자 하는 user password>
USING '<TNS정의명>';

 

[[ 공용방식 + NETWORK Type ]]
CREATE PUBLIC DATABASE LINK <LINK_NAME>
 CONNECT TO <연결하고자 하는 user>
 IDENTIFIED BY <연결하고자 하는 user password>
  USING '(DESCRIPTION =  
                (ADDRESS_LIST =  
                  (ADDRESS = (PROTOCOL = TCP)(HOST=127.0.0.1)(PORT = 1521))  
                )  
                (CONNECT_DATA =  
                  (SERVICE_NAME = ORCL)  
                )  
              )'
;

*/--

 


--## Oracle DB Link 확인
-- SQL> SELECT * FROM <테이블이름>@<NEW_TEST_LINK>

SELECT * FROM All_USERS@DL_VMSCMTETOVMES


--## Oracle DB Link 확인 (DB id 값과 이름 출력)
-- SQL> select DBID, NAME from v$database@<NEW_TEST_LINK>

select DBID, NAME from v$database@DL_CELLOTOMES;

 

--## Oracle DB Link 삭제
-- SQL> DROP DATABASE LINK <DB LINK NAME>

 

DROP DATABASE LINK DL_VMAMTOVMPROD;

 

 


--======================================================================================
--#. SYSAUX 테이블 스페이스 관리
--======================================================================================
*** 어떤 OWNER 가 얼마만큼 크기를 사용하는지 체크
SELECT occupant_name, space_usage_kbytes/1024 "Size_MB"
FROM v$sysaux_occupants
ORDER BY space_usage_kbytes;

*** SYSAUX tablespace에 어떤 segment가 가장 많은 공간을 차지하는지
SELECT owner, segment_name, segment_type, bytes/1024/1024 "Size_MB"
FROM dba_segments
WHERE tablespace_name = 'SYSAUX'
ORDER BY bytes DESC;


*** 통계정보를 보관하는 주기를 확인
SELECT dbms_stats.get_stats_history_retention from dual;

** 통계정보 보관주기 변경 ('( )'안에 원하는 날짜만큼 숫자를 입력)
SELECT dbms_stats.get_stats_history_retention(10); --10일로 보관주기 변경


--======================================================================================
--#. 트리거 조회하기
--======================================================================================

SELECT * FROM ALL_TRIGGERS;

 

 

-======================================================================================
--#. Oracle Lock
--======================================================================================
***

Oracle Lock 조회 (Kill 하기 위해 KILL_TASK 를 확인)
SELECT A.SID
     , A.SERIAL#
     , object_name
     , A.SID || ', ' || A.SERIAL# AS KILL_TASK
  FROM V$SESSION A
 INNER JOIN V$LOCK B
    ON A.SID = B.SID
 INNER JOIN DBA_OBJECTS C
    ON B.ID1 = C.OBJECT_ID
 WHERE B.TYPE  = 'TM'
 ;

 

*** Oracle Lock Session KILL
-- SQL> ALTER SYSTEM KILL SESSION '<KILL_TASK 번호>'

 

ALTER SYSTEM KILL SESSION '388, 223';

 

-====================================================================================== 
--#. Oracle DataPump 
--====================================================================================== 
*** 덤프 작업시 참조할 것
** 덤프작업시 모니터링
SELECT
A.OPNAME, /* Job 이름과 같음 */
A.TARGET_DESC, /* 작업의 종류 */
A.SOFAR, /* 현재 수행한 용량 // 단위:Mb */
A.TOTALWORK, /* 총 수행하여야 할 용량 // 단위:Mb */
(SOFAR/TOTALWORK*100) PER
FROM
v$SESSION_LONGOPS A
;

 

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Oracle 'Grant' 권한 조회
SELECT * FROM USER_TAB_PRIVS_MADE;   => 사용자가 부여한 권한
SELECT * FROM USER_TAB_PRIVS_RECD;   => 사용자에게 부여된 권한
select * from dba_sys_privs where grantee='CELLOPL'



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Oracle 통계정보 갱신
-- 해당 스키마에 해당하는 테이블과 테이블 스페이스 조회
SELECT OWNER, TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES WHERE OWNER = '스키마명';

-- 해당 스키마에 해당하는 테이블의 통계정보 조회
SELECT TABLE_NAME, NUM_ROWS, CHAIN_CNT, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, AVG_ROW_LEN FROM DBA_TABLES WHERE OWNER = '스키마명';

-- 해당 스키마에 해당하는 인덱스의 통계정보 조회
SELECT TABLE_NAME, INDEX_NAME, STATUS, NUM_ROWS, LEAF_BLOCKS, BLEVEL FROM DBA_INDEXES WHERE OWNER = '스키마명';

-- 테이블의 통계정보 갱신
EXEC DBMS_STATS.GATHER_TABLE_STATS('스키마명', '테이블명');

-- 스키마안의 모든 세그먼트에 대한 통계정보 갱신
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('스키마명');

-- DBMS_STATS 패키지로 갱신되지 않는 테이블 통계 정보 갱신(쿼리 생성)
SELECT 'ANALYZE TABLE 스키마명.' || TABLE_NAME || ' COMPUTE STATISTICS;' FROM DBA_TABLES WHERE OWNER = '스키마명';

 

*** Oracle Archive log 사용량 확인(GV$ARCHIVED_LOG)
 + DB Version : Oracle 11.2.0.2
 + OS Version : AIX 6.1

 + Oracle Archive log 사용량 및 갯수 확인
  - DATE Format : YY/MM/DD (DY)
  - 시간 단위 분석 : (TO_CHAR(NEXT_TIME,'YY/MM/DD(DY) HH24')
  - 4Node RAC 기준으로 Script 작성
  - Archive log Size 확인(GB) : ROUND(SUM(DISTINCT BLOCKS*BLOCK_SIZE)/1024/1024/1024,2)
  - 최근 10일 전부터 분석 : NEXT_TIME >= TRUNC(SYSDATE) -10
  
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;

 

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Oracle Backup 상태 확인
select * from v$backup;

*** Oracle Backup 상태 수정(END backup)
alter database end backup;

*** Oracle Log 관련 초기화
alter database open resetlogs;

*** Oracle 동작상태 확인
SELECT status FROM v$instance;

RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;

RECOVER DATABASE USING BACKUP CONTROLFILE;

AND

+++++++++++++++ PostgreSQL 설치하기 +++++++++++++++

※ 현재 글은 PostgreSQL 9.4 버전을 기준으로 작성되었습니다. 이용에 혼동이 없으시기 바랍니다.


1. 설치 소스가 있는 경우

 - 해당 설치 파일을 이용하여 RPM 또는 Tar 설치를 진행합니다.


2. 설치 소스가 없는 경우

* 아래 사이트에서 PostgreSQL 버전 및 Architec 별 정보를 검색 후 "pgdg-????.noarch.rpm" 파일을 다운

-- http://yum.postgresql.org/


* 다운로드한 "pgdg-????.noarch.rpm" 파일을 rpm 을 이용하여 설치하고난 뒤

-- # yum install 을 이용하여 postgresql 을 다운로드 가능함.



3. 버전별로 설치 방법이 조금 다르기 때문에 관련 버전별 정리합니다.


[CentOS 6.X 의 경우]

* 설치가 완료된 후 아래와 같이 해당 서비스를 활성화 시켜주어야 함.

-- # chkconfig --level 345 postgresql-9.4 on


* 서비스가 활성화 되고 나면 아래와 같이 DataBase 영역을 추가함.

-- # cd /usr/pgsql-9.4/bin/initdb /pgsql/data


* 추가한 DataBase 내 "pg_hba.conf, postgresql.conf" 파일을 수정하여 환경을 설정.


* 서비스 등록된 파일내 DataBase 영역을 수정하여야 정상동작하므로 아래와 같이 수정함.

-- # vi /etc/init.d/postgresql-9.4

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

#PGDATA=/var/lib/pgsql/9.4/data

PGDATA=/SOCPLUS/pgsql/data

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


* 모든 작업이 완료되고 나면 아래와 같이 서비스를 동작

-- # service postgresql-9.4 start || # /etc/rc.d/init.d/postgresql-9.4 start




[CentOS 7.X 의 경우]

* 설치가 완료된 후 아래와 같이 해당 서비스를 활성화 시켜주어야 함.

-- # systemctl enable postgresql-9.4


* 서비스가 활성화 되고 나면 아래와 같이 DataBase 영역을 추가함.

-- # cd /usr/pgsql-9.4/bin/initdb /pgsql/data


* 추가한 DataBase 내 "pg_hba.conf, postgresql.conf" 파일을 수정하여 환경을 설정.


* 서비스 등록된 파일내 DataBase 영역을 수정하여야 정상동작하므로 아래와 같이 수정함.

-- # vi /usr/lib/systemd/system/postgresql-9.4.service

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

# Location of database directory

#Environment=PGDATA=/var/lib/pgsql/9.4/data/

Environment=PGDATA=/pgsql/data

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


* 모든 작업이 완료되고 나면 아래와 같이 서비스를 동작

-- # systemctl start postgresql-9.4

'Databases > PostgreSQL' 카테고리의 다른 글

PostgreSQL 'root' 계정 초기화하기.  (0) 2014.06.20
AND

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

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 5.3

설치된 PostgreSQL      : postgresql-8.1.18 (다중PKG)
설치된 VMware Program : VM workstation 10.0.1

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

CentOS 를 사용하시는 분들은 대부분이 "mysql" 을 사용하시면서 MariaDB 형태로 전환되고 합니다.

다만, 오픈소스 무료 DBMS 중 PostgreSQL 이란 프로그램도 기본으로 내장되어 배포되고 있는데요.

기본 명령어나 설치법은 공개사이트에서 확인하실 수 있으니 참고하시기 바랍니다.

 

지금은 PostgreSQL 을 사용하면서 root, 즉 "postgres" 에 대한 비밀번호를 초기화하는 방법을

하나씩 진행해보겠습니당!!! Follow ME~!!

 

 

1. PostgreSQL 의 정보를 조작하기 위해 해당 데몬을 먼저 동작중지 해야합니다.

 

#ps -aef | grep postgre

를 이용하여 해당 프로세스가 떠있는지 확인을 하시기 바랍니다.

PostgreSQL 프로세스가 동작하고 있는 경우는 아래와 같이 종료해주세요.

 

#/etc/rc.d/init.d/postgresql stop      or     # service postgresql stop

 

 

2. 설정파일(/var/lib/pgsql/data/pg_hba.conf) 에서 postgres 계정의 권한을 수정합니다.

※단, configure 시 다르게 지정될 수 있으므로 "find"를 이용하여 확인할 것을 권장합니다.

 

#nano /var/lib/pgsql/data/pg_hba.conf

 

위 파일에서 아래과 같이 내용을 수정 후 파일을 저장합니다.

 

local    all    all    ident     ->       local    all    postgres    trust

 

 

3. 설정파일 수정이 완료되면 PostgreSQL 데몬을 동작 시켜줍니다.

 

#/etc/rc.d/init.d/postgresql start      or     # service postgresql start

 

4. "postgres" 사용자로 SQL 을 구동하여 비밀번호를 변경해줍니다.

#su - postgres                                               //postgres 사용자로 전환

$psql -d template1 -U postgres                          //postgres 사용자로 template1 데이터베이스에 접속

 

=#alter user postgres with password 'new_pw';    //postgres 사용자의 비번을 "new_pw" 로 변경

=#\q                                                            //postgresql 접속 종료 

 

위 처럼 DBMS 로 접속해서 변경할 수 도 있지만, 명령어를 입력해주는 방식인 아래처럼 변경도 가능합니다.

 

$psql -U postgres -d template1 -c "alter user postgres with password 'new_pw';"

 

 

5. 2번 항목에서 수정한 파일을 원복하기 위해 데몬을 종료합니다.

 

#/etc/rc.d/init.d/postgresql stop      or     # service postgresql stop

 

 

6. 설정파일을 원복합니다.

 

#nano /var/lib/pgsql/data/pg_hba.conf

 

위 파일에서 아래과 같이 내용을 수정 후 파일을 저장합니다.

 

local    all    postgres    trust     ->       local    all    all    ident

 

 

7. 설정파일의 복원을 마쳤으면, PostgreSQL  데몬을 시작하고 정상적으로 변경되었는지 확인합니다.

 

#/etc/rc.d/init.d/postgresql start      or     # service postgresql start

 

#su - postgres                                               //postgres 사용자로 전환

$psql -d template1 -U postgres                          //postgres 사용자로 template1 데이터베이스에 접속

Password :                                                                 //변경한 비밀번호로 정상 로그인되면 아래와 같은 프롬프트가 출력됨

 

template1=#

 

정상적으로 잘 변경된 부분을 확인하셧나요.. ?? 다 잘되셨을거 같습니다 ㅎㅎ.

변경된 사용자 정보를 가지고 착하게!!!!!! DBMS 를 관리해보세요^^

단, 너무 자주 잊어버리시지 마시고, 꼭!!!!!!!!!!!!!!! 계정정보를 알고 계시길 바랍니당.

 

'Databases > PostgreSQL' 카테고리의 다른 글

PostgreSQL 설치하기[CentOS 6.x, 7.x]  (0) 2016.07.26
AND

항상 시스템이나 데이터베이스 등 관리라는 목적을 띄면 Error 와 백업 이란 단어는 한번 이상 듣게 되는 말이다.

오류는 어떠한 형태로도 발생할 수 있기 때문에 그 오류를 해결하기 위한 하나의 방안으로 백업을 복원하는 방법이 존재하며,

데이터라는 것은 항상 소중하게 관리되어야 하므로 주기적인 백업이 필요하다.


이번 글에서는 Mysql 내에서 mysqldump 명령어를 이용하여 DB 백업과 복원을 배워보도록 하자.


우선 mysqldump 백업의 장/단점을 알아보자.

 [ 장점 ]

      * 데이터를 검토가 가능하다.
      * 복원작업이 수월하며, 복원시 데이터 손상을 최소화하여주며, 문제 발생시 원인 파악및 해결이 수월하다. 
 [ 단점 ]
      * 백업/복원시 시스템 리소스를 많이 소모한다.

[ mysqldump Use ]

1. 백업하기

     - # mysqldump -u [UserID] -p [PW] -A > /backup/DB/20131223_noosedb.sql

  // mysql 서버에 있는 전체 DB를 시스템의 /backup/DB 경로안에 백업파일로 생성

     - # mysqldump -u [UserID] -p [PW] -B [DB명] > /backup/DB/20131223_noosedb.sql

  // 특정 데이터베이스만 의 시스템의 /backup/DB 경로안에 백업파일로 생성
 

[ 추가옵션 ]
   -A, --all-databases : 모든 DB 백업
   -B, --databases : 특정 DB 백업                

            -d, --no-data :  데이터는 제외하고 스키마만 백업

2. 복원하기
     - # mysql -u [UserID] -p [PW] [DB명] < /backup/DB/20131223_noosedb.sql
  // 20131223_noosedb.sql 파일에서 DB 백업을 복원
     - # mysql -u [UserID] -p [PW
  // mysql 서비스로 접속
     -  mysql> source 20131223_noosedb.sql
  // mysql 서비스내 복원한 DB를 분석

'Databases > MySQL' 카테고리의 다른 글

Mysql Service 내 기본 명령문을 알아보자.  (0) 2013.11.06
Mysql 서비스를 이용해보자.  (0) 2011.09.09
AND

- 명령어 사용법 -

[간단명령어]
* mysql>select version(), current_date;
=> mysql 버전과 현재 날짜정보를 확인


[보조명령어]
- show

정의

* DB 또는 Table 의 정보를 출력한다.


▷ 형식

* mysql>show [databases 또는 tables];


- use

정의

* DB를 사용하고자 할 때 입력한다.(DB 변경할 때 이용)

▷ 형식

* mysql>use [DB_Name];


- desc

정의

* Table의 항목별 상세 정보를 출력해준다.

▷ 형식

* mysql>desc [Table_Name];


[주 명령어]
- create

정의

* DB 또는 Table 을 생성할 때 사용


▷ 형식

* mysql>create database [DB_Name];

* mysql>create table [Table_Name]
            ([FieldName1] [FieldType1],
            [FieldName2] [FieldType2]...);


- drop

정의

* DB 또는 Table 을 삭제할 때 사용


▷ 형식

* mysql>drop database [DB_Name];
* mysql>drop table [Table_Name];


- insert

정의

* Table 에서 내용을 추가하고 싶을 때 사용

▷ 형식

* mysql>insert into [Table_Name](FieldName1,FieldName2....)
         ->values(FieldValue1,FieldValue2....);


- select

정의

* Table 에서 저장된 정보를 조회할 때 사용


▷ 형식

* mysql>select * from [Table_Name];
* mysql>select name,id from samdal;


※ select 구문에서 데이터 정렬하기
- 내림차순 : * mysql> CMD 구문 order by [FieldName] desc; - default
- 올림차순 : * mysql> CMD 구문 order by [FieldName] asc;


- update

정의

* Table 에서 저장된 정보를 수정할 때 사용


▷ 형식

* mysql>update [Table_Name]
         ->set [FieldName1=Value1], [FieldName2=Value2]...
         ->where [조건];


- delete

정의

* Table 에서 저장된 정보를 삭제할 때 사용


▷ 형식

* mysql>delete from [Table_Name];


- alter

정의

* Table 관련 정보를 수정할 때 사용


▷ 형식

1. Field Type 변경
* mysql>alter table [Table_Name] modify [FieldName] [NewFieldType];


2. Field Name 변경
* mysql>alter table [Table_Name] change [OldFieldName] [NewFieldName] [NewFieldType];


3. Field 추가
* mysql>alter table [Table_Name] add [NewFieldName] [NewFieldType] after [OldFieldName];

4. Field 삭제
* mysql>alter table [Table_Name] drop [DelFieldName];



※"where" 명령문(조건절) 알아두기
      - 조건절의 경우는 select, update, delete 모두 사용가능

- where 조건절 과 like 구문 함께 사용
* mysql> CMD 구문 where [Filed] like [Argument]


"flush privileges;" 명령문 알아두기

mysql> flush privileges;

=> mysql 서비스 안에서 변경사항의 정보가 데몬 재실행 없이 적용가능

 

"mysqladmin" 툴을 이용해서 [root] 사용자 비밀번호 변경하기

- #mysqladmin -u [UserName] password [변경할 비번]

: 비밀번호가 X 사용자의 비밀번호 변경


- #mysqladmin -u [UserName] -p password [변경할 비번]

: 비밀번호가 O 사용자의 비밀번호 변경

 

* mysqladmin 툴을 이용하면 데몬 재실행 없이 변경사항이 적용된다.



'Databases > MySQL' 카테고리의 다른 글

Mysql 에서 백업과 복원을 하자.  (0) 2013.12.23
Mysql 서비스를 이용해보자.  (0) 2011.09.09
AND

[ mysql 접속하기 ]
# mysql -u 계정ID -p 비밀번호 데이터베이스명(DB명 생략가능)


[ 새로운 계정 추가후 DB 사용권한 주기 ]
mysql>quit, bye, \q
mysql>create database DB명;       //데이터 베이스명 만들기 
mysql>insert into user (host, user, password) values ('호스트명'. '계정', password('비밀번호'));   //user 테이블에 사용자정보호 등록
mysql>insert into db values ('호스트명', 'DB명', '계정', 'Y'를 12개'...);  //db테이블에 사용권한 등록(필요없는 권한은 'N' 을 사용)
mysql>flush privileges;            //mysql 변경 내용 적용 


[ 데이터베이스 관련 명령어 ]

아래 링크된 게시글을 이용하여 기본 명령어들을 확인해보세요^^


2013/11/06 - [Databases/MySQL] - Mysql Service 내 기본 명령문을 알아보자.



[ 데이터베이스 백업/복원 ]

1. 백업하기
#mysqldump -u 계정 -p 비밀번호 DB이름 > 백업파일명

2. 복원하기
#mysql -u 계정 -p 비밀번호 DB이름 < 백업파일명 (단, 일반적으로 파일(X.sql)로 생성해서 일괄적인 실행을 사용)

'Databases > MySQL' 카테고리의 다른 글

Mysql 에서 백업과 복원을 하자.  (0) 2013.12.23
Mysql Service 내 기본 명령문을 알아보자.  (0) 2013.11.06
AND

USER 변경하기 위해서는 ALTER USER 문을 사용

● ALTER USER문으로 변경 가능한 옵션
  -  비밀번호
  -  운영체제 인증
  -  디폴트 테이블 스페이스
  -  임시 테이블 스페이스
  -  테이블 스페이스 분배 할당
  -  프로파일 및 디폴트 역할
 

사용자 수정 문법(Syntax)

 

사용자 삭제문법(Syntax)


 
 CASCADE 옵션을 사용하게 되면 해당 사용자와 관련된 모든 데이터베이스 스키마가 데이터 사전에서
     삭제되며 모든 스키마 객체들 또한 물리적으로 삭제 됩니다.


사용자 수정 예제


SQL>CONN SYSTEM/MANAGER       -- SYSTEM USER로 접속합니다.

SQL>ALTER USER scott IDENTIFIED BY lion;    -- scott USER의 비밀번호를 수정합니다.
 사용자가 변경되었습니다.

SQL>conn scott/lion    -- scott USER의 비밀번호가 바낀걸 확인할 수 있습니다.
접속되었습니다.


SQL>conn system/manager
접속되었습니다.

SQL>ALTER USER scott IDENTIFIED BY tiger;    -- scott USER의 비밀번호를 처음처럼 수정합니다.
 사용자가 변경되었습니다.
 

 


'Databases' 카테고리의 다른 글

DB 사용자 확인  (0) 2011.03.28
DB 사용자 생성  (0) 2011.03.28
SQL의 종류(쿼리의 종류)  (0) 2011.03.28
AND

DB 사용자 확인

Databases 2011. 3. 28. 14:22
데이터베이스에 등록된 사용자를 조회하기 위해서는 DBA_USERS 라는 데이터사전을 조회
 

SQL*Plus를 실행시켜  system/manager 로 접속 
 
SQL>SELECT username, default_tablespace, temporary_tablespace
        FROM DBA_USERS;
    
USERNAME      DEFAULT_TABLESPACE      TEMPORARY_TABLES
---------------- -------------------        ----------------
SYS                    SYSTEM                       TEMP
SYSTEM             TOOLS                          TEMP
OUTLN                SYSTEM                        SYSTEM
DBSNMP              SYSTEM                       SYSTEM
ORDSYS              SYSTEM                       SYSTEM
ORDPLUGINS       SYSTEM                        SYSTEM
MDSYS               SYSTEM                        SYSTEM
CTXSYS              DRSYS                          DRSYS
SCOTT                SYSTEM                       SYSTEM
TEST                  TEST                            SYSTEM
STORM               STORM                         SYSTEM
KJS                    SYSTEM                        SYSTEM
OEM                   OEM_REPOSITORY         TEMP
 
 위 처럼 유저와 테이블 스페이스에 대한 정보가 화면에 나옵니다.


'Databases' 카테고리의 다른 글

DB 사용자 변경(수정/삭제)  (0) 2011.03.28
DB 사용자 생성  (0) 2011.03.28
SQL의 종류(쿼리의 종류)  (0) 2011.03.28
AND

DB 사용자 생성

Databases 2011. 3. 28. 13:58
@ 새로운 USER를 생성하기 위해서는 CREATE USER문을 이용하며, USER를 생성하기 위해서는
    USER생성 권한이 있는 사용자로 접속해야 됩니다.

사용자 생성 문법(Syntax)


 - user_name : 사용자 이름
 - BY password : 사용자가 데이터베이스에 의해 인증되도록 지정하며, 로그온시 사용하는 비밀번호
 - EXTERNALLY : 사용자가 운영 체제에 의해서 인증되도록 지정
 - DEFAULT TABLESPACE : 사용자 스키마를 위한 기본 테이블 스페이스 지정
 - TEMPORARY TABLESPACE : 사용자의 임시 테이블 스페이스지정
 - QUOTA : 절을 사용하여 사용자가 사용할 테이블 스페이스의 영역할당
 - PASSWORD EXPIRE : 사용자가 SQL*PLUS를 사용하여 데이터베이스에 로그인할  때 암호를 재설정
                                      (사용자가  데이터베이스에 의해  인증될 경우에만 적합한 옵션)
 - ACCOUNT LOCK/UNLOCK :  사용자 계정을 명시적으로 잠그거나 풀 때 사용 (기본값:UNLOCK)
 - PROFILE : 자원 사용을 제어하고 사용자에게 사용되는 암호 제어 처리 방식을 지정하는데 사용

[보강 1]
 * 사용자를 생성할때 임시테이블스페이스를 따로 지정하는 것을 권장
     - 임시 테이블스페이스를 지정해 주지 않으면 시스템 테이블스페이스가 기본으로 지정 되지만
       시스템 테이블스페이스에 단편화를 방지

 사용자를 생성할때 DEFAULT TABLESPACE를 지정을 해서 사용자가 소유한 데이터와 객체들의
     저장 공간을 별도로 관리
     - 
DEFAULT TABLESPACE도 사용자를 생성할때 지정하지 않으면 기본적으로 시스템 테이블스페이스가
       지정되므로 단편화를 방지

 * 시스템 테이블스페이스는 본래의 목적(모든 데이터 사전 정보와, 저장 프로시저, 패키지, 데이터베이스 트리거등을 저장)을 위해서만 사용되어져야 하지 일반사용자의 데이터 저장용으로 사용 되어서는 안됩니다.

[보강 2]
테이블 스페이스란 ?
 - 오라클 서버가 테이터를 저장하는 논리적인 구조
 - 테이블스페이스는 하나 또는 여러개의 데이터파일로 구성되는 논리적인 데이터 저장 구조 


사용자 생성 예제

SQL PLUS를 실행시키고 SCOTT/TIGER로 접속을 합니다.
.
SQL>CREATE USER TEST IDENTIFIED BY TEST;

1행에 오류:
ORA-01031: 권한이 불충분합니다

SCOTT USER는 사용자 생성 권한이 없어서 사용자를 생성할 수 없습니다.
 
SQL>CONN SYSTEM/MANAGER       -- DBA Role이 있는 유저로 접속합니다.

SQL>CREATE USER TEST IDENTIFIED BY TEST;    -- USER를 다시 생성합니다.
 사용자가 생성되었습니다. 


 새로 생성한 USER로 접속해 볼까요..

SQL>
CONN TEST/TEST

ERROR:
ORA-01045: 사용자 TEST는 CREATE SESSION 권한을 가지고있지 않음; 로그온이
거절되었습니다

-  새로 생성한 TEST USER는 권한이 없어서 접근할 수가 없습니다.
-  모든 USER는 권한이 있고 권한에 해당하는 역할만 할 수 있습니다.
-  TEST라는 USER를 사용하기 위해서도 권한을 부여해주어야 합니다.


SQL> CONN SYSTEM/MANAGER
연결되었습니다.

SQL> GRANT connect, resource TO TEST ;
권한이 부여되었습니다.

SQL> CONN TEST/TEST
연결되었습니다.


'Databases' 카테고리의 다른 글

DB 사용자 변경(수정/삭제)  (0) 2011.03.28
DB 사용자 확인  (0) 2011.03.28
SQL의 종류(쿼리의 종류)  (0) 2011.03.28
AND

1.DDL (Data Definition Language) : 데이터와 그 구조를 정의

SQL문

내 용

CREATE

데이터베이스 객체 생성

DROP

데이터베이스 객체 삭제

ALTER

기존에 존재하는 데이터베이스 객체를 재정의



2. DML (Data Manipulation Language) : 데이터의 검색과 수정등의 처리

SQL문

내 용

INSERT

데이터베이스 객체에 데이터를 입력

DELETE

데이터베이스 객체에 데이터를 삭제

UPDATE

기존에 존재하는 데이터베이스 객체안의 데이터 수정

SELECT

데이터베이스 객체로부터 데이터를 검색



3.DCL (Data Control Language) : 데이터베이스 사용자의 권한을 제어

SQL문

내 용

GRANT

데이터베이스 객체에 권한 부여

REVOKE

이미부여된 데이터베이스 객체의 권한을 취소


'Databases' 카테고리의 다른 글

DB 사용자 변경(수정/삭제)  (0) 2011.03.28
DB 사용자 확인  (0) 2011.03.28
DB 사용자 생성  (0) 2011.03.28
AND