'Database > ORACLE' 카테고리의 다른 글
오라클 JDBC 버전별로 확인 (0) | 2011.04.01 |
---|---|
오라클 TRANSLATE (0) | 2011.03.31 |
오라클 누가 접근하는지 알아내기 IP 및 접근자 정보 (0) | 2011.03.02 |
테이블 정의서 추출 생성 스크립트 (0) | 2011.01.06 |
ORACLE SESSION Monitoring SQL (0) | 2011.01.05 |
오라클 JDBC 버전별로 확인 (0) | 2011.04.01 |
---|---|
오라클 TRANSLATE (0) | 2011.03.31 |
오라클 누가 접근하는지 알아내기 IP 및 접근자 정보 (0) | 2011.03.02 |
테이블 정의서 추출 생성 스크립트 (0) | 2011.01.06 |
ORACLE SESSION Monitoring SQL (0) | 2011.01.05 |
오라클 TRANSLATE (0) | 2011.03.31 |
---|---|
오라클 자격증 신청 절차 (0) | 2011.03.28 |
테이블 정의서 추출 생성 스크립트 (0) | 2011.01.06 |
ORACLE SESSION Monitoring SQL (0) | 2011.01.05 |
오라클 공부 방법 (0) | 2010.12.08 |
뭐... 엑셀로 바로 출력하자고 하니...
깔아야 하는것들이 너무 많고 -_-...
버젼별로 차이도 존재하니.. 귀찮아... 하앍....
그래서 걍.. 수작업 -_-
별도로 설치할 필요는 없고
아래와 같이 실행하여 spool 된 파일을 excel에서 불러
다시 가공처리...
뭐... 짜는 것도 그리 어렵지 않지만 후후.... -_-...
spool '/oracle/20110106_table.txt'
SET SERVEROUTPUT ON; DECLARE L_TABLE_NAME VARCHAR2(2000); CURSOR TABLE_LIST IS BEGIN L_TABLE_NAME := TABLE_DEF_LIST_GET.TABLE_NAME; DBMS_OUTPUT.PUT_LINE(' '); spool off |
오라클 자격증 신청 절차 (0) | 2011.03.28 |
---|---|
오라클 누가 접근하는지 알아내기 IP 및 접근자 정보 (0) | 2011.03.02 |
ORACLE SESSION Monitoring SQL (0) | 2011.01.05 |
오라클 공부 방법 (0) | 2010.12.08 |
오라클에서 사용량 많은 프로세스 죽이기 (0) | 2010.12.03 |
오라클 누가 접근하는지 알아내기 IP 및 접근자 정보 (0) | 2011.03.02 |
---|---|
테이블 정의서 추출 생성 스크립트 (0) | 2011.01.06 |
오라클 공부 방법 (0) | 2010.12.08 |
오라클에서 사용량 많은 프로세스 죽이기 (0) | 2010.12.03 |
오라클 일일 모니터링 (1) | 2010.11.05 |
기본은 오라클 교재입니다.
글을 보니 오라클을 M/A 하는 회사에 들어가신것 같은데요.
버젼은 9i를 기본으로 10gNF, 11gNF 순으로 공부하시기 바랍니다.
아직 현업에서 8이나 8i 버젼을 사용하는 곳도 꽤 있어서
9i부터 시작해야 전체적으로 볼 수 있을것 같습니다.
그리고 메타링크는 자료가 광범위 하지만
우선 install, upgrade, patch 순으로 공부를 시작해서
case by case study로 TPS를 공부하시구요.
ADTSP까지 공부하시면 일단 M/A에 기본적인 부분은 된거죠.
여기서부터 회사내 밥벌이 하면서 자신이 하고 싶은 분야를 찾아서 해야합니다.
RAC 전문가, 복구전문가를 하거나 SQL 전문가, 모델링 전문가 등으로 나가도 되구요.
일단 기본을 만든 후에 주위에 업계 선배들이 어떤 일을 하는지.
자신에게 맞는 일이 무엇인지 곰곰히 생각하고 결정하시기 바랍니다.
(뭐 한국 DBA의 현실은 만능을 원하지만요^^;; 그래도 주종목은 있어야겠죠?)
[출처] 엔지니어 신입 트러블슈팅 책 추천좀 해주세요^^ (ProDBA) |작성자 자산기술
테이블 정의서 추출 생성 스크립트 (0) | 2011.01.06 |
---|---|
ORACLE SESSION Monitoring SQL (0) | 2011.01.05 |
오라클에서 사용량 많은 프로세스 죽이기 (0) | 2010.12.03 |
오라클 일일 모니터링 (1) | 2010.11.05 |
오라클 이기종간의 DB 복제 (0) | 2010.10.15 |
1. 해당프로세스의 PID확인 후 수행
select s.sid, p.sid from v$session s, v$process p
where s.paddr=p.addr and p.spid="OSPID";
2. OSPID로 조회된 s.sid number을 이용하여 수행중인 SQL query를 확인
set long 10000
select a.sql_text from v$sqltext a,v$session b
where a.address=b.sql_address and
a.hash_valur=b.sql_hash_value and
b.sid=SID NUMBER order by a.piece;
OSPID에 processes ID넣으시면 되구요..
kill은 ALTER SYSTEM KILL SESSION '세션ID,시리얼번호';
v$session에서 조회하면sid,serial# 항목에 나오죠..
[출처] db 서버 load가 갑자기 증가 하였을때 원인 찾기 (ProDBA) |작성자 ora009
ORACLE SESSION Monitoring SQL (0) | 2011.01.05 |
---|---|
오라클 공부 방법 (0) | 2010.12.08 |
오라클 일일 모니터링 (1) | 2010.11.05 |
오라클 이기종간의 DB 복제 (0) | 2010.10.15 |
ORACLE PATCHSET Upgrade (0) | 2010.09.14 |
시스템 유지보수(SM)에는
디스크의 증가량을 주별 또는 월별로 모니터링하여 미리 할당할 수도 있고
보고용으로도 사용할 수 있도록 DB에 관리용 테이블을 만들어
자동으로 저장할 수 있도록 해 놓으면 시간이 많이 지난 다음에도
추이를 알 수 있어 유용합니다.
테이블스페이스 사용율(exec_tbs_usage.sh)을
매일 야간에 Crontab에서 실행할 수 있도록 등록하여 사용하는 샘플입니다.
% vi exec_tbs_usage.sh
#---------------------------------------------------------
# ORACLE 환경변수
#---------------------------------------------------------
export ORACLE_SID=TESTDB
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/10.2
:
#-------------------------------------------------
# 실행할 쉘이 존재하는 절대경로
#-------------------------------------------------
cd /oracle/app/product/10.2/DBA
echo "DB Tablespace Usage" > ./log/exec_tbs_usage.log
date >> ./log/exec_tbs_usage.log
TABLESPACE_USAGE.sh >> ./log/exec_tbs_usage.log
% vi TABLESPACE_USAGE.sh
#!/usr/bin/ksh
###############################################################################
#
# 일별 테이블스페이스(TABLESPACE) 사용량 저장
#
# *---------------------------------------------------------------------------
# * 일별 테이블 건수
# *---------------------------------------------------------------------------
# * Program : TABLESPACE_USAGE.sh
# * Object Name : 없음
# * Object Type : PL/SQL
# * OutPut Table : DBMANAGER.TABLESPACE_USAGE
# * Create Date : 2010-06-10
# *-------------------------------------------------------------------------*/
# *
# * Execution Sample : exec_tablespace_usage.sh (cron job)
# * TABLESPACE_USAGE.sh
# * SQL Exec. : sqlplus / as sysdba
# *
# *-------------------------------------------------------------------------*/
#
###############################################################################
#----------------------------------------------
#-- DB수집정보를 저장할 오라클 계정 생성 및 Grant
#----------------------------------------------
#-- DROP USER DBMANAGER CASCADE;
#-- CREATE USER DBMANAGER IDENTIFIED BY DBMANAGER
#-- DEFAULT TABLESPACE TOOLS TEMPORARY TABLESPACE TEMP;
#--
#-- GRANT SELECT_CATALOG_ROLE, SELECT ANY TABLE, SELECT ANY DICTIONARY TO DBMANAGER;
#-- GRANT UNLIMITED TABLESPACE TO DBMANAGER;
#-- GRANT BECOME USER TO DBMANAGER;
#-- GRANT CREATE VIEW TO DBMANAGER;
#-- GRANT CREATE TABLE TO DBMANAGER;
#-- GRANT ALTER SESSION TO DBMANAGER;
#-- GRANT CREATE SESSION TO DBMANAGER;
#-- GRANT CREATE SYNONYM TO DBMANAGER;
#-- GRANT SELECT ANY TABLE TO DBMANAGER;
#-- GRANT SELECT ANY SEQUENCE TO DBMANAGER;
#-- GRANT SELECT ANY DICTIONARY TO DBMANAGER;
#--
#--
#----------------------------------------------
#-- DB수집정보를 저장할TABLE 생성 및 Grant
#----------------------------------------------
#--
#-- DROP TABLE DBMANAGER.TABLESPACE_USAGE PURGE;
#-- CREATE TABLE DBMANAGER.TABLESPACE_USAGE
#-- ( GATHER_DATE CHAR(8) DEFAULT TO_CHAR(SYSDATE,'YYYYMMDD') NOT NULL,
#-- TABLESPACE_NAME VARCHAR2(30) NOT NULL,
#-- ALLOC_KBYTES NUMBER DEFAULT 0 NOT NULL,
#-- USED_KBYTES NUMBER DEFAULT 0 NOT NULL,
#-- EXEC_DATETIME DATE DEFAULT SYSDATE NOT NULL
#-- ) TABLESPACE TOOLS;
#--
#-- CREATE UNIQUE INDEX
#-- DBMANAGER.UK_TABLESPACE_USAGE_01 ON DBMANAGER.TABLESPACE_USAGE(GATHER_DATE, TABLESPACE_NAME)
#-- TABLESPACE TOOLS;
#-- COMMENT ON TABLE DBMANAGER.TABLESPACE_USAGE IS '테이블스페이스 크기 및 사용량';
#--
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.GATHER_DATE IS '수집 일시';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.TABLESPACE_NAME IS '테이블스페이스 명';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.ALLOC_KBYTES IS '할당된 크기(KB)';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.USED_KBYTES IS '사용된 크기(KB)';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.EXEC_DATETIME IS '수행 일시';
#---------------------------------------------------------
# ORACLE 환경변수
#---------------------------------------------------------
export ORACLE_SID=TESTDB
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/10.2
:
#-------------------------------------------------
# 실행할 쉘이 존재하는 절대경로
#-------------------------------------------------
cd /sw/oracle/app/product/10.2/DBA
if [ $# != 0 ]
then
echo "\n-----------------------------------------"
echo "\n인수(Argument) 갯수가 틀립니다."
echo "\n실행 예) : TABLESPACE_USAGE.sh"
echo "\n-----------------------------------------"
exit
fi
#---------------------------------------------------------
# 입력 값 없음
#---------------------------------------------------------
##################################
##### [ 오라클 PL/SQL Start] #####
##################################
#--------------------
#-- SQL*PLUS 접속
#--------------------
sqlplus -s /nolog<<EOF
SET SERVEROUTPUT ON
SET PAGESIZE 0 SQLPROMPT "" ECHO OFF HEADING OFF FEEDBACK OFF TIMING OFF VERIFY OFF TERMOUT ON TRIMSPOOL ON
---------------------
-- SYS 계정으로 접속
---------------------
connect / as sysdba
DECLARE
-------------------------------------------------------
-- 커서 변수 선언
-------------------------------------------------------
cursor_insert INTEGER;
cursor_delete INTEGER;
-------------------------------------------------------
-- 데이터 값을 저장할 변수 선언
-------------------------------------------------------
v_dummy NUMBER;
v_gather_date VARCHAR2(08) := TO_CHAR(SYSDATE,'YYYYMMDD');
-------------------------------------------------------
-- SQL 문장을 저장할 변수 선언
-------------------------------------------------------
insertStmt VARCHAR2(2000);
deleteStmt VARCHAR2(2000);
BEGIN
-------------------------------------------------------
-- CURSOR 열기
-------------------------------------------------------
cursor_insert := DBMS_SQL.OPEN_CURSOR;
cursor_delete := DBMS_SQL.OPEN_CURSOR;
-----------------------------------------------------------------
-- 중복 데이터에 의한 오류를 방지하기 위해
-- DBMANAGER.TABLESPACE_USAGE에 있는 해당일자(TODAY)의 정보 삭제
-----------------------------------------------------------------
deleteStmt := 'DELETE /*+ parallel(A 8) */ FROM DBMANAGER.TABLESPACE_USAGE A WHERE A.GATHER_DATE = :gather_date';
DBMS_SQL.PARSE( cursor_delete, deleteStmt, DBMS_SQL.NATIVE );
DBMS_SQL.BIND_VARIABLE( cursor_delete, 'gather_date', v_gather_date );
v_dummy := DBMS_SQL.EXECUTE( cursor_delete );
-------------------------------------------------------
-- DBMANAGER.TABLESPACE_USAGE에 입력(INSERT)
-------------------------------------------------------
insertStmt := ' INSERT INTO DBMANAGER.TABLESPACE_USAGE '||
' ( GATHER_DATE, TABLESPACE_NAME, ALLOC_KBYTES, USED_KBYTES ) '||
' SELECT :gather_date, C.TABLESPACE_NAME, '||
' NVL(A.TOTAL,0) ALLOC_KBYTES, '||
' NVL(A.TOTAL,0) - NVL(B.FREE,0) USED_KBYTES '||
' FROM (SELECT TABLESPACE_NAME, '||
' NVL(ROUND((SUM(BYTES)/1024),2),0) TOTAL '||
' FROM SYS.DBA_DATA_FILES '||
' GROUP BY TABLESPACE_NAME) A, '||
' (SELECT TABLESPACE_NAME, '||
' NVL(ROUND((SUM(BYTES)/1024),2),0) FREE '||
' FROM SYS.DBA_FREE_SPACE '||
' GROUP BY TABLESPACE_NAME) B, '||
' DBA_TABLESPACES C '||
' WHERE C.TABLESPACE_NAME = A.TABLESPACE_NAME(+) '||
' AND C.TABLESPACE_NAME = B.TABLESPACE_NAME(+) '||
' AND C.TABLESPACE_NAME NOT LIKE '||'''TEMP%''' ;
DBMS_SQL.PARSE( cursor_insert, insertStmt, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE( cursor_insert, 'gather_date', v_gather_date );
v_dummy := DBMS_SQL.EXECUTE( cursor_insert );
-------------------------------------------------------
-- CURSOR 닫기
-------------------------------------------------------
DBMS_SQL.CLOSE_CURSOR( cursor_insert );
DBMS_SQL.CLOSE_CURSOR( cursor_delete );
COMMIT;
EXCEPTION
-- WHEN DUP_VAL_ON_INDEX THEN
-- DBMS_OUTPUT.PUT_LINE('DUP_VAL_ON_INDEX 에러-중복되는 데이터가 존재');
-- WHEN TOO_MANY_ROWS THEN
-- DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS 에러-리턴해야 하는 SELECT문이 하나 이상의 행을 반환');
-- WHEN NO_DATA_FOUND THEN
-- DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND 에러-SELECT문이 아무런 데이터 행을 반환하지 못함');
-- WHEN INVALID_CURSOR THEN
-- DBMS_OUTPUT.PUT_LINE('INVALID_CURSOR 에러-잘못된 커서 연산');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERR CODE : ' || TO_CHAR(SQLCODE));
DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);
END;
/
exit
EOF
환경 : Unix, Aix5L, Oracle10gR2
[출처] DB 일일점검 하시는 DBA님들은 어떤식으로..? (ProDBA) |작성자 smileDBA
오라클 공부 방법 (0) | 2010.12.08 |
---|---|
오라클에서 사용량 많은 프로세스 죽이기 (0) | 2010.12.03 |
오라클 이기종간의 DB 복제 (0) | 2010.10.15 |
ORACLE PATCHSET Upgrade (0) | 2010.09.14 |
오라클 라이브러리 (참고문서) (0) | 2010.09.10 |
Oracle version이 10.2.0.4로 동일하고 DB간 character set 도 동일하다고 가정한다면....
그냥 데이타파일을 copy하면 안되고요...
Cross-Platform Transportable Tablespaces 기능을 사용하시면 됩니다.
이때 Source 와 Target DB에서 아래를 조회해서 endian format이 같은지 검사해서...
아래 경우 little endian인데...source db와 target db의 os가 동일한 endian이면 상관없지만
SQL> select PLATFORM_ID, PLATFORM_NAME from v$database;
PLATFORM_ID PLATFORM_NAME
----------- ------------------------------
10 Linux IA (32-bit)
SQL> select * from v$transportable_platform;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ------------------------------ --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little <--- Little endian임.
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux 64-bit for AMD Little
16 Apple Mac OS Big
12 Microsoft Windows 64-bit for A Little
MD
다를 경우 Rman으로 Data File Conversion 을 해야 합니다.
- Source 에서
> rman target=/
RMAN> Convert Tablespace 'FINANCE, HR' to Platform ='AIX_Based System (64-bit)' <--
v$transportable_platform.platform_name
DB_FILE_NAME_CONVERT = '/orahome/dbs1', '/orahome/dbs/transport_aix',
'/orahome/dbs2', '/orahome/dbs/transport_aix';
<--해당 디렉토리 아래 FINANCE, HR TS에 해당하는 모든 것을 convert하여 지정된 디렉토리 아래로 copy
또는
- Target 에서
> rman target=/
RMAN> Convert Datafile '/tmp/transport_stage/*' From Platform = 'Solaris[tm] OE (32-bit)'
DB_FILE_NAME_CONVERT = '/tmp/transport_stage/fin', '/orahome/dbs1/fin',
'/tmp/transport_stage/hr', '/orahome/db2/hr';
- DB_FILE_NAME_CONVERT 가 없으면 flash recovery area에 같은 이름으로 만들어진다.
- Parallelism option은 parallel하게 복수개의 file을 convert할때 사용. Convert 시간은 Rman으로
백업할때 걸리는 시간과 같다. Convert 전후의 file size는 변함이 없다.
TDB라는 방법도 있습니다.
HP.UX -> AIX로 진행 해 봤는데..
시간이 많이 걸리던 순서대로 나열하면 exp/imp, TTS, TDB 순서 더군요...
참고 하세요..
[출처] unix -> xp 데이터베이스 복제 질문입니다. (ProDBA) |작성자 개굴개굴
오라클에서 사용량 많은 프로세스 죽이기 (0) | 2010.12.03 |
---|---|
오라클 일일 모니터링 (1) | 2010.11.05 |
ORACLE PATCHSET Upgrade (0) | 2010.09.14 |
오라클 라이브러리 (참고문서) (0) | 2010.09.10 |
proc: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory (0) | 2010.09.09 |
*patch 순서 정리
1. shared_pool_size/java_pool_size=>150M요구
① SYS> show parameter sga_m <-확인
② SYS> shutdown immediate
③ SYS> create pfile from spfile
④ SYS> vi /u01/app/oracle/product/10.2.0/db_1/dbs/initdb01.ora
⑤ sga_max_size=293601280(280*1024*1024=293601280)
⑥ SYS> create spfile from pfile
⑦ SYS> startup
⑧ SYS> show parameter sga_m <-확인
⑨ SYS> alter system set shared_pool_size=100m;
⑩ SYS> alter system set java_pool_size=100m;
2. patch전 서비스 종료
① db shutdown -> SQL*PLUS 종료
② lsnrctl stop -> Listener 종료
③ emctl stop dbsonsole -> emctl 종료
④ root 계정에서
/u01/app/oracle/product/10.2.0/db_1/bin/crsctl stop crs
-> asm 설치할때 필요한 crs입니다.
3. patch 설치 -> ./runinstall
① next
② script 확인
③ y
4. startup upgrade
① export ORACLE_SID=db01 -> 접속
② sqlplus /as sysdba
③ startup upgrade
5. $ORACLE_HOME/rdbms/admin/catupgrd.sql
① @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/catupgrd.sql
6. shutdown immediate
7. startup
8. $ORACLE_HOME/rdbms/admin/utlrp.sql
-> dba_objects.status의 값이 invalid가 없을 때까지 재실행!!!
① @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utlrp.sql
② select status from dba_objects;
[출처] Oracle 10.2.0.1.0 to 10.2.0.4.0 Upgrade (Oracle University (Korea)) |작성자 마이너스
오라클 일일 모니터링 (1) | 2010.11.05 |
---|---|
오라클 이기종간의 DB 복제 (0) | 2010.10.15 |
오라클 라이브러리 (참고문서) (0) | 2010.09.10 |
proc: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory (0) | 2010.09.09 |
ORACLE 11g R2 -> ORACLE 10G R2 로 migration(마이그레이션) (0) | 2010.09.09 |
오라클 이기종간의 DB 복제 (0) | 2010.10.15 |
---|---|
ORACLE PATCHSET Upgrade (0) | 2010.09.14 |
proc: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory (0) | 2010.09.09 |
ORACLE 11g R2 -> ORACLE 10G R2 로 migration(마이그레이션) (0) | 2010.09.09 |
SQL Plus 명령어 (0) | 2010.08.23 |