반응형

사용자의 패스워드 주기를 알고 싶을 때 쿼리

 

사용자에 적용된 profile 확인

select username,profile from dba_users where username = 'scott';

 

프로파일에 적용된 패스워드 권한 확인

select * from dba_profiles where profile = 'DEFAULT';

 

PASSWORD_LIFE_TIME:패스워드를 변경해야하는 주기

PASSWORD_REUSE_TIME:패스워드 변경시 이전 패스워드를 재사용할 수 있는 기간(즉, 해당 기간이 지나야 재사용 가능)

반응형
반응형

아래와 같은 테이블이 존재한다.

SQL> select name, reg_date from temp_food_info;

NAME REG_DATE
archor 2022/04/05 23:44:11
milk 2022/04/06 10:23:44
water 2022/04/07 00:00:00
chicken 2022/04/07 00:00:01
meat 2022/04/08 00:10:00

 

여기서 우리는 등록날짜가 4/6~4/7 데이터를 산출 할 것이다.

SQL> select *

from temp_food_info

where reg_date between to_date('20220406','yyyymmdd') and to_date('20220407','yyyymmdd')

;

 

결과값

NAME   REG_DATE
------- -------------------
milk      2022/04/06 10:23:44
water   2022/04/07 00:00:00

등록일이 4/7 임에도 불구하고 chicken 이 누락되었다.

이유는 날짜만 지정하였을 경우 시간대는 00:00:00으로 인식하기 때문에 4/7 00:00:00 이후 데이터는 조회가 되지 않는다.

그러므로 2022/04/07 00:00:01 에 등록된 chicken은 누락이 된 것이였다.

 

해결방법은 간단하다. 날짜 조건을 시간까지 포함 또는 그 이상의 날짜를 넣자. 

(1) 시간포함

where reg_date between to_date('2022/04/06 00:00:00','yyyy/mm/dd hh24:mi:ss')

and to_date('2022/04/07 23:59:59','yyyy/mm/dd hh24:mi:ss')

 

(2) 그 이상의 날짜

where reg_date >= to_date('20220406','yyyymmdd')

and reg_date < to_date('20220408','yyyymmdd')

 

간과하지 말고 항상 주의를 기울어야 겠다.

 

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

패스워드 주기 확인  (0) 2022.04.22
[oracle19c] 사용자 생성 및 삭제 (ORA-65096, ORA-28014)  (0) 2022.03.24
11g alert 파일 경로 확인  (0) 2022.02.09
shmmax 값에 대한 추측성 글  (0) 2015.03.10
External Table  (0) 2014.07.16
반응형

(1) 생성

SQL> create user scott identified by "tiger";

ERROR at line 1:

ORA-65096: invalid common user or role name

 

SQL> create user "C##SCOTT" identified by "tiger";

-> 12c부터 바뀌 C##을 붙여줘야한다고 함. 근데 저렇게 생성하면 C##도 사용자명에 포함되버리는데 왜 저렇게 했을까나?

 

or

 

SQL> alter session set "_ORACLE_SCRIPT"=true;

SQL> create user scott identified by "tiger";

 

(2) 삭제

SQL> drop user scott [CASCADE];

여기서 ORA-28014: cannot drop administrative user or role

이런 에러가 발생된다면 _ORACLE_SCRIPT가 true로 설정 되어 있는지 확인해보자.

SQL> show parameter _oracle_script;

 

_ORACLE_SCRIPT 파라미터 값이 왜 생겼는지 의문이다.

은근 불편할뿐더러 이 파라미터 존재를 모른다면 맨땅에 헤딩하며 시간만 낭비할 것으로 보인다.

 

필자도 역시 짜증이 밀려온다 ㅎㅎ

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

패스워드 주기 확인  (0) 2022.04.22
아주 쉬우면서도 착각할 수도 있는 날짜 조회  (0) 2022.04.07
11g alert 파일 경로 확인  (0) 2022.02.09
shmmax 값에 대한 추측성 글  (0) 2015.03.10
External Table  (0) 2014.07.16
반응형

SQL> select * from v$diag_info where name = 'Diag Trace';

반응형
반응형

현재 서버

shmmax=1g

shmseg=120

SGA = 48G


신규서버

shmmax=1g

shmseg=120

SGA = 110G 위로 올라가지 않음.


왜 그런 것인지를 찾아봄.


shmmax 할당 : SGA 보다 크거나 같게 설정하는 것을 권장한다고 함.


현재 알아본 바로는,

1. sga 값보다 shmmax를 낮게 설정하면, 여러개의 shared memory가 뜨는 것을 볼 수 있다.

 - ipcs -ma 명령어로 SEGSZ 값을 합산하면 대략적으로 sga값과 동일하게 나온다.

2. sga 값보다 shmmax를 높게 설정하면, 한개의 shared memory가 뜨는 것을 볼 수 있다.


의문. sga 값보다 shmmax를 낮게 설정하였는데, 에러가 발생하였다.

       - ORA-27123: unable to attach to shared memory segment

      위 1번에 의하면 여러개의 shared memory가 떠야하는 것이 아닌가?


답변추측. shmseg 값이 현재 120으로 설정되어있다. shared memory가 120개가 초과하여 발생하는 문제 같다.

          sga 가 48g로 설정되어 있고 shmmax 가 1기가로 설정되어 있었을 때, 53개의 메모리가 떴다.

          그러면 192g로 설정을 하려고 하니 120개를 초과하여 발생하는 문제 인 것 같다.


이를 검증하기 위해서는, 아래와 같이 한번 해보자

1. shmmax 에 값을 sga 값만큼 올려주고, shared memory 개수를 확인.

2. shmmax 값은 그대로 두고 shmseg 값만 올려주고 shared memory 개수를 확인.


설명에 의하면 아래와 같으니 내 추측이 맞을 것이라 봄.


커널이 공유메모리(오라클이 SGA로 사용할) 할 당 방법

 1. 공유메모리로 사용할 물리적 메모리가 충분할 경우.

  -> 하나의 세그먼트에 전체 SGA 할당

 2. 하나의 세그먼트에 다 할당할 수 없는 경우

  -> 연속된 여러 세그먼트로 분산시켜 할당

 3. 두번째 방법도 여의치 않을 경우

  -> 연속되지 않은 여러 세그먼트에 분산시켜 할당

* SGA내 fixed Area 부분은 반드시 전체가 하나의 세그먼트에 할당되어야 함.


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

테스트 결과는 맞게 나옴.

다만, 커널값을 shmmax, shmseg 등 설정값을 늘려주었다고 하더라도,

pfile에 또 하나의 값을 변경해줘야지 DB가 startup 될 수 있다.

만약 그렇지 않으면, ORA-00064 에러가 난다.(ORA-00064: object is too large to allocate on this OS(1,4086000))

pfile에 추가할 파라미터, _ksmg_granule_size=33554432(32M)

- default = 16777216(16M)


* granule size 확인

select name, bytes/1024/1024 "size" from v$sgainfo where upper(name) like '%GRANULE%'


NAME                                                                   size

------------------------------------------------------------- ----------

Granule Size                                                            32



Granule(메모리 할당 단위)

 - SGA 메모리는 연속적인 메모리 조각(Chunk) 을 뜻하는 Granule 이란 단위로 할당된다.

 - Granule의 크기는 SGA 총 크기에 의해 결정된다. SGA의 크기가 1GB 이하라면 Granule의 크기는 4MB, 1GB 이상이라면 Granule 크기는 16MB 가 된다.

 - SGA의 각 컴포넌트들에 쓰여지는 Granule size는 v$sgainfo 로 조회가 가능하다.



반응형

'Oracle > Oracle Study' 카테고리의 다른 글

[oracle19c] 사용자 생성 및 삭제 (ORA-65096, ORA-28014)  (0) 2022.03.24
11g alert 파일 경로 확인  (0) 2022.02.09
External Table  (0) 2014.07.16
archive 와 log switch v$log  (0) 2013.01.18
rowid의 변화  (0) 2013.01.17
반응형

drop table temp_pgheo_external;

drop directory TEST;


create directory TESTas '/data16/tmp';


create table temp_pgheo_external

(server_date varchar2(14)

,code1 varchar2(20)

,code2 varchar2(20)

,code3 varchar2(20)

,code4 varchar2(20)

,code5 varchar2(20)  

)

organization external

(

    type oracle_loader

    default directory BDUMP

    access parameters(

                        --recodrds fixed 63

                        records delimited by newline

                        fields terminated by ","  --필드를 구분할 수 있는 구분자 지정

(server_date varchar2(14)

,code1 varchar2(20)

,code2 varchar2(20)

,code3 varchar2(20)

,code4 varchar2(20)

,code5 varchar2(20)  

)

                     )

    location('external_01.txt','external_02.txt','external_03.txt','external_04.txt')

)

reject limit unlimited

;


데이터가 계속 0 row로 뿌려주고 있어, 명령어가 잘못되었는 줄 알고 한참을 찾아보고 수정했더니,

결론은 데이터 포맷이 맞지 않아 발생된 문제였음.

컬럼에 따라 하나라도 어긋나면 작동이 안되는 것 같다.

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

11g alert 파일 경로 확인  (0) 2022.02.09
shmmax 값에 대한 추측성 글  (0) 2015.03.10
archive 와 log switch v$log  (0) 2013.01.18
rowid의 변화  (0) 2013.01.17
기본적인 궁금증들(?)  (0) 2012.09.23
반응형

v$log 가 처리되는 순서(?)를 보고자 함..


현재 대량 데이터를 삭제중에 있다.


select a.group#, member, bytes/1024/1024, a.status, archived

from

(select * from v$log) a,

(select * From v$logfile) b

where a.group#=b.group#

order by group#, member

;


위 쿼리를 지속적으로 모니터링을 해보았다.


log switch가 발생하면 alert 파일에 기록이 남고 status는 active 상태로 변환. 

status가 inactive 로 변경되면, archive 파일로 떨구는 작업을 진행하게 된다.

이후 archived 컬럼은 NO에서 YES로 변경되면서 다음 log switch가 발생할 때 까지 기다린다.


archive 파일로 떨구는 작업보다 log switch가 더 빠르면 alert 파일에는 아래와 같은 문구가 나온다.

All online logs needed archiving





반응형

'Oracle > Oracle Study' 카테고리의 다른 글

shmmax 값에 대한 추측성 글  (0) 2015.03.10
External Table  (0) 2014.07.16
rowid의 변화  (0) 2013.01.17
기본적인 궁금증들(?)  (0) 2012.09.23
Windows Oracle 10g 설치  (0) 2012.09.23
반응형

현재 데이터의 rowid가 dml 작업시 변화가 있을까하여 몇가지 테스트를 해보았다.


* TEMP 테이블 생성

create table temp_rid_test tablespace users nologging as

select 1 no,'aaaaa' depth from dual union all

select 2,'bbbb' from dual union all

select 3,'xxxxx' from dual union all

select 4,'ddddd' from dual union all

select 5,'hhhha' from dual union all

select 6,'agghha' from dual

;


* 현재 rowid

select rowid, no, depth from temp_rid_test;

 ROWID

 NO

DEPTH 

 AAA8vIAAMAABYt0AAA  1  aaaaa
 AAA8vIAAMAABYt0AAB  2  bbbb
 AAA8vIAAMAABYt0AAC  3  xxxxx

 AAA8vIAAMAABYt0AAD

 4  ddddd
 AAA8vIAAMAABYt0AAE  5  hhhha
 AAA8vIAAMAABYt0AAF  6  agghha


* update

update temp_rid_test set no=7 where no=1;

commit;


select rowid, no, depth from temp_rid_test;

 ROWID

 NO

DEPTH 

 AAA8vIAAMAABYt0AAA

 7

 aaaaa
 AAA8vIAAMAABYt0AAB 2 bbbb
 AAA8vIAAMAABYt0AAC 3 xxxxx

 AAA8vIAAMAABYt0AAD

 4 ddddd
 AAA8vIAAMAABYt0AAE 5 hhhha
 AAA8vIAAMAABYt0AAF 6

 agghha


* delete

delete from temp_rid_test where no=7;

commit;


select rowid, no, depth from temp_rid_test;

 ROWID

NO 

DEPTH 
 AAA8vIAAMAABYt0AAB  2  bbbb
 AAA8vIAAMAABYt0AAC

 3

 xxxxx
 AAA8vIAAMAABYt0AAD  4  ddddd
 AAA8vIAAMAABYt0AAE  5  hhhha
 AAA8vIAAMAABYt0AAF  6  agghha

* update(특정로우에 대한 큰용량 byte로 갱신) - 2000byte

alter table temp_rid_test modify depth varchar2(2000);

select lengthb('AAA......생략')

from dual  --1710

;


update temp_rid_test

set depth = 'AAA......생략'

where no = 6

;

commit;

select rowid, no, depth from temp_rid_test;

 ROWID

NO 

DEPTH 
 AAA8vIAAMAABYt0AAB 2 bbbb
 AAA8vIAAMAABYt0AAC

 3

 xxxxx
 AAA8vIAAMAABYt0AAD 4 ddddd
 AAA8vIAAMAABYt0AAE 5 hhhha
 AAA8vIAAMAABYt0AAF 6

 aaaa....


* update(특정로우에 대한 큰용량 byte로 갱신) - 4000byte

alter table temp_rid_test modify depth varchar2(4000);

select lengthb('AAA......생략')

from dual  --3478

;


update temp_rid_test

set depth = 'AAA......생략'

where no = 6

;

commit;

select rowid, no, depth from temp_rid_test;

 ROWID

NO 

DEPTH 
 AAA8vIAAMAABYt0AAB 2 bbbb
 AAA8vIAAMAABYt0AAC

 3

 xxxxx
 AAA8vIAAMAABYt0AAD 4 ddddd
 AAA8vIAAMAABYt0AAE 5 hhhha
 AAA8vIAAMAABYt0AAF 6

 aaaa....


* 결론

dml 작업시 rowid의 변화는 없었다.


반응형

'Oracle > Oracle Study' 카테고리의 다른 글

External Table  (0) 2014.07.16
archive 와 log switch v$log  (0) 2013.01.18
기본적인 궁금증들(?)  (0) 2012.09.23
Windows Oracle 10g 설치  (0) 2012.09.23
characterset 변환  (0) 2012.07.17
반응형

문득 생각났던 부분을 테스트 해본 결과이다. 중요하지는 않지만 궁금해서...

어이없는 궁금증이였던가? ㅋㅋ


1. archive mode 가 아니면 hot backup을 할 수가 없다.

SQL> alter tablespace system begin backup;

alter tablespace system begin backup

*

ERROR at line 1:

ORA-01123: cannot start online backup; media recovery not enabled


SQL>


2. 핫백업시 다시 begin backup 명령어 먹는가?

SQL> alter tablespace system begin backup;


Tablespace altered.


SQL> alter tablespace system begin backup;

alter tablespace system begin backup

*

ERROR at line 1:

ORA-01146: cannot start online backup - file 1 is already in backup

ORA-01110: data file 1: '/home/oradata/PROD/data1/system01.bdf'


SQL>


3. 10g부터 바뀐 hotbackup 명령어 : 테이블스페이스마다 begin backup을 해줄 필요가 없다.

SQL> alter database begin backup;


Database altered.


SQL> alter database end backup;


Database altered.


SQL>


4. dba_tables, user_tables, all_tables 에 있는 extents 는 테이블들이 설정되어 있는 값들이다.

   테스트를 해보니 값에 대한 변화가 없었다.

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

archive 와 log switch v$log  (0) 2013.01.18
rowid의 변화  (0) 2013.01.17
Windows Oracle 10g 설치  (0) 2012.09.23
characterset 변환  (0) 2012.07.17
minus 에 대한 위험(?)  (0) 2012.06.21
반응형

몇 년전 오라클 교육을 받은 이후로 처음 윈도우에 오라클을 설치해보았다.

DB 설치 시 윈도우와 리눅스가 초기  설정이 다소 다르다는 것을 잠시 잊고 있었다.


윈도우에 생성 시 초기 해야할 작업.

1.  서비스 등록 (oradim)


D:\PROD\script>oradim -new -sid PROD -startmode A

인스턴스가 생성되었습니다.


D:\PROD\script>set oroacle_sid=PROD


D:\PROD\script>sqlplus "/as sysdba"


cf.

  oradim -new -sid PROD : 서비스 등록

  oradim -delete -sid PROD : 서비스 해제

  startmode A : 자동모드로 변환


2. shutdown 또는 startup 시 별도의 인증없이 DB 관리자 역할을 수행  (orapwd)

  orapwd file=%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora password=1234


cf.

  pfile 또는 spfile등 리눅스에서는 $ORACLE_HOME/dbs에 종속시켜야 하지만,

  윈도우 에서는 %ORACLE_HOME%\database에 종속시켜야한다.


3. 만약 위 1번의 작업을 수행하지 않는다면 아래와 같은 에러가 나올 것이다.

  ERROR: ORA-12560: TNS:프로토콜 어댑터 오류



반응형

'Oracle > Oracle Study' 카테고리의 다른 글

rowid의 변화  (0) 2013.01.17
기본적인 궁금증들(?)  (0) 2012.09.23
characterset 변환  (0) 2012.07.17
minus 에 대한 위험(?)  (0) 2012.06.21
Datafile resize에 대한 오해(?)  (0) 2012.01.20
반응형

SQL> !lsnrctl stop listener

...

..

.


SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.


Total System Global Area 2550136832 bytes

Fixed Size                  2022920 bytes

Variable Size             536871416 bytes

Database Buffers         1996488704 bytes

Redo Buffers               14753792 bytes

Database mounted.

SQL> alter system enable restricted session;


System altered.


SQL> alter system set job_queue_processes=0;


System altered.


SQL> alter system set aq_tm_processes=0;


System altered.


SQL> alter database open;


Database altered.


SQL> alter database character set internal_use KO16KSC5601;


Database altered.


SQL> shutdown immediate;


SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.


Total System Global Area 2550136832 bytes

Fixed Size                  2022920 bytes

Variable Size             536871416 bytes

Database Buffers         1996488704 bytes

Redo Buffers               14753792 bytes

Database mounted.

Database opened.

SQL> select * from props$ where name = 'NLS_CHARACTERSET';


NAME

------------------------------

VALUE$

--------------------------------------------------------------------------------

COMMENT$

--------------------------------------------------------------------------------

NLS_CHARACTERSET

KO16KSC5601

Character set


SQL> !lsnrctl start listener

...

..

.

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

기본적인 궁금증들(?)  (0) 2012.09.23
Windows Oracle 10g 설치  (0) 2012.09.23
minus 에 대한 위험(?)  (0) 2012.06.21
Datafile resize에 대한 오해(?)  (0) 2012.01.20
sh 계정 생성  (0) 2011.12.26
반응형

union 과 union all 의 차이점을 말하라하면 중복이 제거가 되느냐 되지 않느냐의 차이로 알고 있었다.

그러나 minus는?????


단순히 로우에 대한 빼기로만 알고 있었기에 무심코 사용했다.

반전...

결론은 minus를 하면 중복이 제거가 된 값들이 출력된다.


with car as

(

    select 'car' flag from dual union all

    select 'car' flag from dual union all

    select 'air' flag from dual union all

    select 'air' flag from dual union all

    select 'air' flag from dual union all

    select 'air' flag from dual union all

    select 'air' flag from dual union all

    select 'car' flag from dual union all

    select 'car' flag from dual

),

air as

(

    select 'car' flag from dual

)

select flag from car

minus

select flag from air

;


flag

-----

air


한건만이 출력된다...나에게 있어 굉장한 충격이었다.

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

Windows Oracle 10g 설치  (0) 2012.09.23
characterset 변환  (0) 2012.07.17
Datafile resize에 대한 오해(?)  (0) 2012.01.20
sh 계정 생성  (0) 2011.12.26
10g에서 sys_connect_by_path 사용법  (0) 2011.12.01
반응형
용량이 부족할 때 데이터 파일을 추가 해주는 형식으로 주로 하였기에, resize 할 때 문제를 생각해 보지 않았다. 
autoextensible 되고 있는 데이터 파일을 resize를 하면 resize 한 만큼의 용량으로 자동 증가가 되는 줄 알았다.
하지만 아래 결과를 보게 된다면 생각이 달라질 것이다.
테이블 스페이스를 생성하고 상태 변경까지 각각의 size를 확인해 볼 것이다.


1. 테이블 스페이스 생성
### create tablespace tbs_auto 
### datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' size 1m
### autoextend on next 8k maxsize 3m;

TABLESPACE AUT current(MB) Max extensible(MB)    used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO      YES                1                            3            .9375                    2

2. 테이블 생성 후 ora-01653 에러가 발생할 때 까지 실행(총 11만건 인서트 후에 에러 발생)
 ### insert into tbs_auto_tab select 'AA',sysdate from dual connect by level <= 10000;

* 사용된 공간 및 최대 증가 될 수 있는 값을 확인 한다. 
TABLESPACE AUT current(MB) Max extensible(MB)    used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ -------------- 
TBS_AUTO      YES         2.0625                            3                  2              .9375


3. 해당 테이블 스페이스의 데이터 파일을 단순히 resize 한다.
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' resize 5m;

* resize 를 하였기때문에 datafile 자체가 증가 되어 현재 데이터는 없지만 불필요한 공간을 확보하고 있는 상태가 된다.
  최대 자동 증가량은 3MB 이고 이미 공간도 확보된 상태이기 때문에 더이상 자동 증가는 되지 않는다.
TABLESPACE AUT current(MB) Max extensible(MB)    used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ -------------- 
TBS_AUTO      YES                5                            3           4.9375                   -2

4. 이미 공간이 확보된 상태이지만 자동증가되게 설정을 해본다.
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' autoextend on next 8k maxsize 5m

* Max extensible 이 증가 된 것을 확인 할 수 있다.
* 참고로 다음 증가되는 용량(next 8k) 수정한다면 dba_data_files의 increment_by에서 수정된 것을 확인 할 수 있다.

* 그러나 현재까지는 사용되지 않는 공간을 계속 확보하고 있는 상태이다.
TABLESPACE AUT current(MB) Max extensible(MB)    used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ -------------- 
TBS_AUTO      YES                5                            5           4.9375                    0

5. 사용되지 않는 공간을 삭제하려면 간단하다. 다시 resize를 하면 된다.
    실제 사용되고 있는 용량보다 적게 resize를 한다면 아래와 같은 에러가 발생 할 것이다.
    ORA-03297 : file contains used data beyond requested RESIZE value
 ### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' resize 3m;

* 현재용량과 사용되고 있는 용량이 변화되었다.
TABLESPACE AUT current(MB) Max extensible(MB)    used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ -------------- 
TBS_AUTO      YES                3                            5           2.9375                    2
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

characterset 변환  (0) 2012.07.17
minus 에 대한 위험(?)  (0) 2012.06.21
sh 계정 생성  (0) 2011.12.26
10g에서 sys_connect_by_path 사용법  (0) 2011.12.01
특정 IP만 접속  (0) 2011.11.21
반응형
$ORACLE_HOME/demo/sales_history/sql_main.sql 실행.

해당파일이 생성되지 않았으면 개별적으로 다운받아서 실행.
파일 용량이 큰 관계로 올리지 못하였다.
대략 17M 정도되며, 분할하여 올리려고 하였지만 회사 컴퓨터라 분할 할 여유가 되질 못하였다.

specify password for SH as parameter 1: --> sh 계정에 대한 password 지정
Enter value for 1: ******

specify default tablespace for SH as parameter 2:  --> default tablespace 지정
Enter value for 2: users

specify temporary tablespace for SH as parameter 3:  --> temporary tablespace 지정
Enter value for 3: temp

specify password for SYS as parameter 4:  --> sys 계정에 대한 password 지정(스크립트를 확인해보면 sys 계정으로 접
                                                                    속하여 작업을 하는 부분이 있어서 패스워드를 지정해주는 것이다.

Enter value for 4: *********

specify directory path for the data files as parameter 5:  --> load할 파일의 경로를 지정.(처음 로그 파일 찍히는 경로를
                                                                                     적으라는줄 알고 쌩뚱맞은 경로를 지정하는 바람에 에러만
                                                                                      나오고 원인이 뭔지 몰라 개삽질 및 개고생 했음.)
Enter value for 5: $ORACLE_HOME/demo/schema/sales_history/

writeable directory path for the log files as parameter 6:  --> log 파일이 찍힐 경로 지정.
Enter value for 6:  $ORACLE_HOME/demo/schema/sales_history/ 

specify version as parameter 7:  --> 버젼 입력(v3)

Enter value for 7: v3
 
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

minus 에 대한 위험(?)  (0) 2012.06.21
Datafile resize에 대한 오해(?)  (0) 2012.01.20
10g에서 sys_connect_by_path 사용법  (0) 2011.12.01
특정 IP만 접속  (0) 2011.11.21
Linux 10.2.0.4 upgrade Patch  (0) 2011.10.31
반응형
create table temp_nation as
select 'Seoul' city, 'Korea' country from dual union all
select 'Busan' city, 'Korea' country from dual union all
select 'Inchon' city, 'Korea' country from dual union all
select 'LA' city, 'America' country from dual union all
select 'Newyork' city, 'America' country from dual union all
select 'Mexicocity' city, 'Mexico' country from dual
;

select country, substr(max(sys_connect_by_path(city,',')),2) result
from
(
    select city, country, row_number() over (partition by country order by city) rnum
    from   temp_nation
)
start with rnum=1
connect by prior rnum=rnum-1
and prior country=country    --> group별로 지정할 경우
group by country
;
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

Datafile resize에 대한 오해(?)  (0) 2012.01.20
sh 계정 생성  (0) 2011.12.26
특정 IP만 접속  (0) 2011.11.21
Linux 10.2.0.4 upgrade Patch  (0) 2011.10.31
startup 종류?  (0) 2011.08.18
반응형
sqlnet.ora에 설정한다.

tcp.validnode_checking = yes
tcp.invited_nodes=(127.0.0.1,127.0.0.2)
tcp.NODELAY=yes

listener 재시작.. 
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

sh 계정 생성  (0) 2011.12.26
10g에서 sys_connect_by_path 사용법  (0) 2011.12.01
Linux 10.2.0.4 upgrade Patch  (0) 2011.10.31
startup 종류?  (0) 2011.08.18
shutdown 종류?  (0) 2011.08.18
반응형
현재 버젼은 10.2.0.1 이다.
metalink 에서 패치 및 업데이트를 클릭하여 10.2.0.4 를 조회하여 다운 받는다.
patch number : 6810189
파일명 : p6810189_10204_Linux-x86.zip

 
1. lsnrctl stop listener
2. shutdown immediate;
3. unzip p6810189_10204_Linux-x86.zip
4. ./runInstaller.
   - 허가거부라고 하여 실행이 되지 않을 때가 있는데 runInstaller 파일에 권한을 더 추가한다.(chmod 775 runInstaller)
   - .oui 등 다른 파일들도 권한 문제로 실행이 안되는 경우가 생김.
5. 인스톨 화면에서 10.2.0.1 설치 했을 때와 같은 경로들을 준다.
   - 이상하게 OraInventory는 같은 경로가 되지 않았다. ㅜㅜ(이유모름)
   - 다른 경로를 주고 실행시킴.
6. 설치가 진행되고 마지막쯤에 root.sh를 루트계정에서 실행시키라고 나온다.(sudo /oracle/10g/root.sh)
7. 정상적으로 설치 완료.
8. startup upgrade
   - 주의 upgrade를 하지않고 그냥 startup만 하게 된다면 아래와 같은 에러가 발생한다.
   - ORA-01092: ORACLE instance terminated. Disconnection forced

9. @$ORACLE_HOME/rdbms/admin/catupgrd.sql 실행
10. restart
   - 현재 DB의 status를 확인해 보면 아래와 같다.

SQL> select status from v$instance;
STATUS
----------------
OPEN MIGRATE

   - shutdown immediate;
   - startup;

SQL> select status from v$instance;
STATUS
--------
OPEN

11. lsnrctl start listener
12. 완료.
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0    Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production


반응형

'Oracle > Oracle Study' 카테고리의 다른 글

10g에서 sys_connect_by_path 사용법  (0) 2011.12.01
특정 IP만 접속  (0) 2011.11.21
startup 종류?  (0) 2011.08.18
shutdown 종류?  (0) 2011.08.18
UTL_URL 함수  (0) 2011.08.01
반응형
1. startup nomount
 - pfile 또는 spfile을 읽어서 SGA 까지 올라옴.
 - pfile 또는 spfile들에 구성된 내용들을 볼 수 있다.

2. startup mount
 - Database의 정보를 가지고 있는Control file 까지 올라옴.
 - Oracle Dynamic Performance Views 까지 조회할 수 있음.

3. startup
 - Database open
 - 정상구동.

4. startup restrict
 - restrict 권한을 가진 계정만 DB에 접속할 수 있다.
 - 다른 session들을 막고 open된 상태에서 DB를 조작하여야 할 때 사용.(패치 또는 백업)
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

특정 IP만 접속  (0) 2011.11.21
Linux 10.2.0.4 upgrade Patch  (0) 2011.10.31
shutdown 종류?  (0) 2011.08.18
UTL_URL 함수  (0) 2011.08.01
UNDO tablespace 변경  (0) 2011.07.26
반응형
1. shutdown (normal)
  : dml 작업을 한 다른 session 들이 commit이나 rollback을 하지 않는 이상 절대 shutdown 불가능

2. shutdown transactional 
  - dml 작업을 한 session들은 그대로 냅두고, 다른 session 들만 끊는다.
  - 어쨌든 normal 과 같은 경우.

3. shutdown immediate
  - shutdown을 할때 가장 많이 쓰이는 명령어.
  - dml 작업을 한 다른 session 들을 자동 rollback 시키고 shutdown 을 가능하게 함.

4. shutdown abort
  - 강제로 shutdown 함.
  - system에 무리를 줄 수가 있음.
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

Linux 10.2.0.4 upgrade Patch  (0) 2011.10.31
startup 종류?  (0) 2011.08.18
UTL_URL 함수  (0) 2011.08.01
UNDO tablespace 변경  (0) 2011.07.26
MAXDATAFILES, DB_FILES(ORA-01118, ORA-00059)  (0) 2011.03.10
반응형
오라클에는 URL 을 Encoding 및 Decoding 하는 함수가 있다.
유용하게 사용 할 수 있을 것 같다.

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_url.htm#i996850

Encoding : select utl_url.escape('함수') from dual;
Decoding : select utl_url.unescape('%EC%97%89%EB%98%A5%ED%8F%AD%ED%8F%AC','UTF-8') from dual;

Encoding 은 왤케 안되는지 모르겠다. 아무래도 한글로 Encoding 할려니 안되는 것 같다.
근데 Decoding은 왤케 잘되는지..
열심히 찾고 있는 중이다. ㅋㅋ
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

startup 종류?  (0) 2011.08.18
shutdown 종류?  (0) 2011.08.18
UNDO tablespace 변경  (0) 2011.07.26
MAXDATAFILES, DB_FILES(ORA-01118, ORA-00059)  (0) 2011.03.10
characterset 변경 및 주의할 점.  (0) 2011.01.06
반응형
1. 또 다른 undo tablespace를 생성한다.
create undo tablespace undotbs2
datafile '/data4/oradata/undotbs2.dbf' size 1G autoextend on next 64M maxsize unlimited;

2. 새로 생성한 undo를 임시로 default 로 설정한다.
alter system set undo_tablespace = UNDOTBS2;

3. 기존 undo tablespace를 삭제한다.
drop tablespace undotbs1 including contents and datafiles cascade constraints;

4. 새로 적용할 undo tablespace를 생성한다.
create undo tablespace undotbs1
datafile '/data1/oradata/undotbs01.dbf' size 2G autoextend on next 100M maxsize 4G,
         '/data2/oradata/undotbs02.dbf' size 2G autoextend on next 100M maxsize 4G,
         '/data3/oradata/undotbs03.dbf' size 2G autoextend on next 100M maxsize 4G,
         '/data4/oradata/undotbs04.dbf' size 2G autoextend on next 100M maxsize 4G
;

5. default undo tablespace의 값을 재설정한다.
alter system set undo_tablespace = UNDOTBS1;

6. 임시로 만들어 놓은 undo tablespace를 삭제한다.
drop tablespace undotbs2 including contents and datafiles cascade constraints;
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

shutdown 종류?  (0) 2011.08.18
UTL_URL 함수  (0) 2011.08.01
MAXDATAFILES, DB_FILES(ORA-01118, ORA-00059)  (0) 2011.03.10
characterset 변경 및 주의할 점.  (0) 2011.01.06
오라클 10.2.0.1.0 설치  (0) 2010.09.08
반응형
디비 생성시 초기 설정 해줄수 있는 MAXDATAFILES와 
구동되고 있는 디비에서 spfile or pfile에서 수정해 줄수 있는 db_files 파라미터가 있다.

1. MAXDATAFILES에 값이 부족하여 데이터 파일을 만들 수 없을 때 ORA-01118 에러를 뿌려주게 되어있는데 
   controlfile에 있는  MAXDATAFILES가 자동 증가 하는 것을 확인 하였다.
   (MAXDATAFILES 4000 -> 8000으로 증가됨)
   언제 이 에러가 발생되는지 찾지 못했다.
   ORA-01118: cannot add any more database files: limit of string exceeded

2.. db_files의 값을 초과하여 데이터 파일을 만들 수 없을때 ORA-00059 에 대한 에러 메세지가 출력된다.
    ORA-00059: maximum number of DB_FILES exceeded

예제 1) MAXDATAFILES가 자동 증가된다는 것을 확인.
SQL> select type, records_total, records_used
  2  from v$controlfile_record_section
  3  where type='DATAFILE';

TYPE                  RECORDS_TOTAL  RECORDS_USED
---------------- ------------------ ----------------
DATAFILE                                4000                   3001

SQL> show parameter db_files

NAME                           TYPE        VALUE
------------------ ----------- -----------
db_files                         integer          4000

다량의 데이터 파일을 생성하는 중 한계치가 도달하여 ORA-00059 에러가 발생.

TYPE                  RECORDS_TOTAL  RECORDS_USED
---------------- ------------------ ----------------
DATAFILE                                4000                   4000

SQL> alter system set db_files=4001 scope=spfile;
SQL> shutdown immediate;
SQL> startup;
SQL> show parameter db_files --> MAXDATAFILES가 4000이 되고 db_files는 4001이 된다.
                                                   데이터파일이 생성이 될 것인지 에러메세지를 뿌려줄것인지 확인하였다.

NAME                           TYPE        VALUE
------------------ ----------- -----------
db_files                         integer          4001

SQL> create tablespace test3996 datafile '/media/sda1/PROD/Disk3/ test3996.dbf' size 500k;

MAXDATAFILES가 변경되면서 정상적으로 생성됨.
alert file에는 다음과 같은 메세지가 뿌려진다.

Expanded controlfile section 4 from 4000 to 8000 records
Requested to grow by 4000 records; added 105 blocks of records

SQL> select type, records_total, records_used
  2  from v$controlfile_record_section
  3  where type='DATAFILE';

TYPE                  RECORDS_TOTAL  RECORDS_USED
---------------- ------------------ ----------------
DATAFILE                                8000                   4001

자동증가되어있는 것을 알수 있다. 혹시나 하는 마음에 trace 파일로 떨궈서 보았지만 똑같다.

예제 2) MAXDATAFILES 수정.

SQL> show parameter user_dump_dest

NAME                               TYPE VALUE
--------------------- ---------- -----------------------------------
user_dump_dest                 string  /media/sda1/PROD/admin/udump

SQL> alter database backup controlfile to trace; OR alter database backup controlfile to trace as '경로명';

user_dump_dest에 있는 경로명으로 가서 trace 파일을 확인.

CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 4000
    MAXINSTANCES 1
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/media/sda1/PROD/Disk4/redo1a.log',
    '/media/sda1/PROD/Disk5/redo1b.log'
  ) SIZE 25M,
  GROUP 2 (
    '/media/sda1/PROD/Disk4/redo2a.log',
    '/media/sda1/PROD/Disk5/redo2b.log'
  ) SIZE 25M
-- STANDBY LOGFILE
DATAFILE
  '/media/sda1/PROD/Disk1/system01.dbf',
  '/media/sda1/PROD/Disk1/undotbs01.dbf',
.
.
CHARACTER SET KO16MSWIN949
;

이부분을 스크립트 파일로 복사한다.(control.sql 생성하여 복사)
MAXDATAFILES를 현재 설정된 4000의 값을 8000으로 수정하였다. 

cf.
스크립트 복사시 주위할 점은 NORESETLOGS와 RESETLOGS가 있어서 같은 
스크립트가 trace로 떨궜을 경우 두번 출력이 된다. 
나는 데이터파일을 워낙 많이 생성하여 처음부터 끝까지 긁어서 미처 생각지 못하고
noresetlogs와 resetlogs가 같이 실행되었다.(나만 바보짓함?)
noresetlogs가 실행되었기 때문에 resetlogs 쪽 스크립트는 에러를 발생시켜 실행은 되지 않았지만
에러가 났다는 것 자체가 찝찝하기 때문에.....

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  612368384 bytes
Fixed Size                  1220868 bytes
Variable Size             188747516 bytes
Database Buffers          419430400 bytes
Redo Buffers                2969600 bytes
SQL> @/media/sda1/PROD/Script/control.sql

Control file created.

SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> recover database;
Media recovery complete.
SQL> alter system archive log all;

System altered.

SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS
------------
OPEN

위와 했던 방식으로 controlfile을 trace로 떨구거나
v$controlfile_records_section 테이블을 select 하여 수정되었는지 다시 한번 확인해보자.
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

UTL_URL 함수  (0) 2011.08.01
UNDO tablespace 변경  (0) 2011.07.26
characterset 변경 및 주의할 점.  (0) 2011.01.06
오라클 10.2.0.1.0 설치  (0) 2010.09.08
Oracle Analytic Function(분석함수)  (0) 2010.05.24
반응형
현재 캐릭터셋은 KO16MSWIN949 이다.
그래서 뷁 또는 맗 같은 멀티바이트가 insert 할 수가 있다.

C:\Windows\System32>sqlplus system/******@prod
SQL*Plus: Release 10.2.0.1.0 - Production on 목 1월 6 17:09:02 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select * from sys.props$ where name like 'NLS_CH%';

NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
COMMENT$
--------------------------------------------------------------------------------
NLS_CHARACTERSET
KO16MSWIN949
Character set

SQL> conn scott/tiger@prod

Connected.

SQL> insert into dept values(70,'뷁','맗');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        70 뷁             맗 

5 rows selected.

SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  612368384 bytes
Fixed Size                  1220868 bytes
Variable Size             146804476 bytes
Database Buffers          461373440 bytes
Redo Buffers                2969600 bytes
Database mounted.
SQL>
SQL> alter system enable restricted session;

System altered.

SQL> alter database open;

Database altered.

SQL> alter database character set internal_use KO16KSC5601;

Database altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  612368384 bytes
Fixed Size                  1220868 bytes
Variable Size             146804476 bytes
Database Buffers          461373440 bytes
Redo Buffers                2969600 bytes
Database mounted.
Database opened.
SQL> select * from sys.props$ where name like 'NLS_CH%';

NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
COMMENT$
--------------------------------------------------------------------------------
NLS_CHARACTERSET
KO16KSC5601   -- 변경완료
Character set

SQL> conn scott/tiger@prod

Connected.

SQL> select * from dept;
ERROR:
ORA-29275: partial multibyte character    :  멀티바이트가 포함된 테이블은 에러를 발생시킨다.



no rows selected

SQL> 

다시 위와 같은 방법으로 KO16MSWIN949로 변경하면 멀티바이트가 포함된 테이블도 정상적으로 작동이 된다.

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

UNDO tablespace 변경  (0) 2011.07.26
MAXDATAFILES, DB_FILES(ORA-01118, ORA-00059)  (0) 2011.03.10
오라클 10.2.0.1.0 설치  (0) 2010.09.08
Oracle Analytic Function(분석함수)  (0) 2010.05.24
리두 로그 삭제  (0) 2010.04.07
반응형
얼마전(?) 부터 서버의 이상증상이 보였고 이제는 부팅도 안되고 복구도 불가능한 지경까지 이르게 되었습니다.
귀차니즘에 빠졌던 저라 컴퓨터를 꺼버리고 두달정도 그냥 방치해두었다가 이제야 우분투를 다시 설치하게 되었습니다.

우분투는 예전에 설치 한 것보다 좀 더 수월하게 진행이 되었던것 같습니다. 접속 문제 빼고요.
내부/외부에서 접속이 전혀 되질 않아서 고생 좀 했습니다.

이제 오라클 설치에 대해서 또 한번 적어보고자 합니다. 
예전 글은 정리가 잘 되지 않아서 이번에는 제가 한 순서대로 나름 깔끔하게 적어볼려고합니다.(참고 URL)

1. 오라클 설치하는데 필요한 패키지 설치
pgheo@pgheo-desktop:/home$ sudo apt-get install gcc binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5 build-essential

2. 오라클 계정 및 그룹 만들기
pgheo@pgheo-desktop:/home$ sudo groupadd -g 5000 dba
pgheo@pgheo-desktop:/home$ sudo useradd -g dba oracle
pgheo@pgheo-desktop:/home$ sudo passwd oracle
새 UNIX 암호 입력:
새 UNIX 암호 재입력:
passwd: 암호를 성공적으로 업데이트했습니다

3. sysctl.conf 수정
pgheo@pgheo-desktop:/etc$ sudo vi /etc/sysctl.conf
마지막에 아래와 같이 입력.

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

저장 후 적용시키기 위해서는 재부팅 또는 아래 명령어 입력.
sudo /sbin/sysctl -p(재부팅 하지 않고 바로 적용시킬때)

4. limits.conf 수정
pgheo@pgheo-desktop:/etc/security$ sudo vi /etc/security/limits.conf
마지막에 아래와 같이 입력.

* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

5. 오라클 폴더생성 및 권한 주기.
pgheo@pgheo-desktop:/home$ sudo mkdir /oracle
pgheo@pgheo-desktop:/home$ sudo mkdir /oracle/10g
pgheo@pgheo-desktop:/home$ sudo mkdir /oracle/oinstall
pgheo@pgheo-desktop:/home$ sudo chown -R oracle:dba /oracle
pgheo@pgheo-desktop:/home$ sudo chmod 775 -R /oracle

cf. 오라클 설치파일을 미리 올려놓았기 때문에 이동작업을 하였습니다.
pgheo@pgheo-desktop:/home/oracle_installer$ sudo chown oracle:dba *
pgheo@pgheo-desktop:/home/oracle_installer$ sudo mv * /oracle/oinstall

6. 오라클 환경변수 설정(profile)
pgheo@pgheo-desktop:/oracle/oinstall$ sudo vi /etc/profile
마지막에 아래와 같이 입력.
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/10g
export ORACLE_SID=PROD  --> 원하시는 오라클 sid명을 입력하세요.
export PATH=$PATH:$ORACLE_HOME/bin

확인 작업.
pgheo@pgheo-desktop:/oracle/oinstall$ su - oracle
암호:
디렉터리 없음, 루트 디렉터리(/)로 로그인합니다
$ echo $ORACLE_BASE
/oracle
$ echo $ORACLE_HOME
/oracle/10g
$ exit

7. 레드헷 계열 인식(?)
pgheo@pgheo-desktop:/oracle/oinstall$ sudo ln -s /usr/bin/awk /bin/awk
pgheo@pgheo-desktop:/oracle/oinstall$ sudo ln -s /usr/bin/rpm /bin/rpm
pgheo@pgheo-desktop:/oracle/oinstall$ sudo ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
pgheo@pgheo-desktop:/oracle/oinstall$ sudo ln -s /usr/bin/basename /bin/basename


pgheo@pgheo-desktop:/oracle/oinstall$ sudo vi /etc/redhat-release
아래 입력하고 저장.

Red Hat Enterprise Linux AS release 3 (Taroon)


8. GUI 글씨가 깨지는 것을 방지.
pgheo@pgheo-desktop:~$ sudo apt-get install ttf-baekmuk(백묵글꼴 설치)

pgheo@pgheo-desktop:~$ cd /usr/share/fonts
pgheo@pgheo-desktop:~$ sudo mkdir -p ko/TrueType
pgheo@pgheo-desktop:~$ sudo cp truetype/baekmuk/*.ttf ko/TrueType

9. 오라클 설치 시작(시스템 reboot 후 oracle 계정으로 접속한다.)
oracle@pgheo-desktop:/oracle/oinstall/database$ runInstaller  -- 설치 과정은 Windows와 같음
설치 중간에 잠시 멈추고 root.sh와 orainsRoot.sh를 설치하라고 나오는데 
나와있는 경로 찾아가서 설치 해주고 계속 진행합니다.

저는 default 디비를 설치하지 않았습니다. 매뉴얼 구축을 위해서 오라클 자체만 설치를 하였습니다.
오라클 매뉴얼 설치는 좀 쉬었다가 적어보도록 하겠습니다.ㅎㅎ
추후 10.2.0.4로 패치도 해볼까 하는데 파일 구하기가 참으로 어렵네요.
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

MAXDATAFILES, DB_FILES(ORA-01118, ORA-00059)  (0) 2011.03.10
characterset 변경 및 주의할 점.  (0) 2011.01.06
Oracle Analytic Function(분석함수)  (0) 2010.05.24
리두 로그 삭제  (0) 2010.04.07
serveroutput 단순 예  (0) 2010.02.23
반응형
제가 구독하고 있는 블로그에서 본 것을 테스트 해본 것 입니다.
다들 아시는 유명한 블로그죠. 매번 좋은 정보를 주어서 감사 할 따름입니다.
테스트 할 자료도 있고, 설명도 잘 되어져 있어서 
공부를 하면서 분석함수에 대해서 조금이나마 가까이 갈수 있었던 기회 같습니다.
조금만 생각하면 응용쿼리 생성 및 튜닝도 가능할 것으로 보입니다. 아직 미흡합니다.ㅎㅎㅎ
관련 파일에는 간단한 설명이 있으며, 이해 안가는 부분도 있지만 나름 이해할려고 노력해봤습니다.


반응형

'Oracle > Oracle Study' 카테고리의 다른 글

characterset 변경 및 주의할 점.  (0) 2011.01.06
오라클 10.2.0.1.0 설치  (0) 2010.09.08
리두 로그 삭제  (0) 2010.04.07
serveroutput 단순 예  (0) 2010.02.23
SGA 자동관리 전환  (0) 2010.02.17
반응형
테스트 디비를 백업을 할려고 보니 redo logfile 그룹이 3개라서 불필요한 것 같아 한개 그룹을 삭제하기로 하였습니다.
테스트 디비라고 하여 좀 안일하게 써온터라 데이터파일 용량도 커지고 로그 파일등 정리가 안되어있네요.
테스트 디비라고 무시말고 메인디비 쓰듯이 써야 할 것 같습니다. 소중하게..ㅎㅎ
날 잡아서 정리 좀 해야할 것 같네요.(메인디비 쓰듯이 써야할텐데..ㅡㅡ;;)

SQL>  select a.group#, a.member, b.members, b.status
  2  from v$logfile a, v$log b
  3* where a.group#=b.group#
SQL> /

    GROUP# MEMBER                                              MEMBERS STATUS
---------- ---------------------------------------- ---------- --------
             3  /oracle/oradata/PROD/Disk5/redo03a.log              2  INACTIVE
             2  /oracle/oradata/PROD/Disk4/redo02a.log              2  INACTIVE
             1  /oracle/oradata/PROD/Disk3/redo01a.log              2  CURRENT
             1  /oracle/oradata/PROD/Disk5/redo01b.log              2  CURRENT
             2  /oracle/oradata/PROD/Disk3/redo02b.log              2  INACTIVE
             3  /oracle/oradata/PROD/Disk4/redo03b.log              2  INACTIVE

6 rows selected.

SQL> alter database drop logfile group 3;

Database altered.

SQL> select a.group#, a.member, b.members, b.status
  2  from v$logfile a, v$log b
  3  where a.group#=b.group#;

    GROUP# MEMBER                                              MEMBERS STATUS
---------- ---------------------------------------- ---------- --------
             2  /oracle/oradata/PROD/Disk4/redo02a.log              2  INACTIVE
             1  /oracle/oradata/PROD/Disk3/redo01a.log              2  CURRENT
             1  /oracle/oradata/PROD/Disk5/redo01b.log              2  CURRENT
             2  /oracle/oradata/PROD/Disk3/redo02b.log              2  INACTIVE

SQL> alter system switch logfile;

System altered.

SQL> select a.group#, a.member, b.members, b.status
  2  from v$logfile a, v$log b
  3  where a.group#=b.group#;

    GROUP# MEMBER                                              MEMBERS STATUS
---------- ---------------------------------------- ---------- --------
             2  /oracle/oradata/PROD/Disk4/redo02a.log              2  CURRENT
             1  /oracle/oradata/PROD/Disk3/redo01a.log              2  ACTIVE
             1  /oracle/oradata/PROD/Disk5/redo01b.log              2  ACTIVE
             2  /oracle/oradata/PROD/Disk3/redo02b.log              2  CURRENT

SQL> alter system switch logfile;

System altered.

SQL> select a.group#, a.member, b.members, b.status
  2  from v$logfile a, v$log b
  3  where a.group#=b.group#;

    GROUP# MEMBER                                              MEMBERS STATUS
---------- ---------------------------------------- ---------- --------
             2  /oracle/oradata/PROD/Disk4/redo02a.log              2  INACTIVE
             1  /oracle/oradata/PROD/Disk3/redo01a.log              2  CURRENT
             1  /oracle/oradata/PROD/Disk5/redo01b.log              2  CURRENT
             2  /oracle/oradata/PROD/Disk3/redo02b.log              2  INACTIVE

SQL>
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

오라클 10.2.0.1.0 설치  (0) 2010.09.08
Oracle Analytic Function(분석함수)  (0) 2010.05.24
serveroutput 단순 예  (0) 2010.02.23
SGA 자동관리 전환  (0) 2010.02.17
set echo on & set feedback off  (0) 2010.02.16
반응형
SQL> show serveroutput
serveroutput OFF
SQL> begin
  2  dbms_output.put_line('serveroutput이 실행 중입니다.');
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> set serveroutput on
SQL> show serveroutput
serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED
SQL> r
  1  begin
  2  dbms_output.put_line('serveroutput이 실행 중입니다.');
  3* end;
serveroutput이 실행 중입니다.   --결과물이 출력되었습니다.

PL/SQL procedure successfully completed.

SQL>
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

Oracle Analytic Function(분석함수)  (0) 2010.05.24
리두 로그 삭제  (0) 2010.04.07
SGA 자동관리 전환  (0) 2010.02.17
set echo on & set feedback off  (0) 2010.02.16
Data Dictionary  (0) 2010.02.02
반응형
library cache miss 비율을 보고 shared_pool_size를 수정하고 좀 고생을 했습니다.
구글에 찾다가가 SGA에 관한 글을 보고 많은 도움이 되었습니다.

사고경위(?)는 이렇습니다. ㅋㅋ
shared_pool은 자동관리가 되고 있다는 것을 잠시 잊고 있었습니다.
library cache miss 비율이 4%가 넘어서 shared_pool_size를 늘려주어서 0.2%로 떨어트렸습니다.
문뜩 shared_pool_size를 직접적으로 올려주는 것보다 
sga_max_size 이나 sga_target 값을 올려서 자동으로 shared_pool_size를 올려주는게 나을 것 같아서
수정하기로 했습니다.

SQL> select name, value, isdefault from v$parameter   --이 값은 최초 sga 영역 메모리에 대한 값들입니다.
  2  where name like '%size%';                                     즉, shared_pool_size를 변경해 주기 전

NAME                            VALUE          ISDEFAULT
------------------------ ------------ -------------
sga_max_size                    205520896  TRUE
shared_pool_size                           0   TRUE
large_pool_size                              0   TRUE
java_pool_size                               0    TRUE
streams_pool_size                         0    TRUE 
shared_pool_reserved_size     3355443   TRUE
java_max_sessionspace_size         0    TRUE
db_block_size                            8192   TRUE
db_cache_size                              0     TRUE
...

29 rows selected.

[수정작업]

SQL> alter system set shared_pool_size = 0 scope=spfile; --다시 원복을 시켰습니다.

System altered.

SQL> show parameter sga_target  

NAME            TYPE           VALUE
------------- ------------ -------
sga_target       big integer       196M

SQL> show parameter sga_max_size;

NAME               TYPE           VALUE
--------------- ------------ -------
sga_max_size    big integer       196M

sga_target 값이 max size가 되어 sga_max_size값을 올려야겠네요.

SQL> select component, current_size/1024/1024 size
  2* from v$sga_dynamic_components

COMPONENT                            size
--------------------------- ---------
shared pool                                   72
large pool                                       4
java pool                                         4
streams pool                                   0
DEFAULT buffer cache                   112
...

13 rows selected.

SQL> alter system set sga_max_size =228m scope=both;  
System altered.

SQL> select component, current_size/1024/1024 size
  2* from v$sga_dynamic_components

COMPONENT                            size
--------------------------- ---------
shared pool                                   72
large pool                                       4
java pool                                         4
streams pool                                   0
DEFAULT buffer cache                   144  --한번 증가시킨 sga_max_size는 다시 줄일수가 없습니다.
       이미 자동으로 메모리에 할당을 했기때문이죠.
                         줄이고자 한다면 기존에 있던 pfile로 startup을 해야겠지요!
...

13 rows selected.

SQL> select name, value, isdefault from v$parameter
  2  where name like '%size%';

NAME                                       VALUE   ISDEFAULT
---------------------------- ----------- ------------------
sga_max_size                         239075328  FALSE
shared_pool_size                                0   FALSE  
...

29 rows selected.

SQL>

sga_max_size 와 shared_pool_size는 값을 한번씩 변경해주었습니다. 
그 이후로는 isdefault가 false로 되었습니다.
true로 설정을 어떻게 해야하는지 몰라서 한참을 헤멨습니다.
sga_target 값을 0으로 설정 후 다시 sga_max_size 값을 설정하였습니다.
즉, sga 관리를 수동으로 전환 후 다시 자동으로 전환을 시켰습니다.

SQL> select name, value, isdefault from v$parameter
  2  where name like '%size%';

NAME                            VALUE          ISDEFAULT
------------------------ ------------ ------------------
sga_max_size                    239075328   FALSE
shared_pool_size                 75497472   FALSE
large_pool_size                     4194304    FALSE
java_pool_size                      4194304    FALSE
streams_pool_size                         0    FALSE   
shared_pool_reserved_size     3774873   TRUE
java_max_sessionspace_size         0    TRUE
db_block_size                            8192   FALSE
db_cache_size                   150994944   FALSE
...

29 rows selected.


컥! 자동 관리 되었던 모든 메모리가 false로 변했네요! 
value도 알아서 지정이 되버렸군요.
같은 쿼리문을 실행시킨 처음 결과 값들과 비교를 해보면 많이 달라졌지요!
어떻게 수정을 해야하는지 몰라서 별짓을 다해봤습니다.ㅋㅋㅋ
그냥 pfile로 올려서 다시 원상복귀 시킬까도 생각해보았습니다.
나중에 비슷한 일이 생길 것을 대비해서 다시 열심히 찾아보았습니다.

[해결방안]

일단 쓸데없이 메모리를 차지하지 않도록 해당 자동관리 되는 메모리들을 0으로 수정하였습니다.  

SQL> alter system set shared_pool_size = 0 scope=spfile;

System altered.

SQL> alter system set large_pool_size = 0 scope=spfile;

System altered.

SQL> alter system set java_pool_size = 0 scope=spfile;

System altered.

SQL> alter system set streams_pool_size = 0 scope=spfile;

System altered.

SQL> alter system set db_cache_size = 0 scope=spfile;

System altered.

* 아래와 같은 reset 명령어가 있었습니다.

SQL> alter system reset sga_max_size scope=spfile sid='*';

System altered.

SQL> alter system reset shared_pool_size scope=spfile sid='*';

System altered.

SQL> alter system reset large_pool_size scope=spfile sid='*';

System altered.

SQL> alter system reset java_pool_size scope=spfile sid='*';

System altered.

SQL> alter system reset streams_pool_size scope=spfile sid='*';

System altered.

SQL> alter system reset db_cache_size scope=spfile sid='*';

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  239075328 bytes
Fixed Size                  1218724 bytes
Variable Size              83887964 bytes
Database Buffers          150994944 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL> select name, value, isdefault from v$parameter
  2  where name like '%size%';

NAME                            VALUE          ISDEFAULT
------------------------ ------------ -------------
sga_max_size                    239075328  TRUE
shared_pool_size                           0   TRUE
large_pool_size                              0   TRUE
java_pool_size                               0    TRUE
streams_pool_size                         0    TRUE 
shared_pool_reserved_size     3774873   TRUE
java_max_sessionspace_size         0    TRUE
db_block_size                            8192   TRUE
db_cache_size                              0     TRUE
...

29 rows selected.

정상으로 되었습니다.ㅋㅋ sga_max_size을 늘리려다가 무슨 난리를 친건지..ㅎㅎㅎㅎ
library cache miss 비율은 1%로 되었네요!

나의 의견 : 
참고로 위 설명에는 나와있지 않았지만 shutdown을 너무 많이 한 것 같습니다.ㅜㅜ
반응형

'Oracle > Oracle Study' 카테고리의 다른 글

리두 로그 삭제  (0) 2010.04.07
serveroutput 단순 예  (0) 2010.02.23
set echo on & set feedback off  (0) 2010.02.16
Data Dictionary  (0) 2010.02.02
전역 임시 테이블(temporary table)  (0) 2010.01.29
반응형
ubuntu:~/oracle/Script$ vi test.sql

alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';

alter session set nls_language = 'AMERICAN';

select * from dept;


ubuntu:~/oracle/Script$ ls
test.sql
ubuntu:~/oracle/Script$ sqlplus scott/tiger

SQL*Plus: Release 10.2.0.1.0 - Production on 화 2월 16 17:26:22 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> show echo
echo OFF    --default 로 지정됨.
SQL> @test.sql

Session altered.


Session altered.


    DEPTNO DNAME                        LOC
----------- ----------------------- --------------------------
             10 ACCOUNTING                NEW YORK
             20 RESEARCH                    DALLAS
             30 SALES                          CHICAGO
             40 OPERATIONS                BOSTON

SQL> set echo on
SQL> @test.sql
SQL> alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';  --명령어가 자동으로 출력됨.

Session altered.

SQL>
SQL> alter session set nls_language = 'AMERICAN';

Session altered.

SQL>
SQL> select * from dept;

    DEPTNO DNAME                        LOC
----------- ----------------------- --------------------------
             10 ACCOUNTING                NEW YORK
             20 RESEARCH                    DALLAS
             30 SALES                          CHICAGO
             40 OPERATIONS                BOSTON

SQL>
SQL>
SQL> exit   --셋팅 된 값들을 초기 상태로 돌려놓기 위해서 저는 그냥 exit하고 다시 접속합니다.
    (다른 이것저것 셋팅 된 것들이 많아지면 원복하기 힘들어서요.reset하는 방법을 몰라서..흐흐)
                 --참고로 컬럼설정에 대한 초기화는 clear column; 입니다.
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Pr
oduction
With the Partitioning, OLAP and Data Mining options

ubuntu:~/oracle/Script$ sqlplus scott/tiger

SQL*Plus: Release 10.2.0.1.0 - Production on 화 2월 16 17:32:47 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> show feedback
FEEDBACK ON for 6 or more rows  --default 값은 선택된 행이 6행 이상일 때 row수를 알려준다.

SQL> @test.sql

Session altered.


Session altered.


    DEPTNO DNAME                        LOC
----------- ----------------------- --------------------------
             10 ACCOUNTING                NEW YORK
             20 RESEARCH                    DALLAS
             30 SALES                          CHICAGO
             40 OPERATIONS                BOSTON

SQL> set feedback 3    --선택된 행을 3으로 해보겠습니다.
                                    (선택된 행이라는 말이 이해 안가서 한번 해봤습니다.)
SQL> @test.sql

Session altered.


Session altered.


    DEPTNO DNAME                        LOC
----------- ----------------------- --------------------------
             10 ACCOUNTING                NEW YORK
             20 RESEARCH                    DALLAS
             30 SALES                          CHICAGO
             40 OPERATIONS                BOSTON

4 rows selected.     --아하..요놈이 출력 되는군요!
                               (요놈의 숫자가 feedback의 수에 따라서 출려되느냐 안되느냐 차이였습니다.)

SQL> set feedback off
SQL> @test.sql

    DEPTNO DNAME                        LOC
----------- ----------------------- --------------------------
             10 ACCOUNTING                NEW YORK
             20 RESEARCH                    DALLAS
             30 SALES                          CHICAGO
             40 OPERATIONS                BOSTON
SQL>

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

serveroutput 단순 예  (0) 2010.02.23
SGA 자동관리 전환  (0) 2010.02.17
Data Dictionary  (0) 2010.02.02
전역 임시 테이블(temporary table)  (0) 2010.01.29
alert file 에서 error 개수 확인 방법  (0) 2010.01.14
반응형
구글링을 하다보면
같은 내용으로 Data Dictionary object 에 대한 설명을 올려놓은 글들이 많이 있었습니다.
개인적으로 정렬도 잘 안되고 보기가 많이 불편하여 엑셀파일로 정리를 하였습니다.
(단순히 긁어다가 넣었을 뿐입니다.ㅋㅋㅋ)
보기에는 충분한 자료와 내용들이지만, 
오래전에 올린 것들이라 좀 더 업그레이드 된 글들을 찾아 볼수가 없어서 아쉽네요!!
제가 만들기에는 턱없이 부족한 스킬이라...^^;;; 글재주도 없고요.ㅎㅎ

그냥 가지고 있다가 필요할때마다 찾아보면 많은 도움이 될 것입니다.
DBA가 기본적(?)으로 알아야하는 것이기 때문에 필히 숙지를 하시는 것도 좋은 방법이 아닐까요?^^

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

SGA 자동관리 전환  (0) 2010.02.17
set echo on & set feedback off  (0) 2010.02.16
전역 임시 테이블(temporary table)  (0) 2010.01.29
alert file 에서 error 개수 확인 방법  (0) 2010.01.14
number(p,s) : precision, scale ora-01438  (0) 2009.12.10

+ Recent posts