반응형

1. 유저명과 권한 을 표시되게 하기

set sqlprompt "_user _privilege> "

만약 sysdba 지정하면

SYS AS SYSDBA>

로 출력된다.

날짜와 같이 프롬프트를 수정하고자 한다면

SQL> set sqlprompt "_user _privilege 'on'  _date >"

SYS AS SYSDBA on 06-JAN-04 >

연결된 인식자까지 표시하고 싶다면

SQL> set sqlprompt "_user 'on' _date 'at' _connect_identifier >"

ANANDA on 06-JAN-04 at SMILEY >

이곳은 SMILEY 라는 SID를 통해 연결 된것입니다.

반응형
반응형

1. 지워진 테이블 조회

SQL> SELECT * FROM RECYCLEBIN;

SQL> SHOW RECYCLEBIN;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ ------------------
RECYCLETEST      BIN$04LhcpndanfgMAAAAAANPw==$0 TABLE        2004-02-16:21:13:31

RECYCLETEST 테이블이 지워진 것을 확인 가능하며,

SQL> FALSHBACK TABLE RECYCLETEST TO BEFORE DROP;

DROP 하기 전의 상태로 RECYCLETEST 테이블을 복원한다.

위와 같이 복구하는 방법은 무지 쉬우나...

단. !!!

PURGE RECYCLEBIN;

이나

DROP TABLE RECYCLETEST PURGE;

한 경우에는  영구적으로 삭제된다 -_-;;;

걍 DROP만하자 ~

2. 테이블 버젼과 플래쉬 백

CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (1);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (2);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (3);
COMMIT;
DROP TABLE TEST;

 

위와 같이 같은 테이블 명으로 여러번 지울 경우

 

같은 테이블명으로 복구가 불가능 하므로

 

TEST를 TEST1, TEST2로 각각 복구하는 방법은 아래와 같음

 

FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1

반응형
반응형

1. command line 에서 expdp 사용
    결과물을 저장할 디렉토리를 지정한다.
        SQL> create directory data_pump_test as '/home/oracle/data_pump_test/';

    생성한 디렉토리 오브젝트에 대한 권한을 유저에게 부여한다.
        SQL> grant read, write on directory data_pump_test to hr;

    사용자에게는 EXP_FULL_DATABASE, IMP_FULL_DATABASE 롤을 부여한다.
    실제로는 resouce 롤만으로도 기본적인 expdp, impdp 동작을 수행할 수 있다.
   
    expdp 실행
    # expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp

    - interactive command line
        expdp 진행 중에 컨트롤+C 키를 누르면 Export> 프롬프트가 뜬다.
        여기서 help를 타이핑하면 사용할 수 있는 명령들을 확인할 수 있다.

    data_pump_test 디렉토리에 생성된 export.log 파일의 내용을 확인한다.

    ※ {exclude|include} object_type[: "name_expr"]
            ex)
            - # expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp exclude=index:"like 'EMP%'"
            - # expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp include=view
        exclude는 해당 오브젝트를 제외하고 추출/입력
        include는 해당 오브젝트만을 추출/입력
       
        contents={all | metadata_only | data_only}


2. 병렬 처리
    parallel 파라메터는 몇 개의 스레드로 병렬 처리 할 것 인지 지정한다.
        # expdp hr/hr tables=paratest directory=data_pump_test dumpfile=paratest%U.dmp parallel=3 job_name=parr_test;

    paratest01.dmp, paratest02.dmp, paratest03.dmp 세 개의 파일이 생성된다.    

        # impdp hr/hr directory=data_pump_test dumpfile=paratest%U.dmp job_name=parr_test;

실행 예

SQL> create user dpumpuser identified by dpumpuser;
SQL> grant connect, resource, exp_full_database, imp_full_database to dpumpuser;
SQL> create directory data_pump as '/home/oracle/data_pump';
SQL >grant read, write on directory data_pump to dpumpuser;

$ expdp dpumpuser/dpumpuser full=y directory=data_pump dumpfile=20081030.dmp
$ impdp dpumpuser/dpumpuser directory=data_pump dumpfile=20081030.dmp

SQL> revoke read, write on directory data_pump from dpumpuser;
SQL> revoke connect, resource, exp_full_database, imp_full_database from dpumpuser;
SQL> drop directory data_pump;
SQL> drop user dpumpuser;

※ 만약 impdp 가 퍼미션 문제로 실행되지 않는다면 SYSDBA 로 로그인한 후,
SQL> execute dbms_metadata_util.load_stylesheets;
을 실행한 후 재시도.

특정 스키마의 구조와 데이터 추출
$expdp dpumpuser/dpumpuser schema=PORTAL directory=data_pump dumpfile=portal_schema_20081031.dmp

content를 사용해 특정 스키마의 데이터만 추출 (all | metadata_only | data_only)
$expdp dpumpuser/dpumpuser schemas=PORTAL content=data_only directory=data_pump dumpfile=portal_schema_data_20081031.dmp

table_exists_action 옵션 사용, 기존의 데이터를 truncate 하도록 (skip | append | truncate | replace)
    skip - 존재하는 오브젝트에 대해 임포트 스킵
    append - 기존 오브젝트에서 업는 행만을 임포트
    truncate - 기존 테이블 truncate
    replace - drop & recreate
$ impdp dpumpuser/dpumpuser table_exists_action=truncate directory=data_pump dumpfile=portal_schema_data_20081031.dmp

데이터 파일, 테이블 스페이스, 유저는 각각 다음의 옵션으로 변경할 수 있다.
REMAP_DATAFILE=’C:\user01.dbf’:’/usr/data/user01.dbf’
REMAP_TABLESPACE=’users’:’user’
REMAP_SCHEMA=scott:stralth

다음 옵션으로 expdp에 사용되는 공간을 추정할 수 있다.
estimate_only=Y
$ expdp dpumpuser/dpumpuser full=y estimate_only=Y

출처 ; http://devideby0.egloos.com/2097445

반응형
반응형

오라클 새로운 버젼이 나오면 항샹 봐야한다...





Oracle Database 10g: The Top 20 Features for DBAs

 

오라클 10g의 신기능 특징을 기술한 페이지

 

http://www.oracle.com/technology/pub/articles/10gdba/index.html

 

20주에 걸쳐 작업을 함..
 
Schedule

Week 1Flashback Versions Query
Week 2Rollback Monitoring
Week 3Tablespace Management
Week 4Oracle Data Pump
Week 5Flashback Table
Week 6Automatic Workload Repository
Week 7SQL*Plus Rel 10.1
Week 8Automatic Storage Management
Week 9RMAN
Week 10Auditing
Week 11Wait Interface
Week 12Materialized Views
Week 13Enterprise Manager 10g
Week 14Virtual Private Database
Week 15Automatic Segment Management
Week 16Transportable Tablespaces
Week 17Automatic Shared Memory Management
Week 18ADDM and SQL Tuning Advisor
Week 19Scheduler
Week 20Best of the Rest

반응형
반응형

Oracle Database 10g의 신기능인 자동 퍼포먼스 통계(AWR:Automatic Workload Repository)에 대해서 설명합니다.
1. 개요
2. 통계 수집하기 위한 설정
3. AWR의 정보의 확인 방법
3-1. 데이터·딕쇼내리
3-2. 리포트
4. AWR를 관리하기 위한 패키지
- AWR의 디폴트의 설정의 확인&변경
5. AWR가 사용하는 디크스 영역의 확인 방법
6. AWR의 snapshot를 백업( 각DB에 이행) 하는 방법에 관해서
이러한 기능의 근본이 되는 통계 정보는 자동 수집/관리를 일괄로 행하고 있습니다. 이 통계 정보의 자동 수집/관리 기능을 자동 작업의 부담량·리포지터리(repository)(AWR)라고 합니다.
AWR에서는 정기적(디폴트에서는 1시간 간격)으로 다양한 통계를 수집하여 그 집합을 snapshot 으로서 일정 보존 기간(디폴트에서는 1주간) 분의 스냅샷을 보존하고 있습니다.
AWR의 snapshot는 백그라운드 프로세스 MMON(Memory Monitor)와 MMNL(Memory Monitor Light)가 취득·딕쇼내리의 변경을 실시하고 있습니다.
※ 대부분의 통계를 MMON가 수집합니다만, UNDO 어드바이저나 ASH(Active Session History)의 정보 등 일부의 정보는 MMNL가 수집합니다.

또 시스템이 안정되어 있는 상태(적절한 퍼포먼스)로 운용하고 있는 타이밍(개시와 종료)의 snapshot를 「baseline」로서 등록해 두는것이 가능합니다.「baseline」는 보존 기간이 지나도 삭제되지 않습니다.시스템의 퍼포먼스가 돌연 열화 했을 경우 등에 「baseline」과 비교하는 것에 의해서 퍼포먼스 열화의 원인을 빠르게 발견할 수 있을 가능성이 있습니다.
1. 개요
Oracle Database 10g에서는 튜닝을 자동화 또는 어드바이스하기 위한 다수의 기능을 제공하고 있습니다.
- Automatic Database Diagnostic Monitor
- SQL Access Advisor
- SQL Tuning Advisor
- UNDO 어드바이저
- 세그먼트(segment)·어드바이저
어떠한 이유로 STATISTICS_LEVEL를 BASIC로 설정해 있는 경우에는 초기화 파라미터 TIMED_STATISTICS를 TRUE로 설정해 주세요.
2.통계를 수집하기 위한 설정
AWR에서 snapshot로서 수집하는 퍼포먼스 통계에는 많은 시간 통계(대기 시간이나 CPU 사용시간등)이 있습니다.그 때문에, 초기화 파라미터 STATISTICS_LEVEL를 TYPICAL(디폴트) 또는 ALL로 설정해 주세요.
3. AWR의 정보의 확인 방법
AWR의 정보를 확인하는 방법은 이하의 3개의 방법이 있습니다:
- Oracle Enterprise Manager Database Control(GUI)
- 데이터·딕셔너리
- 리포트
3-1. 데이터·딕셔너리
DBA_HIST_ 를 접두사로 한 데이터·딕셔너리·뷰로 AWR로 수집했다
snapshot에 격납되고 있는 데이터를 검색할 수 있습니다.
* DBA_HIST_SNAPSHOT 뷰로 관리하고 있는 snapshot의 취득기간이나 ID를 알수있다.
* DBA_HIST_WR_CONTROL 뷰로 AWR의 제어 정보
(snapshot 취득 간격이나 snapshot의 보존 기간등)을 확인할 수 있습니다.
3-2. 리포트
수집된 snapshot를 바탕으로 리포트를 작성할 수 있습니다.
AWR의 리포트와 STATSPACK리포트의 다른점은
<例>
SQL> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION
---------- -------------------- --------------------
244064102 +00000 01:00:00.0 +00007 00:00:00.0
상기예에서는 snapshot를 취득하는 간격이 1시간,
snapshot의 보관 유지 기간이 1주(7일간)로 설정되어 있는 것을 알 수 있습니다.
AWR의 설정은 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS로 실시합니다.
예를 들면 상기의 환경에서 AWR에 의한 snapshot의 취득을 일절 실시하지 않게 설정하기 위해서는 이하를 실행합니다:
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS
( retention => 0,
interval => 0,
dbid => 244064102
);
END;
/

snapshot 취득 간격 보관 유지 기간을 0으로 하면 DBA_HIST_WR_CONTROL의 표시는 아래와 같습니다. :

SQL> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION
---------- -------------------- --------------------
244064102 +40150 00:00:00.0 +40150 00:00:00.0

※ INTERVAL가 40150일(110년)이 되는 것은 사양상의 동작입니다.
※ 릴리스 1(10.1)의 메뉴얼에는 interval ZERO 를 지정했을 경우 최대치의 1년이 사용됩니다.라고 기술되어 있습니다만, 이것은 잘못된 기술입니다.릴리스 2 (10.2)의 메뉴얼에는 interval ZERO를 지정했을 경우, 자동 및 수동에 의한 snapshot는 무효가 됩니다로 수정되어 있습니다.
4.AWR를 관리하기 위한 패키지
AWR는 DBMS_WORKLOAD_REPOSITORY 패키지의 프로시저로 관리할 수 있습니다. AWR의 snapshot의 자동 수집의 주기나 보존 기간을 변경하거나 baseline의 등록이나 메인터넌스를 실시하는 등이 가능합니다.
- AWR의 설정을 확인&변경
AWR의 현재의 설정은 DBA_HIST_WR_CONTROL로 확인할 수 있습니다.
AWR에 의해서 취득한 snapshot의 데이터는 SYSAUX표 영역에 저장됩니다.
AWR가 사용하고 있는 디스크 영역은 이하의 SQL문으로 확인할 수 있습니다:
SQL> select space_usage_kbytes
from v$sysaux_occupants
where occupant_name='SM/AWR';
5.AWR가 사용하는 디스크 영역의 확인 방법
현상(Oracle Database 10g Release1(10.1.0) 및 Oracle Database 10g Release2 (10.2.0))에서는 AWR의 스냅샷·데이터를 EXP/IMP등에서 추출하는 방법은 없습니다.
Oracle10.2 의 이하의 메뉴얼에 추출할 수 있다고 기재가 있습니다만,이 기재는 문서의 버그입니다.
5.AWR의 snapshot를 백업(각각DB에 이행) 하는 방법에 관해서
==>추가내용
취득된 스냅샷은 DBA_HIST_SNPASHOP에서 확인 할수 있습니다.
반응형
반응형

EM 환경 재 구성

 

emca -config dbcontrol db -repos recreate

 

기본 암호는 oracle 이다... 몰라서 헤맸다...

 

 

I resolved the issue by creating soft links to the directory...

Let's say your original hostname was as01.corp.purisma.com, and your new hostname is as01. My SID is as01 in this example.

So, you need to change it in two places:

If your ORACLE_HOME is /d0/oracle/product/10.2.0/db_1, then:

Under: /d0/oracle/product/10.2.0/db_1
ln -s as01.corp.purisma.com_as01 as01_as01

Under: /d0/oracle/product/10.2.0/db_1/oc4j/j2ee
ln -s OC4J_DBConsole_as01.corp.purisma.com_as01 OC4J_DBConsole_as01_as01

I was then able to start the enterprise manager by issuing the standard 'emctl start dbconsole' command.

반응형
반응형

- crontab에 등록하면 sql 문이 동작하지 않네요.

->
이런 경우 대부분은 환경 변수관련 문제 입니다.
root로 su -oracle -c /home/oracle/backup.sh
이런식으로 해주시거나.

backup 스크립트에 ORACLE환경 변수를 넣어서 한번 해보세요 ^^

- 실행 SQL 확인

-> 이전에 실행한 SQL문 확인은 v$sql , v$sqlarea, v$sqltext 등에서 확인하실 수 있습니다.

 

v$archive_dest
v$archive_dest_status
v$archive_gap
v$archive_processes
v$archived_log
v$bh
v$buffer_pool
v$buffer_pool_statistics
v$controlfile
v$controlfile_record_section
v$database
v$datafile
v$datafile_header
v$dataguard_status
v$db_object_cache
v$enqueue_stat
v$event_name
v$eventmetric
v$filemetric
v$filestat
v$fixed_table
v$fixed_view_definition
v$instance
v$latch
v$librarycache
v$lock
v$locked_object
v$log
v$log_history
v$logfile
v$logmnr_contents
v$logstdby
v$managed_standby
v$mystat
v$nls_parameters
v$nls_valid_values
v$object_usage
v$open_cursor
v$option
v$parameter
v$pgastat
v$process
v$pwfile_users
v$recover_file
v$reserved_words
v$resource_limit
v$rollname
v$rollstat
v$session
v$session_event
v$session_longops
v$session_wait
v$session_wait_history
v$sessmetric
v$sesstat
v$sga
v$sga_dynamic_components
v$sga_resize_ops
v$sgastat
v$sort_segment
v$sort_usage
v$spparameter
v$sql
v$sql_bind_capture
v$sql_bind_data
v$sql_cursor
v$sql_plan
v$sql_text_with_newlines
v$sql_workarea
v$sqlarea
v$sqltext
v$sqltext_with_newlines
v$standby_log
v$statname
v$sysaux_occupants
v$sysmetric
v$sysmetric_history
v$sysstat
v$system_event
v$tempfile
v$tempseg_usage
v$tempseg_usage
v$tempstat
v$thread
v$timer
v$timezone_names
v$transaction
v$transportable_platform
v$undostat
v$version
v$waitstat

반응형
반응형

- 테이블 이동

(alter table .... move tablespace ...  / alter index .... rebuild tablespace...) -> 일반적인 이동

alter table TP_MIG_X move tablespace TS_DATA_01;
alter table TP_MIG_X move tablespace TS_DATA_01

- 파티션 테이블 이동

alter table TP_MIG_X  move partition SYS_P23  tablespace TS_DATA_01;

반응형

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

ORACLE EM Configuration  (0) 2009.03.08
오라클 환경과 관련된 내용  (0) 2009.03.08
RAC 자원 할당에 관한 질의/응답  (0) 2009.03.08
테이블별 용량 체크 쿼리  (0) 2009.03.08
Oracle 대용량 INSERT 속도개선  (0) 2009.03.08
반응형

1.  시스템이 3대면  최대 process 수는    150 * 3  =  450  인가요?
--> 이론적으로는 그렇지만...(정상적인 서비스의 상황일때...)
사실은 고려해야 하는 사항들이 있습니다.
특별이 로드밸런싱 없이 VIP통해 서비스 한다면 각 노드가 랜덤하게 세션을 받기때문에
한쪽 노드에 세션이 몰릴 수 있는 가능성도 있습니다.
(그래서 9i에서는 업부별 노드접속 파티셔닝을 하는 경우도 있었습니다.)
그리고 1개 또는 2개의 노드가 down되는 최악의 경우 나머지 노드가 모든 세션을 감당해야 하므로
실제 설정해야 하는 최대 process는 조금더 높게 잡으셔야 합니다.

select * from v$resource_limit; 
로 노드별 process의 MAX_UTILIZATION를 모니터링하면서 세개노드를 합한 값을
각 노드의 process 파라미터값으로 결정하시면 됩니다.


2. 시스템이 3대 각 8G memory 면    얼마정도 까지 잡아줘야 할까요?
--> SGA 크기에 따라 서버에서 실행되는 어플리케이션에 따라 적당히 결정.... ㅡㅡ;
top, topas, nmon등으로 확인했을 때의 메모리 사용량은 SGA를 쓰는것으로 알고 있습니다.
(이건 확실하지 않으므로 한번 확인해 보시기 바랍니다.)
한 세션이 실제 OS상에서 차지하는 메모리량을 계산하는 방법을 메타링크에서 본적이 있는데
기억이 나지 않는군요. 보통은 2~3MB 내외입니다. 
용도에 맞게 설정하시고... 시스템 메모리가 많이 남는다고 해서 굳이 꽉꽉 채워서 설정할 필요까지는 없습니다.

 

출처 : http://database.sarang.net/?inc=read&aid=35144&criteria=oracle&subcrit=qna&id=&limit=20&keyword=&page=5

반응형
반응형


TOAD등 툴을 통해 조회하면 쉽지만,

툴은 항상 있다고 보장되는것은 아니지 않는가?

물론 DBA 권한이 있다면 DBA_SEGMENTS를 통해서도 조회 가능하며

전체 테이블 용량도 조회 가능함 ~

select segment_type,segment_name,tablespace_name,to_char(round(bytes/1024/1024,1),'9,999,999') "MBytes"
from user_segments
where segment_type = 'TABLE'
order by segment_type,segment_name;
반응형

+ Recent posts