ORACLE/ADMIN2007. 6. 16. 01:26
반응형

오라클 계정 패스워드 제한설정


패스워드 제한 설정

$ORACLE_HOME/rdbms/admin/utlpwdmg.sql파일은 sys계정이 소유하고 있어야 한다.
스크립트 마지막에 default profile에 대한 패스워드제한을 설정하므로 원하지 않는다면
주석처리하고 실행하는 것이 좋겠다.

-- ALTER PROFILE DEFAULT LIMIT
-- PASSWORD_LIFE_TIME 60
-- PASSWORD_GRACE_TIME 10
-- PASSWORD_REUSE_TIME 1800
-- PASSWORD_REUSE_MAX UNLIMITED
-- FAILED_LOGIN_ATTEMPTS 3
-- PASSWORD_LOCK_TIME 1/1440
-- PASSWORD_VERIFY_FUNCTION verify_function;

SQL> connect sys/change_on_install
Connected.
SQL> @?/rdbms/admin/utlpwdmg.sql

Function created.

SQL> connect system/manager
Connected.
SQL> create profile myprofile limit
  2  failed_login_attempts 5
  3  password_life_time 60
  4  password_reuse_time 60
  5  password_reuse_max unlimited
  6  password_verify_function verify_function
  7  password_lock_time 1/24
  8  password_grace_time 10;

Profile created.

SQL> alter user kang profile myprofile;

User altered.


failed_login_attempts
비밀번호 5회이상 틀리게 입력하면 계정 lock함

password_life_time
패스워드변경주기(60일)

password_reuse_time
동일한 패스워드로 재사용가능한 시간(60일후 이전과 동일한 패스워드 재사용 가능)

password_reuse_max
현재 사용되는 비밀번호를 다시 사용하기 위해 변경해야만 하는 횟수

password_verify_function
Password Verification Routine지정(function)
sys계정에서 사용자가 패스워드체크루틴을 만들어서 지정할 수도 있고,
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql파일을 실행해도 된다.

password_lock_time
패스워드가 lock되는 기간. 다시말하면,
패스워드 lock된 시작일부터 자동으로 unlock되는 일수(1시간)

password_grace_time
lock하기전의 유예회수. 로그회수 10회까지 경고메시지 출력, 10회이상일때 lock시킴

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 6. 13. 20:13
반응형

8i부터는 connect, resource, dba라는 롤이 없어졌습니다.
다만, 이전 버전과의 호환성 차원에서 존재하는것이구요.
만약 grant connect, resource to 유저명; 이 된다하더라도..
앞으로 8i 이상 버전에서 사용하실 때 한 번 더 확인해보실 필요가 있습니다.
뭐 큰 문젠 없을검다..^^;;

DB에 접속이 가능하려면 최소한 create session 권한은 있어야 하는거 아시죠?
CONNECT - ALTER SESSION, CREATE SESSION, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE SESSION, CREATE VIEW

RESOURCE - CREATE CLUSTER/INDEXTYPE/OPERATOR/PROCEDURE/SEQUENCE/TABLE/TRIGGER/TYPE

 

--------------------------------------------------------------------------------
ANALYZE ANY
  데이터베이스의 모든 테이블, 클러스터, 인덱스를 분석
 
AUDIT ANY
  데이터베이스의 스키마 개체를 감사
 
AUDIT SYSTEM
  명령문 감사 옵션과 권한 감사 옵션의 활성 여부를 결정
 
CREATE CLUSTER
  자신의 스키마에 클러스터를 생성
 
CREATE ANY CLUSTER
  CREATE ANY TABLE과 유사한 권한으로 모든 스키마에 클러스터를 생성
 
ALTER ANY CLUSTER
  데이터베이스의 모든 클러스터를 변경
 
DROP ANY CLUSTER
  데이터베이스의 모든 클러스터를 삭제
 
ALTER DATABASE
  데이터베이스를 변경. 운영 체제 권한에 관계없이 Oracle을 사용하여 운영 체제에 파일을 추가
 
CREATE DATABASE LINK
  자신의 스키마에 개인용 데이터베이스 링크를 생성
 
CREATE ANY INDEX
  테이블의 스키마에 인덱스를 생성
 
ALTER ANY INDEX
  데이터베이스의 인덱스를 변경
 
DROP ANY INDEX
  데이터베이스의 인덱스를 삭제
 
GRANT ANY PRIVILEGE
  개체 권한이 아닌 시스템 권한을 부여
 
CREATE PROCEDURE
  자신의 스키마에 내장 프로시저, 함수, 패키지를 생성
 
CREATE ANY PROCEDURE
  스키마에 내장 프로시터, 함수, 패키지를 생성
(사용자는 또한 ALTER ANY TABLE, BACKUP ANY TABLE, DROP ANY TABLE, SELECT ANY TABLE, INSERT ANY TABLE, UPDATE NAY TABLE, DELETE ANY TABLE 또는 GRANT ANY TABLE 권한이 있어야 함
 
ALTER ANY PROCEDURE
  스키마에 있는 내장 프로시저, 함수, 패키지를 컴파일
 
DROP ANY PROCEDURE
  스키마에 있는 내장 프로시저, 함수, 패키지를 삭제
 
EXECUTE ANY PROCEDURE
  스키마에 있는 독립형이나 패키지된 프로시저 또는 함수를 실행할 수 있으며 모든 공용 패키지 변수를 참조
 
CREATE PROFILE
  프로파일을 생성
 
ALTER PROFILE
  데이터베이스의 프로파일을 변경
 
DROP PROFILE
  데이터베이스의 프로파일을 삭제
 
ALTER RESOURCE COST
  모든 사용자 세션에서 사용하는 자원에 대한 비용을 설정
 
CREATE PUBLIC DATABASE LINK
  공용데이터베이스 링크를 생성
 
DROP PUBLIC DATABASE LINK
  공용 데이터베이스 링크를 삭제
 
CREATE PUBLIC SYNONYM
  공용 동의어를 생성
 
DROP PUBLIC SYNONYM
  공용 동의어를 삭제
 
CREATE ROLE
  롤을 생성
 
ALTER ANY ROLE
  데이터베이스에서 롤을 변경
 
DROP ANY ROLE
  데이터베이스에서 롤을 삭제
 
GRANT ANY ROLE
  데이터베이스에 롤을 부여
 
CREATE ROLLBACK SEGMENT
  롤백 세그먼트를 생성
 
ALTER ROLLBACK GEGMENT
  롤백 세그먼트를 변경
 
DROP ROLLBACK SEGMENT
  롤백 세그먼트를 삭제
 
CREATE SESSION
  데이터베이스에 접속
 
ALTER SESSION
  ALTER SESSIN 명령문을 실행
 
RESTRICTED SESSION
  STARTUP RESTRICT를 사용하여 데이터베이스가 시작되었을 때 접속(OSOPER과 OSDBA 롤은 이 권한을 가짐)
 
CREATE SEQUENCE
  자신의 스키마에 시퀀스를 생성
 
CREATE ANY SEQUENCE
  스키마에서 시퀀스를 생성
 
ALTER ANY SEQUENCE
  스키마에서 시퀀스를 변경
 
DROP ANY SEQUENCE
  스키마에서 시퀀스를 삭제
 
SELECT ANY SEQUENCE
  스키마에서 시퀀스를 참조
 
CREATE SNAPSHOT
  자신의 스키마에 스냅샷을 생성(사용자는 CREATE TABLE권한이 있어야 함)
 
ALTER SNAPSHOT
  스키마에서 스냅샷을 변경
 
DROP ANY SNAPSHOT
  스키마에서 스냅샷을 삭제
 
CREATE SYNONYM
  자신의 스키마에 동의어를 생성
 
CROP ANY SYNONYM
  스키마에서 동의어를 삭제
 
ALTER SYSTEM
  ALTER SYSTEM 명령문을 실행
 
CREATE TABLE
  자신의 스키마에 테이블을 생성. 또한 자신의 스키마에 있는 테이블에 무결성 제약 조건을 포함하여 인덱스를 생성할 수 있다.(이 권한을 부여받은 사용자는 테이블스페이스에 할당량을 가지거나 UNLIMITED TABLESPACE 권한이 있어야 함)
 
CREATE ANY TABLE
  스키마에 테이블을 생성.(이 권한을 부여받은 사용자가 CREATE ANY TABLE 구너한이 있고 다른 사용자의 스키마에 테이블을 생성하려는 경우 이 권한을 부여받은 사용자는 해당 테이블스페이스에 영역 할당량이 있어야 함. 해당 테이블의 소유자는 CREATE [ANY] TABLE 권한이 없어도 됨)
 
ALTER ANY TABLE
  스키마의 테이블을 변경하고 스키마에서 뷰를 컴파일
 
BACKUP ANY TABLE
  스키마의 테이블에서 Export 유틸리티를 사용하여 증분 엑스포트를 수행
 
DROP ANY TABLE
  스키마에서 테이블을 삭제하거나 잘라낸다.
 
LOCK ANY TABLE
  스키마에서 테이블이나 뷰를 잠근다.
 
COMMENT ANY TABLE
  스키마에 있는 테이블이나 뷰 또는 열에 대해 설명
 
SELECT ANY TABLE
  스키마에서 테이블뷰 또는 스냅샷을 질의
 
INSERT ANY TABLE
  스키마의 테이블이나 뷰에 행을 삽입
 
UPDATE ANY TABLE
  스키마의 테이블이나 뷰의 행을 갱신
 
DELETE ANY TABLE
  스키마의 테이블이나 뷰에서 행을 삭제
 
CREATE TABLESPACE
  테이블스페이스를 생성. 사용자 운영 체재 권한에 관계없이 Oracle을 사용하여 운영 체제에 파일을 추가
 
ALTER TABLESPACE
  테이블스페이스를 변경. 사용자 운영 체제 권한에 관계없이 Oracle을 사용하여 운영 체제에 파일을 추가
 
MANAGE TABLESPACE
  테이블스페이스를 오프라인이나 온라인으로 설정하여 테이블스페이스 백업을 시작하고 끝낸다.
 
DROP TABLESPACE
  테이블스페이스를 삭제
 
UNLIMITED TABLESPACE
  테이블스페이스를 무제한 사용. 이 구너한은 해당 테이블스페이스에 지정되어 있는 할당량을 무효화 함. UNLIMITED TABLESPACE 권한이 처뢰되면 이 권한을 사용하여 생성한 스키마 개체는 그대로 유지되지만 지정한 테이블스페이스에 대해 할당량이 허용되지 않으면 테이블스페이스에 대해 더 이상 할당되지 않는다. 이 시스템 권한은 롤이 아닌 사용자에게만 부여할 수 있음. 일반적으로 이 시스템 권한을 부여하는 대신 테이블스페이스 할당량을 지정.
 
FORCE TRANSACTION
  지역 데이터베이스에 있는 고유의 미확정 분산 트랜잭션을 강제로 커밋하거나 롤백
 
FORCE ANY TARANSACTION
  지역 데이터베이스에 있는 미확정 분산 트랜잭션을 강제로 커밋하거나 롤백
 
CREATE TRIGGER
  자신의 스키마에 트리거를 생성
 
CREATE ANY TRIGGER
  스키마의 테이블과 관련된 스키마에 트리거를 생성
 
ALTER ANY TRIGGER
  스키마에서 트리거를 활성화하거나 비활성화하거나 컴파일
 
DROP ANY TRIGGER
  스키마에서 트리거를 삭제
 
CREATE ANY USER
  사용자를 생성. 테이블스페이스에 할당량을 지정하고 기본값과 임시 테이블스페이스를 설정하며 CREATE USER 명령문의 일부분으로 프로파일을 지정할 수 있음
 
BECOME ANY USER
  다른 사용자가 됨. (전체 데이터베이스 임포트를 수행하는 사용자가 필요)
 
ALTER USER
  다른 사용자를 변경. ALTER USER 명령문을 사용하여 사용자의암호나 인증 방법을 변경하고 테이블스페이스 할당량을 지정하며 기본값과 임시 테이블스페이스를 설정하고 프로파일과 기본 롤을 지정할 수 있음(자신의 암호는 변경하지 않아도 됨)
 
DROP USER
  다른 사용자를 삭제
 
CREATE VIEW
  자신의 스키마에 뷰를 생성
 
CREATE ANY VIEW
  스키마에 뷰를 생성. (사용자는 또한 ALTER ANY TABLE, BACKUP ANY TABLE,DROP ANY TABLE, LOCK ANY TABLE, COMMENT ANY TABLE, SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE 도는 GRANT ANY TABLE 권한도 있어야 함)
 
DROP ANY VIEW
  스키마에서 뷰를 삭제
 
 
 

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 4. 17. 23:29
반응형

1. TABLESPACE 을 MOVE 시키는 방법과
   exp/imp 로 작업 방법
   TABLESPACE 여부가 있다면 MOVE 방법 개인적으로 더 나아 보인다.

ex1)
ALTER TABLE 스키마.테이블 MOVE TABLESPACE 테이블 스패이스_임시;
ALTER TABLE 스키마.테이블 MOVE TABLESPACE 테이블 스패이스;

ex2)
  exp 유저/패스워드 buffer=8388608 recordlength=65535 feedback=100000 tables=테이블  file=덤프파일이름.dmp  LOG=로그파일이름.log

  truncate 작업

  imp 유저/패스워드 buffer=4194304 recordlength=8388608 feedback=100000 ignore=Y grants=N fromuser=catus_own touser=catus_own commit=Y tables=테이블     file=덤프파일이름.dmp 

ps. 테스트 해본 결과 ex1 과 ex2  는 약간의  차이을 보인다.
    TABLE 쪽 사이즈 영역은 같은 결과을  보이지만
    INDEX 쪽 사이즈 영역은 exp/imp 작업시 차이를 보인다.
    exp/imp작업을 하면서 인텍스 을 다시 만들기 때문에 INDEX REBUILD 작업 보다는 사이즈가 커지는 현상을 보여준다.
   
   
2.고수위마크(high water mark) 작업
위에 작업이 끝난후 돌려 보면 약간 줄어 든다.
위에 작업을 했다면 않 해도 무방하다.

ex1)
alter table 테이블 deallocate unused

 

 

oracle 단편화 처리(INDEX)


1.인텍스는  REBUILD 를 하면 된다.
   REBUILD online 은 사이즈가 큰 인덱스  BUILD시
   temp 사이즈가 커야 하고 작업 시간도 오래걸린다.
   online 작업은 별로 권장 하고 싶지 않다.  

   될수 있으면 야간에 시스템이 쓰지 않는 시간에 작업하길 바란다.
   REBUILD  는 작업 시간은 덜 거리나 데이타의 변경 작업을  할 수 없다.

 

ex1)

ALTER INDEX 스키마.인텍스명 REBUILD ;

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 4. 10. 00:55
반응형

1. Raw Device를 언제 사용하나?

Raw Device는 화일 시스템 운영에서와 달리 OS 버퍼를 통하지 않고도 직접 디스크
쓰기 수행이 가능하며, inode 등 자유 공간 정보 관리를 위한 부담이 없으므로,
일반적으로 화일 시스템보다 I/O 속도가 최고 40%까지 효과적인 성능을 보이므로
디스크 IO 속도가 시스템 성능 저하의 원인으로 판단되는 경우 사용할 수 있다.
또한 대부분의 OPS 환경에서 데이타 화일 등 공용 화일의 저장 장소로 Raw
Device의 사용이 요구된다.


2. Raw Device 파티션에 데이타 화일 생성하기

   - 한 파티션 전체 공간을 오라클 화일로 사용할 수 있나?
     불가능하며, 최소한 두 개의 오라클 블럭 크기를 남기고 사용할 수 있다.

     예를 들어, 100M 크기의 파티션에 4K 오라클 블럭 크기를 갖는 최대의
     데이타 화일을 생성하는 문장은 다음과 같다.

     SQL> create tablespace raw_tabspace datafile '/dev/raw1'
          size 102392K REUSE;

     여기서 102392K 값의 산출 근거는 {(100 * 1024K) - 8K} 공식에 의해
     구하여진다.

   - Raw Device의 첫 번째 파티션을 사용할 수 있나?
     사용하지 않을 것을 권고한다. 그 이유는 OS 종류나 버젼에 따라 디스크
     파티션 테이블이나 논리적 볼륨 제어 정보 등이 첫 번째 파티션을 관리될
     수 있기 때문이다. 따라서 OS 벤더의 자문을 받아야 한다.

   - 파티션의 오너쉽은 어떻게 지정하여야 하나?
     기본적으로 생성은 'root'로 수행하지만, 이후에 오너쉽 밑 그룹은 각각
     oracle 사용자와 dba 그룹으로 지정하여야 한다.


3. 데이타베이스 화일 백업에 관하여.

   화일 시스템과는 달리 Raw Device에서는 'tar'나 'cpio' 명령을 사용할 수
   없고, 반드시 아래처럼 'dd' 명령어를 사용하여야 한다.

   % dd if=/dev/raw1 of=/dev/rmt0 bs=16k

   하지만 'dd'로 백업된 화일에 대하여 'tar'나 'cpio' 명령을 사용하여 별도의
   관리 방법을 수행할 수 있다.


4. 화일 운영하기

   - Redo Log의 위치에 대하여?
     Redo Log는 가장 쓰기가 활발하며 특성상 순차적으로 쓰기 작업이 일어나는
     화일이므로 Raw Device 사용이 가장 권장된다. 특히 OPS 환경에서는 반드시
     Raw Device에 관리되어야 한다.

   - Archive Log의 위치에 대하여?
     Archive Log는 특성상 화일 시스템에 저장되어야 한다.

   - Raw Device 파티션에 두 개 이상의 화일을 저장할 수 있나?
     가능하지 않다.

   - 모든 파티션의 크기를 동일하게 지정할 필요가 있나?
     데이타베이스 화일에 대한 파티션 지정 변경이 용이하다는 장점 외에는
     일반적으로 권고되지 않는 방법이다.

반응형

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

[Oracle] 권한 및 가능한 작업  (0) 2007.06.13
oracle 단편화 처리  (0) 2007.04.17
Oracle Partitioned Tables(테이블 파티셔닝 예제)  (0) 2007.03.30
오라클 윈도우에서 삭제하기  (0) 2007.03.15
오라클 사용자 관리  (0) 2007.03.10
Posted by [PineTree]
ORACLE/ADMIN2007. 3. 30. 01:14
반응형
Oracle Partitioned Tables
Version 10.2
 
General
Partition Related Data Dictionary Objects
indpart$ indsubpart$ partobj$ tabpart$
indpart_param$ partlob$ subpartcol$ tabsubpart$
 
DBA ALL USERS
dba_ind_partitions all_ind_partitions user_ind_partitions
dba_ind_subpartitions all_ind_subpartitions user_ind_subpartitions
dba_lob_partitions all_lob_partitions user_lob_partitions
dba_lob_subpartitions all_lob_subpartitions user_lob_subpartitions
dba_subpartition _templates all_subpartition _templates user_subpartition
_templates
dba_subpart_col _statistics all_subpart_col _statistics user_subpart_col
_statistics
dba_subpart_histograms all_subpart_histograms user_subpart_histograms
dba_subpart_key_columns all_subpart_key_columns user_subpart_key_columns
dba_tab_partitions all_tab_partitions user_tab_partitions
dba_tab_subpartitions all_tab_subpartitions user_tab_subpartitions
Note: Oracle supports partitioning only for tables, indexes on tables, materialized views, and indexes on materialized views. Oracle does not support partitioning of clustered tables or indexes on clustered tables.
 
Definitions
Partition Decompose a table or index into smaller, more manageable pieces, called partitions. Each partition of a table or index must have the same logical attributes, such as column names, datatypes, and constraints, but each partition can have separate physical attributes such as pctfree, pctused, and tablespaces.
Partition Key Each row in a partitioned table is unambiguously assigned to a single partition. The partition key is a set of from 1 to 16 columns that determines the partition for each row.
Subpartition Partitions created within partitions. They are just partitions themselves and there is nothing special about them.
Local Index Separate indexes for each partition. A local index can be unique. However, in order for a local index to be unique, the partitioning key of the table must be part of the index's key columns. Unique local indexes are useful for OLTP environments. You cannot explicitly add a partition to a local index. Instead, new partitions are added to local indexes only when you add a partition to the underlying table.
Global Index A single index covering all partitions.
Hash Partitioning Enables partitioning of data that does not lend itself to range or list partitioning.

To view the numbers Oracle uses for hashing:

select sql_hash_value, prev_hash_value from g v$session;
List Partitioning Explicitly controls how rows map to partitions. You do this by specifying a list of discrete values for the partitioning key in the description for each partition.
Range Partitioning Maps data to partitions based on ranges of partition key values that you establish for each partition.
Composite Partitioning Composite partitioning is a combination of other partitioning methods. Oracle currently supports range-hash and range-list composite partitioning.
Partitioning Pruning Oracle optimizes SQL statements to mark the partitions or subpartitions that need to be accessed and eliminates (prunes) unnecessary partitions or subpartitions from access by those SQL statements. In other words, partition pruning is the skipping of unnecessary index and data partitions or subpartitions in a query.
Invalidating Indexes By default, the following operations on partitions on a heap-organized table mark all global indexes as unusable:
  • ADD (HASH)
  • COALESCE (HASH)
  • DROP
  • EXCHANGE
  • MERGE
  • MOVE
  • SPLIT
  • TRUNCATE
 
DemoTablespaces
Create demo tablespaces CREATE TABLESPACE part1
DATAFILE 'c:\temp\part01.dbf' SIZE 10M
BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;

CREATE TABLESPACE part2
DATAFILE 'c:\temp\part02.dbf' SIZE 10M
BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;

CREATE TABLESPACE part3
DATAFILE 'c:\temp\part03.dbf' SIZE 10M
BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;

ALTER USER uwclass QUOTA UNLIMITED ON part1;
ALTER USER uwclass QUOTA UNLIMITED ON part2;
ALTER USER uwclass QUOTA UNLIMITED ON part3;
Drop demo tablespaces DROP TABLESPACE part1 INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE part2 INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE part3 INCLUDING CONTENTS AND DATAFILES;
 
Table Partitions
Hash Partitioned
Table
CREATE TABLE professional_history (
prof_history_id  NUMBER(10),
person_id        NUMBER(10) NOT NULL,
organization_id  NUMBER(10) NOT NULL,
record_date      DATE NOT NULL,
prof_hist_comments VARCHAR2(2000))
PARTITION BY HASH (prof_history_id)
PARTITIONS 3
STORE IN (part1, part2, part3);
List Partitioned
Table (add tablespace names and change table name)
CREATE TABLE sales_by_region (
deptno           NUMBER(10),
deptname         VARCHAR2(20),
quarterly_sales  NUMBER(10,2),
state            VARCHAR2(2))
PARTITION BY LIST (state) (
PARTITION q1_northwest VALUES ('OR', 'WA')
 TABLESPACE north,
PARTITION q1_southwest VALUES ('AZ', 'CA', 'NM')
 TABLESPACE south,
PARTITION q1_northeast VALUES ('NY', 'VT', 'NJ')
 TABLESPACE north,
PARTITION q1_southeast VALUES ('FL', 'GA')
 TABLESPACE south,
PARTITION q1_northcent VALUES ('MN', 'WI')
 TABLESPACE north,
PARTITION q1_southcent VALUES ('OK', 'TX')
 TABLESPACE south);
Range Partitioned
Table - By Date
CREATE TABLE professional_history (
prof_history_id  NUMBER(10),
person_id        NUMBER(10) NOT NULL,
organization_id  NUMBER(10) NOT NULL,
record_date      DATE NOT NULL,
ph_comments      VARCHAR2(2000))
PARTITION BY RANGE (record_date) (
PARTITION yr0
VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY'))
TABLESPACE <tablespace_name>,
PARTITION yr1
VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY'))
TABLESPACE <tablespace_name>,
PARTITION yr2
VALUES LESS THAN (TO_DATE('01-JAN-2002','DD-MON-YYYY'))
TABLESPACE <tablespace_name>,
PARTITION yr9
VALUES LESS THAN (MAXVALUE)
TABLESPACE <tablespace_name>);
Range Partitioned
Table - By Alpha
CREATE TABLE students (
student_id  NUMBER(6),
student_fn  VARCHAR2(25),
student_ln  VARCHAR2(25),
primary key (student_id))
PARTITION BY RANGE (student_ln)
(PARTITION student_ae VALUES LESS THAN ('F%')
TABLESPACE <tablespace_name>,
PARTITION student_fl VALUES LESS THAN ('M%')
TABLESPACE <tablespace_name>,
PARTITION student_mr VALUES LESS THAN ('S%')
TABLESPACE <tablespace_name>,
PARTITION student_sz VALUES LESS THAN (MAXVALUE)
TABLESPACE <tablespace_name>);
Composite Partitioned
Table - By Range And Hash
CREATE TABLE sales_composite (
salesman_id   NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount  NUMBER(10),
sales_date    DATE)
PARTITION BY RANGE(sales_date)
SUBPARTITION BY HASH(salesman_id)
SUBPARTITION TEMPLATE(
SUBPARTITION sp1 TABLESPACE uwdata,
SUBPARTITION sp2 TABLESPACE user_data,
SUBPARTITION sp3 TABLESPACE uwdata,
SUBPARTITION sp4 TABLESPACE uwdata)
(PARTITION sales_jan2000
VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')),
PARTITION sales_feb2000
VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')),
PARTITION sales_mar2000
VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY')),
PARTITION sales_apr2000
VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY')),
PARTITION sales_may2000
VALUES LESS THAN(TO_DATE('06/01/2000','DD/MM/YYYY')),
PARTITION sales_future
VALUES LESS THAN(MAXVALUE));

set linesize 140

SELECT table_name, partition_name, subpartition_name
FROM user_tab_subpartitions;
 
Alter Table For Partitions
Moving Partitions ALTER TABLE <table_name>
MOVE PARTITION <partition_name>
TABLESPACE <tablespace_name>;
ALTER TABLE parts
MOVE PARTITION depot2
TABLESPACE ts094 NOLOGGING;
Moving Subpartitions ALTER TABLE <table_name>
MOVE SUBPARTITION <subpartition_name>
TABLESPACE <tablespace_name>;
ALTER TABLE scuba_gear
MOVE SUBPARTITION bcd_types
TABLESPACE tbs23 PARALLEL (DEGREE 2);
Merging Subpartitions ALTER TABLE <table_name>
MERGE SUBPARTITIONS <subpartition_name>
INTO SUBPARTITION <subpartition_name
TABLESPACE <tablespace_name>;
ALTER TABLE quarterly_regional_sales
MERGE SUBPARTITIONS q1_1999_northwest, q1_1999_southwest
INTO SUBPARTITION q1_1999_west
TABLESPACE ts4;
Modify A Subpartition Template ALTER TABLE <table_name>
SET SUBPARTITION TEMPLATE (
SUBPARTITION <subpartition_name>, TABLESPACE <tablespace_name>,
SUBPARTITION <subpartition_name>, TABLESPACE <tablespace_name>);
ALTER TABLE emp_sub_template
SET SUBPARTITION TEMPLATE (
SUBPARTITION e, TABLESPACE ts1,
SUBPARTITION f, TABLESPACE ts2,
SUBPARTITION g, TABLESPACE ts3,
SUBPARTITION h, TABLESPACE ts4);
Change The Tablespace Name For A Future Partition ALTER TABLE <table_name>
MODIFY DEFAULT ATTRIBUTES FOR PARTITION <partition_name>
TABLESPACE <tablespace_name>;
ALTER TABLE emp
MODIFY DEFAULT ATTRIBUTES FOR PARTITION p1 TABLESPACE ts1;
Modify A List Partitioned List ALTER TABLE <table_name>
MODIFY PARTITION <partition_name>
ADD VALUES (<values_list>);
ALTER TABLE sales_by_region
MODIFY PARTITION region_south
ADD VALUES ('OK', 'KS');
Drop Values From A List Partitioned List ALTER TABLE <table_name>
MODIFY PARTITION <partition_name>
DROP VALUES (<values_list>);
ALTER TABLE sales_by_region
MODIFY PARTITION region_south
DROP VALUES ('OK', 'KS');
Convert A Partition Into A Stand-alone Table ALTER TABLE <table_name>
EXCHANGE PARTITION <partition_name>
WITH TABLE <new_table_name>
<including | excluding> INDEXES
<with | without> VALIDATION
EXCEPTIONS INTO <schema.table_name>;
ALTER TABLE sales
EXCHANGE PARTITION feb97 WITH TABLE sales_feb97
INCLUDING INDEXES
WITHOUT VALIDATION
EXCEPTIONS INTO uwclass.problems;
Renaming A Partition ALTER TABLE <table_name>
RENAME PARTITION <existing_partition_name>
TO <new_partition_name>;
ALTER TABLE employee RENAME PARTITION emp3 TO employee3;
Split Partition ALTER TABLE <table_name>
SPLIT PARTITION <partition_name>
AT <range_definition>
INTO (PARTITION <first_partition>, PARTITION <second_partition>)
UPDATE GLOBAL INDEXES;
ALTER TABLE sales
SPLIT PARTITION sales_q1_2000
AT (TO_DATE('16-FEB-2000','DD-MON-YYYY'))
INTO (PARTITION q1a_2000, PARTITION q1b_2000)
UPDATE GLOBAL INDEXES;
Truncate A Partition ALTER TABLE <table_name>
TRUNCATE PARTITION <partition_name>
DROP STORAGE;
ALTER TABLE employee
TRUNCATE PARTITION employee3
DROP STORAGE;
Split An LOB Partition ALTER TABLE <table_name>
SPLIT PARTITION <partition_name> AT <split location> INTO
(PARTITION <new_partition_name> TABLESPACE <tablespace_name>"
LOB <column_name> STORE AS (TABLESPACE <tablespace_name>),
PARTITION <new_partition_name>
LOB (<column_name>) STORE AS (TABLESPACE <tablespace_name>);
ALTER TABLE print_media_part
SPLIT PARTITION p2 AT (150) INTO
(PARTITION p2a TABLESPACE omf_ts1
LOB ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2),
PARTITION p2b
LOB (ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2));
Add Partition And Specify BLOB/LOB Storage ALTER TABLE <table_name>
ADD PARTITION <new_partition_name> VALUES LESS THAN (MAXVALUE)
LOB (<column_name>) STORE AS (TABLESPACE <tablespace_name);
ALTER TABLE print_media_part
ADD PARTITION p3 VALUES LESS THAN (MAXVALUE)
LOB (ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2)
LOB (ad_sourcetext, ad_finaltext) STORE AS (TABLESPACE omf_ts1);
 
Index Partitions
Table For Index Partitioning CREATE TABLE employees (
employee_id NUMBER(4) NOT NULL,
last_name VARCHAR2(10),
department_id NUMBER(2))
PARTITION BY RANGE (employee_id)
(
PARTITION employees_part1 VALUES LESS THAN (11) TABLESPACE pt1,
PARTITION employees_part2 VALUES LESS THAN (21) TABLESPACE pt2,
PARTITION employees_part3 VALUES LESS THAN (31) TABLESPACE pt3);
Local Index Creation CREATE INDEX <index_name>
ON <table_name> <column_name_list> LOCAL;
CREATE INDEX ixl_employees_employee_id
ON employees (employee_id) LOCAL;

CREATE INDEX ixl_uwhistory
ON uwhistory (transdate, hid, servid, begdate)
LOCAL (
PARTITION p1  TABLESPACE uwidx01,
PARTITION p2  TABLESPACE uwidx02,
PARTITION p3  TABLESPACE uwidx03,
PARTITION p4  TABLESPACE uwidx04,
PARTITION p5  TABLESPACE uwidx05,
PARTITION p6  TABLESPACE uwidx01,
PARTITION p7  TABLESPACE uwidx02,
PARTITION p8  TABLESPACE uwidx03,
PARTITION p9  TABLESPACE uwidx04,
PARTITION p10 TABLESPACE uwidx05,
PARTITION p11 TABLESPACE uwidx01,
PARTITION p12 TABLESPACE uwidx02,
PARTITION p13 TABLESPACE uwidx03,
PARTITION p14 TABLESPACE uwidx04,
PARTITION p15 TABLESPACE uwidx05,
PARTITION p16 TABLESPACE uwidx01,
PARTITION p17 TABLESPACE uwidx02,
PARTITION p18 TABLESPACE uwidx03,
PARTITION p19 TABLESPACE uwidx04,
PARTITION p20 TABLESPACE uwidx05;
Global Index Creation CREATE INDEX <index_name>
ON <table_name> <column_name_list>;
CREATE INDEX ix_employees_employee_id
ON employees(employee_id);
Global Partition Index Creation CREATE INDEX <index_name>
ON <table_name> <column_name_list>
GLOBAL PARTITION BY RANGE (partition_column_name_list)
(
PARTITION <partition_name> VALUES <condition>);
CREATE INDEX ixg_employees_employee_id
ON employees (employee_id)
GLOBAL PARTITION BY RANGE(department_id)
(
PARTITION p1 VALUES LESS THAN(5000)
TABLESPACE indx1,
PARTITION p2 VALUES LESS THAN(MAXVALUE)
TABLESPACE indx2);
 
Alter Index For Partitions
Rebuild Local All Local Indexes On A Table ALTER TABLE <table_name>
MODIFY PARTITION <partition_name>
REBUILD UNUSABLE LOCAL INDEXES;
ALTER TABLE dept
MODIFY PARTITION p1
REBUILD UNUSABLE LOCAL INDEXES;
Rebuild any unusable local index partitions associated with a hash partition at the specific composite partitioned table subpartition level ALTER TABLE <table_name>
MODIFY SUBPARTITION <subpartition_name>
REBUILD UNUSABLE LOCAL INDEXES;
ALTER TABLE emp
MODIFY SUBPARTITION p3_s1
REBUILD UNUSABLE LOCAL INDEXES;
 
Drop Partition
Drop Partition ALTER TABLE DROP PARTITION <partition_name>
UPDATE GLOBAL INDEXES;
ALTER TABLE DROP PARTITION p1 UPDATE GLOBAL INDEXES;
 
Demos

Partition Elimination
conn scott/tiger

-- Create a list partitioned table
CREATE TABLE partdemo (
empno    NUMBER(4) NOT NULL,
ename    VARCHAR2(10),
job      VARCHAR2(9),
mgr      NUMBER(4),
hiredate DATE,
sal      NUMBER(7, 2),
comm     NUMBER(7, 2),
deptno   NUMBER(2))
partition by list(deptno)(
partition p1 values (10,30) tablespace uwdata,
partition p2 values (20,40) tablespace example);

INSERT INTO partdemo SELECT * FROM scott.emp;

set linesize 121

SELECT * FROM partdemo;

SELECT * FROM partdemo PARTITION(p1);

SELECT * FROM partdemo PARTITION(p2);

-- Take the example tablespace OFFLINE to examine partition elimination
conn / as sysdba
ALTER TABLESPACE example OFFLINE;
conn scott/tiger

SELECT COUNT(*) FROM partdemo;
SELECT COUNT(*) FROM partdemo WHERE deptno = 10;
SELECT COUNT(*) FROM partdemo WHERE deptno BETWEEN 1 AND 19;
SELECT COUNT(*) FROM partdemo WHERE deptno BETWEEN 1 AND 20;
SELECT COUNT(*) FROM partdemo WHERE deptno IN(10,30);

conn / as sysdba
ALTER TABLESPACE example ONLINE;
반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 3. 15. 18:21
반응형

오라클을 분명히 언인스톨 완료 까지 했는데 서비스 목록에 가보면 오라클 서비스가 지워지지 않고 계속 작동중인것을 볼 수 있을 것이다. 이런 상태에서 같은 버전, 혹은 다른 버전의 오라클을 설치했을 때 제대로 작동이 되지 않는다. (설치가 제대로 되지 않아 8i, 9i, 10g 버전을 골고루 깔아봤을 때 전 버전이 제대로 삭제되어있지 않으면 잘 설치가 되지 않았다) 이 것을 완전히 삭제 하려면 레지스트리에서 오라클에 관련된 항목을 모두 수동으로 삭제해 주어야 한다.  일단

 

1) 윈도우 서비스에 들어가서 오라클 관련 모든 서비스를 멈춘다.

 

regedit을 실행시킨 후

2) HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services

이 부분에서 Oracle로 시작되는 부분을 모두 지운다.

 

3) HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE

이 부분 마찬가지 Oracle로 시작되는 부분을 모두 지운다.

 

4) 물리적인 하드 드라이브에 존재하는 오라클 관련 폴더들을 지워준다. 하드를 파티션을 나누었을 때 C드라이브에 설치를 안해도 설치한 드라이브, C드라이브에 모두 오라클 관련 폴더가 남는다.

 

5) 재부팅 후 서비스에 오라클 서비스가 남아있는지 확인 한다.

 

실질적인 방법은 매우 간단하다. 하지만 이 과정을 거치지 않으면 제대로 삭제가 되지 않기때문에 서비스 문제 발생의 원인이 될 수 있다.

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 3. 10. 21:36
반응형
* 사용자 비밀번호를 변경하는 방법.

        ALTER USER <username> IDENTIFIED BY <new_password>;

오라클 8 부터는 sqlplus 를 통해, 유닉스처럼 비밀번호를 변경한다.

         SQL> password
         Changing password for SCOTT
         Old password:
         New password:
         Retype new password:

만약 다른 사용자의 비밀번호를 변경하고 싶다면, 'password 사용자이름' 으로 한다.



* 사용자를 삭제하고, 만드는 방법.
생성)
  CREATE USER scott
  IDENTIFIED BY tiger  -- 비밀번호
  DEFAULT TABLESACE  tools -- 테이블스페이스 설정
  TEMPORARY TABLESPACE temp; -- 임시테이블 스페이스 설정 ( 임시테이블스페이스가 정렬시사용되므로 정렬공간확보 )
삭제)
        DROP USER scott CASCADE;

생성후 권한 주기)
        GRANT CONNECT, RESOURCE TO scott;
        GRANT DBA TO scott;  

사용자의 테이블 스페이스 사용량 지정하기)
        ALTER USER scott QUOTA UNLIMITED ON tools;



* 사용자 관리방법

DBA 는 특정사용자를 Lock, Unlock, 비밀번호를 바꾸도록 할 수 있다.
오라클 9i 는 디비를 만들때 dbca(DB Configuration Assistant) 를 사용해서, SYS, SYSTEM 을 제외한 모든 계정을 Lock 할 수 있다.
사용하려면, 각 계정들을 Unlock 해줘야 한다.

         ALTER USER scott ACCOUNT LOCK       -- lock a user account
         ALTER USER scott ACCOUNT UNLOCK;    -- unlocks a locked users account
         ALTER USER scott PASSWORD EXPIRE;   -- 새로운 비밀번호로 바꾸도록 한다.



* 비밀번호 관리 방법.
오라클은 한자리 비밀번호나, 사용자 계정 그대로 비밀번호를 만드는 것을 허용한다. 별로 좋지 않다.

오라클 8 부터는 profile 을 통해 비밀번호를 관리한다.

CREATE PROFILE my_profile LIMIT
  PASSWORD_LIFE_TIME 30;
ALTER USER scott PROFILE my_profile;

설정 가능한 값들)
  FAILED_LOGIN_ATTEMPTS - 로그인 몇번 실패시 Lock 할 것인지?
  PASSWORD_LIFE_TIME    - 패스워드 유효일수
  PASSWORD_REUSE_TIME   - 패스워드 재사용일수 (number of days before a password can be reused)
  PASSWORD_REUSE_MAX    - 현재 패스워드를 재사용한다면, 변경할때까지의 날수.
                         (number of password changes required before the current password can be reused )
  PASSWORD_LOCK_TIME    - 로그인 실패로 인한 Lock 일수
  PASSWORD_GRACE_TIME   - 로그인은 허용되고 경고가 주어지는 기간.
  PASSWORD_VERIFY_FUNCTION - 패스워드 변경 함수.


* administrative (privileged) 사용자란.
SYSOPER 혹은 SYSDBA 의 권한을 가진 사용자를 의미한다. 이런 권한이 있으면 디비가 꺼져있어도 디비에 접근해서 작업을 할 수 있다.
이 권한을 관리하는 것은 디비가 아닌 패스워드 파일을 사용해서 하는데, 패스워드 파일은 orapwd 유틸리티를 사용해서 만들어낸다.



* administrative user 로 연결하는 방법.
administrative user는 유닉스에서는 DBA 그룹이고, 윈도우즈 NT 계열에서는 ORA_DBA 그룹이다.
         connect / as sysdba

         connect sys/password as sysdba



* 패스워드파일을 만드는 방법.
패스워드 파일은 $ORACLE_HOME/dbs/orapw or orapwSID 에 있다.
원격의 접속자를 위해 패스워드 파일을 생성한다.

1) 로그인 해서
2) 다음 명령실행. :
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=mypasswd
3) Shutdown the database (SQLPLUS> SHUTDOWN IMMEDIATE)
4) INIT.ORA file 을 열어 REMOTE_LOGIN_PASSWORDFILE=exclusive 라고 수정한다.
5) Startup the database (SQLPLUS> STARTUP)



* 패스워드파일에 사용자 추가하는 방법.
패스워드파일에 어떤 사용자가 있는지는 SYS.V_$PWFILE_USERS 에 쿼리해서 알아낸다.
sysdba 나 sysoper 권한을 주면 추가되고, 혹은 orapwd 유틸을 사용한다.
         GRANT SYSDBA TO scott;



* 다른 사용자로 바꾸고 싶다면.

        SQL> select password from dba_users where username='SCOTT';
        PASSWORD
         -----------------------------
         F894844C34402B67

        SQL> alter user scott identified by lion;
        User altered.

        SQL> connect scott/lion
        Connected.

        REM Do whatever you like...

        SQL> connect system/manager
        Connected.

        SQL> alter user scott identified by values 'F894844C34402B67';
        User altered.

        SQL> connect scott/tiger
        Connected.



* 원격 로그인시에 반드시 비밀번호를 입력하도록 한다.

REMOTE_OS_AUTHENT = FALSE 로 한다.



* 오라클 생성시 만들어지는 유저들... (이렇게나 많았나????)



SYS/CHANGE_ON_INSTALL or INTERNAL
Oracle Data Dictionary/ Catalog
생성 스크립트: ?/rdbms/admin/sql.bsq and various cat*.sql scripts
패스워드수정가능(디비만든 직후)
삭제불가



SYSTEM/MANAGER
The default DBA user name (please do not use SYS)
생성 스크립트: ?/rdbms/admin/sql.bsq
패스워드수정가능(디비만든 직후)
삭제불가


OUTLN/OUTLN
Stored outlines for optimizer plan stability
생성 스크립트: ?/rdbms/admin/sql.bsq
패스워드수정가능(디비만든 직후)
삭제불가


SCOTT/TIGER, ADAMS/WOOD, JONES/STEEL, CLARK/CLOTH and BLAKE/PAPER.
Training/ demonstration users containing the popular EMP and DEPT tables
생성 스크립트: ?/rdbms/admin/utlsampl.sql
패스워드수정가능(디비만든 직후)
삭제가능


HR/HR (Human Resources), OE/OE (Order Entry), SH/SH (Sales History).
Training/ demonstration users containing the popular EMPLOYEES and DEPARTMENTS tables
생성 스크립트: ?/demo/schema/mksample.sql
패스워드수정가능
삭제가능


CTXSYS/CTXSYS
Oracle interMedia (ConText Cartridge) administrator user
생성 스크립트: ?/ctx/admin/dr0csys.sql


TRACESVR/TRACE
Oracle Trace server
생성 스크립트: ?/rdbms/admin/otrcsvr.sql


DBSNMP/DBSNMP
Oracle Intelligent agent
생성 스크립트: ?/rdbms/admin/catsnmp.sql, called from catalog.sql
패스워드수정가능 - snmp_rw.ora 파일에 새로운 비밀번호를 넣는다
삭제가능 - Only if you do not use the Intelligent Agents


ORDPLUGINS/ORDPLUGINS
Object Relational Data (ORD) User used by Time Series, etc.
생성 스크립트: ?/ord/admin/ordinst.sql


ORDSYS/ORDSYS
Object Relational Data (ORD) User used by Time Series, etc
생성 스크립트: ?/ord/admin/ordinst.sql


DSSYS/DSSYS
Oracle Dynamic Services and Syndication Server
생성 스크립트: ?/ds/sql/dssys_init.sql


MDSYS/MDSYS
Oracle Spatial administrator user
생성 스크립트: ?/ord/admin/ordinst.sql


AURORA$ORB$UNAUTHENTICATED/INVALID
Used for users who do not authenticate in Aurora/ORB
생성 스크립트: ?/javavm/install/init_orb.sql called from ?/javavm/install/initjvm.sql


PERFSTAT/PERFSTAT
Oracle Statistics Package (STATSPACK) that supersedes UTLBSTAT/UTLESTAT
생성 스크립트: ?/rdbms/admin/statscre.sql


* 의심가는 테이블 감시하는 법.
DBMS_FGA 를 통해 의심가는 테이블에 대한 감시 정책을 생성한다.
DBA_AUDIT_POLICIES 에서 감시정책의 리스트를 볼 수 있고,
감시 기록은 DBA_FGA_AUDIT_TRAIL 에 남는다.
DBMS_FGA PL/SQL패키지는 테이블이나 뷰에 대한 정책을 적용하기 위한 패키지 안의 프로시져 즉 인터페이스이다.

-- Add policy on table with auditing condition...
execute dbms_fga.add_policy('HR', 'EMP', 'policy1', 'deptno > 10');
-- Must ANALYZE, this feature works with CBO (Cost Based Optimizer)
analyze table EMP compute statistics;

select * from EMP where c1 = 11;  -- Will trigger auditing
select * from EMP where c1 = 09;  -- No auditing

-- Now we can see the statments that triggered the auditing condition...
select sqltext from sys.fga_log$
delete from sys.fga_log$;
반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 2. 24. 05:55
반응형

DB10g 아카이브 로그 파일관리
==========================

현상> 갑자기 db가 멈추는 현상 발생 abort로 죽이고 다시 살리면 다음과 같은 에러 발생

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-16038: log 2 sequence# 618 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 2 thread 1:
'/home01/oracle/ocs/oradata/OCSD/onlinelog/o1_mf_2_1k7xomh4_.log'
ORA-00312: online log 2 thread 1:
'/home02/oracle/ocs/infra/flash_recovery_area/OCSD/onlinelog/o1_mf_2_1k7xormv_.log'

 

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


#### 조치하는 법


1) db_recovery_file_dest_size를 증가시켜 주면 된다. 바로 반영됩니다.

    SQL> alter system set db_recovery_file_dest_size=xG;

 

2) Stop using the db_recovery_file_dest by unsetting the parameter.
   ( This assumes you never really wanted to use this option )

 

3)  rman repository/Controlfile 에서 엔트리들을 삭제한다.

SQL> conn / as sysdba
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

         위의 명령으로 조회해 보면 최대치 까지 로그가 쌓인것을 알 수 있음.

 

다음과 같이 조치한다.

RMAN 사용해서 ARCHIVE LOG 삭제

#$ORACLE_HOME/bin/rman

 

RMAN> connect target /

RMAN> LIST ARCHIVELOG LIKE '%.arc';

RMAN> DELETE ARCHIVELOG LIKE '%.arc';

3일치 아카이브로그 남겨두고 지우기

RMAN> delete archivelog all completed before 'sysdate -3';

 

하나씩 지우는게 번거러울 경우 아래와 같이 한번에 지우는 방법도 있음.

1. os 상에서 우선 파일을 삭제한다.

   # cd $ORACLE_BASE/flash_recovery_area/$ORACLE_SID/archivelog/yyyy_mm_dd

   # rm -r $ORACLE_BASE/flash_recovery_area/$ORACLE_SID/archivelog/'삭제할 디렉토리명'

2. RMAN을 실행한다.

  # $ORACLE_HOME/bin/rman

  RMAN>connect target /

  RMAN>crosscheck archivelog all; -> marks the controlfile that the archives have been deleted

  RMAN>delete expired archivelog all; -> deletes the log entries identified above

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 2. 13. 00:56
반응형

캐릭터셋 변경의 실제

ALTER DATABASE 명령을 이용한 딕셔너리 변경

앞서 살펴본 "변경 케이스 1"에 해당하는 것으로 데이타에 대한 어떠한 검토나 수정은 없이 딕셔너리의 캐릭터셋 정보만을 교체하는 작업이다. KO16KSC5601을 KO16MSWIN949로 변경할 때 유용하다. 그리고 한글만을 저장해 온 US7ASCII 데이타베이스 또한 이 방식으로 KO16MSWIN949로 변경할 수 있다.

절차

 SQL> SHUTDOWN IMMEDIATE;
<do a full backup>
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE CHARACTER SET KO16MSWIN949;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  171966464 bytes
Fixed Size                   777956 bytes
Variable Size             145760540 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
Database mounted.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

System altered.

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0
  2  ;

System altered.

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

System altered.

SQL> ALTER DATABASE OPEN
  2  ;

Database altered.

SQL> ALTER DATABASE CHARACTER SET KO16MSWIN949;

Database altered.

-- 한편 현재 캐릭터셋의 Superset이 아닌 캐릭터셋으로는 변경이 불가능하다.

SQL> ALTER DATABASE CHARACTER SET WE8DEC;
ALTER DATABASE CHARACTER SET WE8DEC
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set

-- 다시 데이타베이스를 재구동하면 이제 어엿한 KO16MSWIN949 데이타베이스가 되어 있다.

C:\Documents and Settings\jwryoo>set NLS_LANG=.KO16MSWIN949

C:\Documents and Settings\jwryoo>sqlplus scott/tiger@KSC5601

SQL> select sval from t;

SVAL
---------------
커피숖

변경 후에는 이제 exp/imp를 이용하여 UTF8 데이타베이스로 마이그레이션하는 것도 가능해진다.

이 방식을 사용하려면 반드시 새로운 캐릭터셋은 기존 캐릭터셋의 Superset이어야 한다. 그렇지 않으면 기존 데이타의 안전이 보장될 수 없기 때문이다.

기존 캐릭터셋
새로운 캐릭터셋
변경 가능 여부
US7ASCII
KO16KSC5601/KO16MSWIN949/UTF8/AL32UTF8
가능
KO16KSC5601
KO16MSWIN949
가능
KO16MSWIN949
UTF8
불가능
UTF8
AL32UTF8
가능

강제로 캐릭터셋을 변경하는 옵션 또한 알려져 있으나, 이 지면에 소개할 수 없는 점 양해 바란다. 간단하지만 극히 위험한 작업이다. 이미 강조했지만, 반드시 오라클 엔지니어나 오라클과 지원계약을 맺은 고객의 담당자가 충분히 그 위험성과 방법에 대해 숙지한 후에 작업할 수 있따는 것을 명심하기 바란다.
반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 2. 10. 23:47
반응형

오라클과 NLS의 찰떡궁합 들여다보기

 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_1.html

반응형
Posted by [PineTree]