2010/12/02 10:36

-- 테이블 단위 
BEGIN
    DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'EMP'); 
END; 


-- 스키마(유저) 단위 
BEGIN 
    DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT', DBMS_STATS.AUTO_SAMPLE_SIZE); 
END;
크리에이티브 커먼즈 라이선스
Creative Commons License
2010/04/13 14:51
아래 쿼리의 결과를 복사해서 돌리세요.

SELECT 'ALTER INDEX '||INDEX_NAME||' REBUILD TABLESPACE USERS;' FROM USER_INDEXES;
크리에이티브 커먼즈 라이선스
Creative Commons License
2010/04/08 16:48
Oracle 10g XE는 처음에 설치할 때 AL16UTF16으로 자동 설정됩니다.
이때 만약 다른 CHARACTERSET을 사용하던 디비를 임포트하려면 좀 난감하게 됩니다. 경우에 따라서 CHARACTERSET 차이로 인해 임포트시 에러가 발생하기 때문이죠.

저도 이 문제로 검색좀 했습니다.

간단하게 정리하자면...

Win+R => cmd => 엔터

# sqlplus / as sysdba
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE KO16MSWIN949 ;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;

정상적으로 진행되었다면 아래와 같은 메시지를 보셨을 겁니다.

-- 정상 처리 메시지
SQL> SHUTDOWN IMMEDIATE;
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> STARTUP MOUNT;
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  805306368 bytes
Fixed Size                  1289996 bytes
Variable Size             209715444 bytes
Database Buffers          591396864 bytes
Redo Buffers                2904064 bytes
데이터베이스가 마운트되었습니다.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

시스템이 변경되었습니다.

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

시스템이 변경되었습니다.

SQL> ALTER DATABASE OPEN;

데이타베이스가 변경되었습니다.

SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE KO16MSWIN949 ;

데이타베이스가 변경되었습니다.

SQL> SHUTDOWN IMMEDIATE;
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> STARTUP;
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  805306368 bytes
Fixed Size                  1289996 bytes
Variable Size             209715444 bytes
Database Buffers          591396864 bytes
Redo Buffers                2904064 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER LIKE '%CHARACTER%';

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_NUMERIC_CHARACTERS
.,

NLS_CHARACTERSET
KO16MSWIN949

NLS_NCHAR_CHARACTERSET
AL16UTF16


만약 아래와 같은 메시지를 만난다면 오라클 서비스를 재시작하세요.

SQL> SHUTDOWN IMMEDIATE;
ORA-24324: 서비스 처리가 초기화되지 않았습니다
ORA-24323: 값이 허용되지 않습니다
ORA-01089: 즉시 종료 중입니다 - 작업이 허용되지 않습니다

=> OracleServiceXE 서비스 재시작








크리에이티브 커먼즈 라이선스
Creative Commons License
2009/05/22 12:53
오라클에서 TO_CHAR을 이용해서 날짜 관련 값을 구할수 있는 방법을 정리했습니다.
스쳐지나감의 미덕 의 내용을 포멧만 약간 편집했습니다.


SELECT To_char(SYSDATE,'CC')
FROM   dual; --Century

SELECT To_char(SYSDATE,'YYYY')
FROM   dual; --Year (*NOTE reducing the 'Y's reduces the display accordingly) from dual;

SELECT To_char(SYSDATE,'Y,YYY')
FROM   dual; --Four digit year with comma

SELECT To_char(SYSDATE,'YYY,Y')
FROM   dual; --Comma acts as a seperator. (Comma may be any punctuation eg !,/ etc..) from dual;

SELECT To_char(SYSDATE,'YEAR')
FROM   dual; --Year in words

SELECT To_char(SYSDATE,'Q')
FROM   dual; --The quarter of the year

SELECT To_char(SYSDATE,'MM')
FROM   dual; --The number of the month

SELECT To_char(SYSDATE,'RM')
FROM   dual; --The number of the month in roman numerals (Why!?) from dual;

SELECT To_char(SYSDATE,'MONTH')
FROM   dual; --The month. (Rpadded to 9 with spaces); For lower case 'Month'.

SELECT To_char(SYSDATE,'WW')
FROM   dual; --The week of the year

SELECT To_char(SYSDATE,'W')
FROM   dual; --The week of the month

SELECT To_char(SYSDATE,'DDD')
FROM   dual; --The day of the year

SELECT To_char(SYSDATE,'DD')
FROM   dual; --The day of the month

SELECT To_char(SYSDATE,'D')
FROM   dual; --The day of the week

SELECT To_char(SYSDATE,'DAY')
FROM   dual; --THURSDAY The day of the week

SELECT To_char(SYSDATE,'DY')
FROM   dual; --The day of the week abbreviated

SELECT To_char(SYSDATE,'J')
FROM   dual; --Julian Date Number of days since January 1st, 4712BC

SELECT To_char(SYSDATE,'HH')
FROM   dual; --hour clock. may also be to_char (SYSDATE,'HH12') from dual;

SELECT To_char(SYSDATE,'HH24')
FROM   dual; --hr clock

SELECT To_char(SYSDATE,'MI')
FROM   dual; --Minutes

SELECT To_char(SYSDATE,'SS')
FROM   dual; --Seconds

SELECT To_char(SYSDATE,'SSSSS')
FROM   dual; --The seconds since last midnight

크리에이티브 커먼즈 라이선스
Creative Commons License
2009/01/05 08:41
오라클에서 실행계획을 보는 방법은 여러가지가 있습니다. 토드나 오렌지 등의 툴을 이용하면 간편하고 쉽지만 sql만을 사용해서 봐야 하는 경우가 종종 있습니다. 그럴 경우는 다음과 같이 sql을 사용하면 됩니다.
[code]
explain plan for
select * from emp;
[/code]
위와 같이 sql을 사용한 후 아래 sql을 실행시키면 실행계획을 볼 수 있습니다.
[code]
select * from table(dbms_xplan.display);
[/code]

아래와 같은 방법도 있습니다.
[code]
explain plan
set statement_id = 'stmt1' for
select * from emp;

select * from table(dbms_xplan.display('plan_table','stmt1','all'));
select * from table(dbms_xplan.display('plan_table','stmt1','typical'));
select * from table(dbms_xplan.display('plan_table','stmt1','basic'));
[/code]

크리에이티브 커먼즈 라이선스
Creative Commons License

'개발 이야기 > DataBase' 카테고리의 다른 글

오라클 SQL to_char 날짜 관련 정리  (0) 2009/05/22
Cost Based Optimizer의 작동 원리  (0) 2009/01/08
오라클 실행계획 보기  (0) 2009/01/05
CBO와 관련된 잘못된 편견  (0) 2008/12/31
CBO에서의 Cost란?  (1) 2008/12/10
옵티마이저 모드 (OPTIMIZER MODE)  (1) 2008/11/25