OS/LINUX2007. 4. 12. 18:57
반응형

음... 2001년 어느 토요일 오후.

퇴근 안하고 앉아서,

서버의 .cshrc 를 열어서 각 명령어들이 무슨 역할을 하는지 찾아보았다.

아마도, 뭔지도 모르고 사용하는 것이 맘이 안좋아서 그랬던 듯 싶다.

 

C쉘에 해당되는 이야기이다.

리눅스 서버설정을 위해 사용했던 파일내용이다.

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

umask 022

#user, group, other 4:읽기방지, 2:쓰기방지, 1:실행방지
#새로 만들어지는 파일은 -rwxr-xr-x 로 만들어지게 됩니다.

stty erase ^H                     #erase 키를 mapping 합니다. ( ctrl + v h)
stty cs8 -istrip -parenb       #한글입력설정

set host=`hostname`           # '' 는 문자열이고, ` ` 는 안의 명령어를 실행시킨다. hostname 이라는 명령을 실행시켜서 host 에 값을 입력했다.
set history=40                   # history 를 볼때, 40 건씩 보겠다.
set noclobber                   # 덮어쓰기 방지
set filec                           # ESC 를 누르면, 파일명 자동완성기능
set autolist                       # 파일명 자동완성기능

set prompt="[`whoami`@`hostname -s`:${cwd}]"

unset autologout               #자동로그아웃을 방지합니다.

set -o vi                          # 명령라인에서 vi 처럼 기존 사용했던 명령어를 j, k  키를 사용해서 위 아래로 이동한다.

 

alias setprompt 'set prompt="[`whoami`@`hostname -s`:${cwd}]"'
alias cd 'chdir \!* && setprompt'
alias ls '/bin/ls -aF'         # file, directory를 구분 표기
alias cd.. 'cd ..'
alias cp 'cp -i'
alias l 'ls -al | more'
alias dir 'ls -alCF \!* |more'
alias rm 'rm -i'                 # 삭제여부를 질문한다
alias h history

if (! $?prompt) goto cshrc_end

 

setprompt

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

* history  명령어

Expression Use

!!

마지막 명령의 반복수행

!n

history 버퍼에서 n번째 명령어 수행

!-n

history 버퍼에서 마지막명령에서 n번째 명령어 수행

!text

버퍼의 명령어들중에서 text로 시작하는 최근의 명령어 수행

!?text

버퍼의 명령어들중에서 text를 포함하는 최근의 명령어 수행

!:n

마지막 명령어의 n번째 단어 수행

!$

마지막 명령어의 마지막 단어 수행

!*

마지막 명령어의 모든 변수들 수행

^old^new

앞선 명령어의 oldnew로 대체하고 수행

반응형

'OS > LINUX' 카테고리의 다른 글

[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
LINUX RPM 관련 명령어  (0) 2007.07.03
Xmanager 접속을 위한 리눅스 설정하기  (0) 2007.03.09
crontab 명령  (0) 2007.02.15
LINUX usb 인식해서 사용하기  (0) 2007.02.10
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]
PineTree/TRAVEL2007. 4. 2. 00:35
반응형
보너스항공권으로 여행하실 때 공제되는 마일리지를 아래 표에서 확인하시기 바랍니다.(단.좌석승급 및 이원구간 경유여정 마일리지 공제표는 아시아나클럽-> 마일리지 사용 -> 아시아나항공란을 참조하시기 바랍니다.)
단, 2006년 4월 1일부터 2008년 3월 31일까지 2년동안 현행 마일리지 공제표와 신규 마일리지 공제표 중 회원님께 유리한 것으로 선택하실 수 있습니다.
구분 트래블 비즈니스 퍼스트
현행 변경 후 현행 변경 후 현행 변경 후
국내선 10,000 10,000        
일본/동북아 35,000 30,000 45,000 45,000 65,000 60,000
동남아 45,000 40,000 60,000 60,000 80,000 80,000
서남아 50,000 50,000 75,000 75,000 100,000 100,000
미주/대양주 68,000 70,000 100,000 105,000 135,000 140,000
유럽 68,000 70,000 100,000 105,000 135,000 140,000
반응형

'PineTree > TRAVEL' 카테고리의 다른 글

서울에서 가볼만한 곳 BEST 10  (0) 2010.06.02
보너스 항공권 마일리지 공제표 (왕복기준)  (0) 2010.04.26
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]
OS/SOLARIS2007. 3. 29. 01:04
반응형
요약

썬 마이크로시스템즈의 솔라리스 점프스타트(JumpStart) 기술은 솔라리스 운영체재와 다른 연관 소프트웨어들을 여러개의 네트워크 노드들에 자동으로 설치하는데 사용 되는 기술 입니다.

x86/x64 플랫폼의 솔라리스10 에서 점프스타트 소프트웨어는 SPARC 플랫폼의 솔라리스10 에서와 기본적으로 동일합니다. 그러나 정확한 작업을 위해서는 몇가지 미세한 차이에 대해 언급할 필요가 있습니다.

이 글은 썬의 x86/x64 머신에서 솔라리스10을 위한 점프스타트 서버를 설정하는데 필요한 단계들과 설명들을 제공하고 2 개 혹은 그 이상의 클라이언트를 위한 점프스타트 구성도 직접 해 봅니다.

범용의 참고서로써 썬의 온라인 문서인 Using Custom JumpStart 를 참고하시기 바랍니다.


소개

이 글은 x86/x64 플랫폼의 솔라리스10 을 이용해서 점프스타트 서버를 생성하는 단계별 과정을 제공하고 있습니다. 솔라리스10은 서버와 점프스타트 설치 서버에서 모두 동일한 버전을 사용하고 있습니다. AMD 옵테론과 인텔 프로세서 기반의 머신들이 서버와 클라이언트로 사용되었고 각각에 어떠한 프로세서 타입들이 사용되도록 사용되었고 클라이언트들은 각각 어떠한 프로세서 타입이 사용 되도록 선호도를 주지 않았습니다.

아래와 같은 작업을 하는 명령어들이 제공 됩니다:

  • 점프스타트 설치 서버 생성하기
  • 클라이언트 설정 파일 생성하기
  • 설치, 설정 디렉토리들을 공유하기
  • 클라이언트 tftpboot 파일 생성하기
  • DHCP 서버 설정 및 실행하기
  • 간섭이 필요 없는 점프스타트 설치 시작하기

Pre-boot Execution Environment (PXE) 가 네트워크를 통해 부팅 되기위해 활성화 되어 있어야 합니다. 몇몇 클라이언트들에서 PXE는 BIOS에서 활성화될 필요가 있습니다.

클라이언트 부트 파일을 생성할때의 버그는 마지막 정리작업 섹션에 기재했습니다.


솔라리스 점프스타트 과정

두개의 클라이언트에 x86/x64 플랫폼의 솔라리스10을 설치하기 위해서 점프스타트 설치 서버를 설정하는 명령들이 아래에 나와 있습니다.

이 연습 과정에서 점프스타트 서버의 노드 이름은 stinger2 이고 IP 주소는 172.16.64.194 니다. 기본 라우터의 IP 주소는 172.16.64.1 입니다. 점프스타트 서버가 위치하고 있는 네트워크 주소는 172.16.64.0 입니다.

만약 필요하다면 솔라리스10을 다운로드 받으실 수 있습니다.

1. 점프 스타트 설치 서버 생성하기

a. 서버에 설치 디렉토리를 생성합니다

# mkdir -p /export/install

b. x86/64 플랫폼의 솔라리스10 DVD를 서버의 DVD 플레이어에 집어 넣습니다. DVD의 Solaris_10/Tools 디렉토리로 이동하여 setup_install_server 커맨드를 실행시킴으로써 인스톨 서버를 생성합니다. 솔라리스 소프트웨어는 새롭게 생덩된 디렉토리로 복사 됩니다. 절대 경로명을 매개변수로 지정해 줍니다.

# cd /cdrom/cdrom0/Solaris_10/Tools
  # ./setup_install_server /export/install
  Verifying target directory...
  Calculating the required disk space for the Solaris_10 product
  \|/-\|/-
  Calculating space required for the installation boot image
  \|/-\|/-
  Copying the CD image to disk...
  \|/-\|/-
  Copying Install Boot Image hierarchy...
  \|/-\|/-
  Copying /boot x86 netboot hierarchy...
  \|/-\|/-
  Install Server setup complete
  #

c. install 디렉토리가 제대로 생성이 됐는지 확인합니다.

  # du -sk /export/install

  3083278 /export/install

d. DVD를 DVD 플레이어에서 꺼냅니다.

  # cd /;eject

클라이언트 설정 파일 생성하기

클라이언트 설정 파일들은 일반적인 점프스타트 설치를 제어하는데 사용됩니다.

a. 파일들이 위치할 설정 디렉토리를 생성합니다.

  # mkdir /export/config

b. sysidcfg 파일을 생성합니다:

제일 처음 생성할 파일은 sysidcfg 파일 입니다. 이 파일은 반드시 올바른 정보로 올바르게 포맷되어져 있어야 합니다. 그렇지 않을 경우 파일은 무시 되고 간섭이 필요 없는 점프스타트 설치는 종료 됩니다. 후에 설치 과정은 표준 솔라리스 설치 방식으로 전환됩니다.

점프스타트 클라이언트는 OS 설치를 시작하기 전에 sysidcfg 파일을 찾습니다. 이 파일은 반드시 "sysidcfg" 라는 이름을 가져야 합니다. 그러므로 만약 복수개 버젼의 파일을 가지고 있어야 한다면 각 sysidcfg 파일은 반드시 분리된 디렉토리에 존재해야 합니다. 각 클라이언트는 그들의 고유 sysidcfg 파일을 가질 수 있습니다. 혹은 복수개의 클라이언트가 동일한 sysidcfg 파일을 사용할 수도 있습니다. sysidcfg 파일은 add_install_client 커맨드를 통해서 클라이언트에 지정 됩니다. 다음은 두개의 sysidcfg 파일 생성을 보여 줍니다:

  # cd /export/config
  # mkdir sysidcfg1
  # cd sysidcfg1
  # vi sysidcfg

  system_locale=en_US.ISO8859-1
  timezone=US/Pacific
  timeserver=localhost
  terminal=vt100
  name_service=NONE
  security_policy=NONE
  root_password=<encrypted from /etc/shadow>
  network_interface=bge0 {hostname=client1
                          netmask=255.255.255.0
                          protocol_ipv6=no
                          default_route=172.16.64.1}

  :wq

  # cd ../
  # mkdir sysidcfg2
  # cd sysidcfg2
  # vi sysidcfg

  system_locale=en_US.ISO8859-1
  timezone=US/Pacific
  timeserver=localhost
  terminal=vt100
  name_service=NONE
  security_policy=NONE
  root_password=<encrypted from /etc/shadow>
  network_interface=bge0 {hostname=client2
                          netmask=255.255.255.0
                          protocol_ipv6=no
                          default_route=172.16.64.1}

  :wq

c. rules 파일 생성하기:

다음으로 생성해야할 파일은 rules 파일입니다. 이것은 텍스트 파일로써 솔라리스가 설치될 각 클라이언트 혹은 클라이언트 그룹을 위한 규칙을 포함하고 있습니다. rules 파일의 각 클라이언트 혹은 클라이언트의 그룹에 어떠한 begin, profile, 그리고 finish 파일을 사용해야 할지 알려 줍니다.

오직 하나의 rules 파일 만이 존재 합니다. 이것은 몇개의 유일한 설정들이 존재하느냐에 따라서 여러개의 라인을 가질 수 있습니다. 아래에는 두개의 분리된 클라이언트 정보를 포함하고 있는 rules 파일의 내용 입니다:

  # cd /export/config
  # vi rules

  hostname client1 begin1 profile1 finish1
  hostname client2 begin2 profile2 finish2

  :wq

rules 파일은 체크 스크립트가 rules.ok 파일을 만들때 사용됩니다 일반적인 점프스타트 설치를 위해서는 rules.ok 파일의 성공적인 생성이 필요합니다.

d. begin 파일 생성하기:

begin 파일은 유저가 정의한 Bourne 쉘 스크립트로써 클라이언트 상에서의 작업을 수행하는데 사용 됩니다. 일반적인 작업은 파생된 프로파일을 생성하고 업그레이드 전에 파일을 백업하는 것을 포함합니다.

원하다면 복수개의 begin 파일을 사용할 수 있습니다. 다음은 두개의 begin 파일을 생성한 예제입니다:

  # cd /export/config
  # vi begin1

  #!/bin/sh
  echo "Begin Script for JumpStart client1..."

  :wq

  # vi begin2

  #!/bin/sh
  echo "Begin Script for JumpStart client2..."

  :wq

  # chmod 755 begin*

클라리언트에서의 설치 동안 begin 파일의 출력은 /tmp/begin.log 에 쓰여 집니다. 설치가 완료 되면 로그 파일은 /var/sadm/system/logs/begin.log 위치에서 찾을 수 있습니다.

Solaris 10 Installation GuideCustom JumpStart Environment Variables 섹션에 begin 스크립트에서 사용할 수 있는 변수들을 설명하고 있습니다.

e. finish 파일 생성하기:

finish 파일은 유저가 정의한 Bourne 쉘 스크립트로써 솔라리스의 설치가 끝난 다음에 클라이언트 상에서의 작업을 수행하는데 사용 됩니다. 이 스크립트는 일반적으로 추가적인 파일, 패키지 혹은 패치의 설치, 루트 환경 커스터마이즈, 추가 소프트웨어 설치 같은 작업을 하는데 사용 됩니다.

원하다면 복수개의 finish 파일을 사용할 수 있습니다. 다음은 두개의finish파일을 생성한 예제입니다:

  # cd /export/config
  # vi finish1

  #!/bin/sh
  echo "Finish Script for JumpStart client1..."
  echo "Get rid of the nfs prompt during the initial boot"
  touch /a/etc/.NFS4inst_state.domain

  :wq

  # vi finish2

  #!/bin/sh
  echo "Finish Script for JumpStart client2..."
  echo "Get rid of the nfs prompt during the initial boot"
  touch /a/etc/.NFS4inst_state.domain

  :wq

  # chmod 755 finish*

솔라리스 설치 프로그램은 클라인터 파일 시스템을 /a 에 마운트 시킵니다. finish 스크립트는 /a 를 존중하여 파일의 추가 변경 혹은 삭제를 하는데 사용 됩니다. 이러한 파일 시스템은 초기 시스템 재부팅시 까지 /a 에 마운팅 되어 남아 있게 됩니다.

점프스타트 디렉토리 /export/installSI_CONFIG_DIR 변수에 지정된 디렉토리에 마운트 됩니다. 디렉토리는 기본적으로 /tmp/install_config 로 지정 됩니다. 파일들은 점프스타트 디렉토리에서 클라이언트로 finish 스크립트에서 실행되는 명령을 통해 가능합니다. 설치된 시스템에 추가될 파일들은 점프스타트 디렉토리에 위치하게 되고 그 다음에 클라이언트에 의해 접근이 가능합니다.

finish 스크립트의 다음의 라인은 설치된 클라이언트의 파일 시스템에 파일을 복사 합니다:

  cp /tmp/install_config/<file_name> /a/<path_name>/

f. profile 파일 생성하기:

profile 파일은 텍스트 파일로 솔라리스 클라리언트에 어떻게 설치될지 지정합니다.

복수개의 profile 파일이 생성될 수 있습니다. 여러개의 클라이언트들이 동일한 profile 파일을 사용할 수 있습니다. 혹은 각 클라이언트들은 고유의 profile 파일을 가질 수도 있습니다. 다음은 두개의 profile 파일 생성을 보여 줍니다:

  # cd /export/config
  # vi profile1

  # install_type MUST be first
  install_type      initial_install

  # start with the minimal required number of packages
  cluster           SUNWCXall
  cluster           SUNWCapache delete
  cluster           SUNWCpcmc   delete
  cluster           SUNWCpcmcx  delete
  cluster           SUNWCthai   delete
  cluster           SUNWClp     delete
  cluster           SUNWCnis    delete
  cluster           SUNWCppp    delete

  # format the entire disk for Solaris
  fdisk   all   solaris all

  # define how the disk is partitioned
  partitioning      explicit
  filesys           rootdisk.s0 6144  /
  filesys           rootdisk.s1 1024  swap
  filesys           rootdisk.s7 free  /state/partition1

  # install systems as standalone
  system_type standalone

  # specify patches to install
  patch 119281-06 nfs 172.16.64.194:/export/patches

  # specify packages to install
  package SPROcc add nfs 172.16.64.194:/export/packages

  :wq

  # vi profile2

  # install_type MUST be first
  install_type      initial_install

  # start with the minimal required number of packages
  cluster           SUNWCXall
  cluster           SUNWCapache delete
  cluster           SUNWCpcmc   delete
  cluster           SUNWCpcmcx  delete
  cluster           SUNWCthai   delete
  cluster           SUNWClp     delete
  cluster           SUNWCnis    delete
  cluster           SUNWCppp    delete

  # format the entire disk for Solaris
  fdisk   all   solaris all

  # define how the disk is partitioned
  partitioning      explicit
  filesys           rootdisk.s0 6144  /
  filesys           rootdisk.s1 4096  swap
  filesys           rootdisk.s7 free  /state/partition1

  # install systems as standalone
  system_type standalone

  # specify patches to install
  patch 119281-06 nfs 172.16.64.194:/export/patches

  # specify packages to install
  package SPROcc add nfs 172.16.64.194:/export/packages

  :wq

g. check 스크립트 생성하기:

check 스크립트는 rulesprofile 파일들이 올바르게 설정되었는지 확인할때 사용 됩니다. 첫째로 check 스크립트를 아래와 같이 로컬 디렉토리 /export/config 에 복사 합니다:

  # cd /export/config
  # cp /export/install/Solaris_10/Misc/jumpstart_sample/check .

h. check 스크립트 실행하기:

  # ./check
  Validating rules...
  Validating profile profile1...
  Validating profile profile2...
  The custom JumpStart configuration is ok.

어떠한 오류도 발견되지 않았다면 rules.ok 파일이 생성됩니다. 이 파일은 rules 파일과 동일합니다. 그러나 커멘트와 빈줄은 모두 제거 됩니다. check 스크립트는 다음과 같은 커멘트를 rules.ok 파일의 끝에 추가 시킵니다:

  # version=2 checksum=<num>

3. 설치와 설정 디렉토리 공유하기

a. dfstab 을 수정하여 점프스타트 디렉토리들을 공유 시킵니다.

b. /etc/dfs/dfstab 파일을 수정합니다:

  # vi /etc/dfs/dfstab

  #       Place share(1M) commands here for automatic execution
  #       on entering init state 3.
  #
  #       Issue the command 'svcadm enable network/nfs/server' to
  #       run the NFS daemon processes and the share commands, after
  #       adding the very first entry to this file.
  #
  #       share [-F fstype] [ -o options] [-d "<text>"] <pathname>
  #       [resource]
  #       for example,
  #       share  -F nfs  -o rw=engineering  -d "home dirs"  /export/home2

  share -F nfs -o ro,anon=0 /export/install
  share -F nfs -o ro,anon=0 /export/config
  share -F nfs -o ro,anon=0 /export/patches
  share -F nfs -o ro,anon=0 /export/packages

  :wq

c. NFS 서버를 시작시킵니다.

  # /etc/init.d/nfs.server start

d. 디렉토리들을 공유합니다.

  # shareall
  # share
  -               /export/install   ro,anon=0   ""
  -               /export/config   ro,anon=0   ""
  -               /export/patches   ro,anon=0   ""
  -               /export/packages   ro,anon=0   ""

e. 파일 공유를 확인합니다.

  # showmount -e localhost
  export list for localhost:
  /export/install  (everyone)
  /export/config   (everyone)
  /export/patches  (everyone)
  /export/packages (everyone)

4. 클라이언트 tftpboot 파일 생성하기

a. add_install_client 스크립트를 각 클라이언트 마다 실행시킵니다.

b. add_install_client 스크립트 저장 위치로 이동합니다:

  # cd /export/install/Solaris_10/Tools

c. add_install_client 스크립트를 점프스타트 설치를 진행할 네트워크 상의 각 클라이언트에서 실행합니다. -e 변수는 클라이언트의 MAC 어드레스이고 -p 변수는 클아이언트에 의해 이용될 sysidcfg 파일의 디렉토리 이름을 보여 줍니다. 아래에는 두 분리된 클라이언트 들에서 add_install_client 를 실행하는 것을 보여 줍니다:

  # ./add_install_client \
      -d \
      -e 00:0a:e4:37:16:4d \
      -s 172.16.64.194:/export/install \
      -c 172.16.64.194:/export/config \
      -p 172.16.64.194:/export/config/sysidcfg1 i86pc

  enabling tftp in /etc/inetd.conf
  Converting /etc/inetd.conf
  enabling network/tftp/udp6 service
  copying boot file to /tftpboot/pxegrub.I86PC.Solaris_10-1

  If not already configured, enable PXE boot by creating
  a macro named 01000AE429C1FD with:
    Boot server IP (BootSrvA) : 172.16.64.194
    Boot file      (BootFile) : 01000AE429C1FD

  # ./add_install_client \
      -d \
      -e 00:0a:e4:2a:33:f8 \
      -s 172.16.64.194:/export/install \
      -c 172.16.64.194:/export/config \
      -p 172.16.64.194:/export/config/sysidcfg2 i86pc

  enabling tftp in /etc/inetd.conf
  Converting /etc/inetd.conf
  enabling network/tftp/udp6 service
  copying boot file to /tftpboot/pxegrub.I86PC.Solaris_10-1

  If not already configured, enable PXE boot by creating
  a macro named 01000AE42A33F8 with:
    Boot server IP (BootSrvA) : 172.16.64.194
    Boot file      (BootFile) : 01000AE42A33F8

부트 서버 IP 와 부트 파일 값들은 후에 dhcpmgr 가 실행중인 동안에 매크로가 생성될때 사용됩니다.

5. DHCP 서버를 설정하고 실행시키기

a. dhcpmgr 를 실행시키기:

  # /usr/sadm/admin/bin/dhcpmgr
  Java Accessibility Bridge for GNOME loaded.

첫번째 스크린이 나타 남:
(확대 해서 보려면 이미지를 클릭하세요)

b. "Configure as a DHCP Server" 선택후 OK 를 클릭.

DHCP 설정 마법사가 나타납니다:

c. "Text Files" 선택 후 Next 클릭.

d. 저장 경로를 확인한 후 Next 클릭.

e. 네임서비스를 선택 한 후에 Next 를 클릭.

f. 임대 정보를 확인한 후에 Next 를 클릭.

g. DNS 도메인 정보를 확인 한 후 Next 를 클릭.

h. 네트워크 정보를 확인한 후 Next 를 클릭.

i. 네트워크 타입과 라우팅 옵션을 선택한 후 Next 를 클릭.

j. NIS 도메인 정보를 확인한 후에 Next 를 클릭.

k. NIS+ 도메인 정보를 확인한 후 Next 를 클릭.

l. 설정값을 다시 확인 한 후에 Finish 를 클릭.

DHCP 메니저가 나타나고 주소 마법사를 시작하도록 요구 받습니다:

m. Yes 를 클릭.

주소 마법사가 나타납니다:

n. IP 주소의 숫자를 입력한 후에 Next 를 클릭.

o. 서버 정보를 확인한 후에 Next 를 클릭.

p. IP 주소를 확인한 후에 Next 를 클릭.

q. 클라이언트 설정 정보를 확인한 후에 Next 를 클릭.

r. 임대(lease) 타입을 선택한 후 Next 를 클릭.

s. 설정을 확인한 후에 Finish 를 클릭.

dhcpmgr 아직 실행중인 상태에서 BootFileBootSrvA 매크로를 생성합니다. Create Macro 폼에 접근하기 위해 일단 DHCP Manager 폼에 Macros 탭을 선택합니다. 그 다음에 상단 메뉴에서 Edit->Create 을 선택합니다.

Create Macro 폼이 나타납니다:

t. 첫번째 클라이언트를 위해 add_install_client 를 실행함으로써 얻어 졌던 이름을 Name 필드에 적어 넣음으로써 매크로의 BootFile 부분을 생성함. 이 이름은 Option Value 필드에서 또한 사용 됩니다. 정보를 입력한 후에 Add 를 클릭함.

u. Opntion Value 필드에 점프스타트 서버의 네트워크 IP 주소를 적음으로써 매크로의 BootSrvA 부분을 생성함. 정보를 입력한 후에 Add 를 클릭함. 그리고나서 OK 를 클릭해서 첫번째 매크로의 생성을 완료함.

v. 두번째 매크로에 동일한 과정을 반복.

x. Add 를 클릭.

y. Add 를 클릭한 다음 OK 를 클릭함.

z. 두번째 매크로를 생성한 다음 DHCP 메니저 윈도우의 File->Exit 을 선택하여 dhcpmgr 유틸리티를 종료 시킴.

마지막 정리 작업

여러분이 add_install_client 스크립트를 실행시켰을때 스크립트는 a menu.lst<filename> 파일을 각 클라이언트 를 위해 생성하였습니다.

/tftpboot/menu.lst<BootFile: Name> 파일 생성의 버그로 인해, 여러분은 반드시 다음의 부분들을 kernel/unix 의 4번째 줄에 추가시켜야 합니다:

- install dhcp

그런후에 파일의 내용을 아래의 내용에서:

default=0
timeout=30
title Solaris_10 Jumpstart
    kernel /I86PC.Solaris_10-1/multiboot kernel/unix -B \
install_config=172.16.64.194:/export/config, \
sysid_config=172.16.64.194:/export/config/sysidcfg1, \
install_media=172.16.64.194:/export/install, \
install_boot=172.16.64.194:/export/install/boot
    module /I86PC.Solaris_10-1/x86.miniroot

아래의 내용으로 바꿉니다:

default=0
timeout=4
title Solaris_10 Jumpstart
    kernel /I86PC.Solaris_10-1/multiboot kernel/unix - install dhcp -B \
install_config=172.16.64.194:/export/config, \
sysid_config=172.16.64.194:/export/config/sysidcfg1, \
install_media=172.16.64.194:/export/install, \
install_boot=172.16.64.194:/export/install/boot
    module /I86PC.Solaris_10-1/x86.miniroot

간섭이 필요 없는 점프스타트 설치 수행하기

    클라이언트를 부팅시킵니다.

    프롬프트가 나타난 후에 F12 를 클라이언트의 키보드로 입력합니다.

    Network Boot Request....
    
    CLIENT MAC ADDR: 00 0A E4 2A 33 F8  GUID: 11223344 556 7788 99AA \
                                              BBCCDDEEFF00
    
    DHCP....\|/-\|/-
    

    만약 모든 셋팅이 정상적이라면 설치는 완료될 것입니다. 만약 문제가 발생한다면 인스톨러는 종료 되고 쉘로 떨어질 것입니다. 에러의 원인은 install_log 파일에 기록됩니다.


설치 후 작업

다음의 파일들이 점프스타트의 설치 로그파일들입니다.:

  /var/sadm/system/logs/install_log
                        begin_log
                        finish_log
                        sysidtool.log

저자에 관하여

Craig Winter 와 Dale Layfield 는 썬의 마켓 개발 엔지니이렁팀의 staff 엔지니어들 입니다.

반응형

'OS > SOLARIS' 카테고리의 다른 글

IPMP에 대하여  (0) 2007.07.19
SVM(솔라리스 볼륨메니져) - 미러링  (0) 2007.07.19
솔라리스 dvd 파일합치기  (0) 2006.11.01
솔라리스 백업관련  (0) 2006.10.09
시스템 디스크 교체 후 E3500 부팅 절차  (0) 2006.08.07
Posted by [PineTree]
OS/Shell Script2007. 3. 28. 19:00
반응형
1. /bin/sh

prog > /dev/null 2>&1             <-- ok
prog > /dev/null 2>/dev/null      <-- ok
prog >& /dev/null                 <-- ok


2. /bin/csh

prog > /dev/null 2>&1             <-- fail
Ambiguous output redirect.

prog > /dev/null 2>/dev/null      <-- fail
Ambiguous output redirect.

prog >& /dev/null                 <-- ok, recommend


3. FreeBSD /etc/crontab
SHELL=/bin/sh

prog >& /dev/null                 <-- fail, bad FD
prog &> /dev/null                 <-- not good, is bg
prog > /dev/null 2>&1             <-- ok


*참고) /bin/bash
prog &> /dev/null                 <-- not good
prog >& /dev/null                 <-- ok
반응형

'OS > Shell Script' 카테고리의 다른 글

쉘 반복 스크립트  (0) 2010.04.28
sed , awk 사용법  (0) 2009.04.15
Posted by [PineTree]
ORACLE/INSTALL2007. 3. 16. 19:23
반응형

oracle8i client를 XP에서는 설치되나


win2000/winxp/win2003에서 setup.exe를 실행해도 아무 것도 나타나지 않는 경우는
오라클 8i의 jre에 문제가 있기 때문.

 

오라클8i설치디렉토리\stage\Components\oracle.swd.jre\1.1.7.30\1\DataFiles\Expanded\jre\win32\bin\symcjit.dll


이 파일이 문제라는군요

오라클 9i에 들어있는 이 파일을 복사해서 사용하면 설치됨.

 

cpu가 pentium-4일 경우는 symcjit.dll 때문에 설치가 안됨.

오라클 9i에서 복사 또는 symcjit.dll을 삭제하시거나 이름을 바꿔서 설치해도됨.

반응형
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]
OS/LINUX2007. 3. 9. 19:03
반응형
Xmanager 접속을 위한 리눅스 설정하기 2006-11-14 10:01:48

Windows 등에서 리눅스 시스템으로 원격 접속이 가능한 프로그램 중 대표적인 것으로 Xmanager가 있다. 이 Xmanager는 Windows를 사용하다가 리눅스를 접하는 사용자라면 누구나 한번쯤은 사용해 보았을 법한 프로그램이기도 하다.

그러나 이 Xmanager를 사용하기 위해서는, 접속하고자 하는 리눅스 시스템에서 일부 설정을 수정해야 한다. 리눅스에서는 기본적으로 Xmanager와 같은 XDMCP 기능을 사용하는 프로그램의 접속을 막도록 설정이 되어 있기 때문인데, 리눅스의 X윈도우 환경이 Gnome 인지, KDE 인지에 따라서도 설정하는 부분이 약간씩은 다르다.

오늘은 이 Xmanager 접속을 허용하기 위한 설정법에 대해 Gnome과 KDE로 구분하여 알아보도록 하자.

 

 
Gnome에서의 설정

1. 리눅스 시스템의 런레벨(Run-Level)이 "5"인지 확인한다.

 

여기서 런레벨이라는 것은 부팅시 어떠한 모드로 부팅될 것인가를 말하는 것으로, 그래픽 모드는 "5"번, 텍스트 모드는 "3"번이다.

Xmanager는 GUI(그래픽 유저 인터페이스)를 지원하므로 접속하고자 하는 리눅스 시스템의 사용모드도 그래픽모드(Run-Level 5)로 되어 있어야 한다.

리눅스 설치시 대부분 그래픽 모드로 설치를 하므로 크게 문제될 부분은 아니지만, 서버로 사용하는 시스템에 있어 텍스트 모드로 설치하는 경우도 있으므로 이 부분에 대해 간단히 확인하고 넘어가도록 하자.

런레벨은 /etc/inittab 파일에서 쉽게 확인이 가능하다.

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

 

위에서 보듯이 "id" 뒷 부분의 값이 "3"인지 "5"인지에 따라 모드가 바뀌므로, 그래픽모드로 사용하고자 한다면 이 숫자를 "5"로 변경하자.

 

 

2. XDMCP 접속 허용 (custom.conf)

 

앞에서도 말했듯이 Xmanager는 XDMCP 방식을 사용하여 리눅스 시스템에 접속을 하게 된다. 그러므로 리눅스 시스템에서는 이 XDMCP 기능이 접속할 수 있도록 허용하는 설정을 해주어야 하는데, Gnome에서는 gdm (Gnome Display Manager)을 사용하므로 아래의 경로에 있는 gdm 설정파일에서 수정한다.

 

# vi /etc/gdm/custom.conf          # 한글과컴퓨터 리눅스 데스크톱 3.0 (오픈에디션 3.0)의 경우

# vi /etc/X11/gdm/custom.conf    # 한글과컴퓨터 리눅스 데스크톱 2.0 (오픈에디션 2.0)의 경우

 

※ 타 리눅스를 사용하는 경우, 설정 파일의 경로가 다를 수 있으므로 이럴땐 하단에 명시한 Xmanager 제작사에 가서 확인해 보도록 한다.

 

...

[security]

DisallowTCP=false

AllowRemoteRoot=true

 

[xdmcp]

Enable=1

...

 

custom.conf 파일의 [security] 섹션 아래에 DisallowTCP 값을 false로 선언하고, [xdmcp] 섹션 아래에 Enable 값을 1로 설정한다.

만약 root 관리자로의 원격 접속을 희망한다면, AllowRemoteRoot의 값을 true로 선언하는 것을 추가하면 된다.

 

 

3. X윈도우 재시작

 

위 와 같이 설정을 마쳤다면, X윈도우를 재시작해야 한다. 변경된 설정으로 X윈도우가 가동되어야 외부에서의 접속이 가능하므로 반드시 X윈도우를 재시작하기 바란다. 로그아웃만 해서는 안된다. init 3 명령과 init 5 명령으로 런레벨 자체를 변경하는 것이 좋다.

(또는 이런 과정들이 복잡하다 생각되면 그냥 재부팅을 해도 된다. ^^)

그리고 Windows에 설치된 Xmanager를 사용하여 접속을 시도해보자. 잘 되는가?

 

 

KDE에서의 설정

KDE 에서도 Gnome의 경우와 같이 XDMCP 관련 설정파일을 수정함으로써 해결할 수 있지만, Gnome 보다 수정해야할 항목이 조금 더 많다고 볼 수 있다. 그리고 한글과컴퓨터 리눅스의 기본 로그인 매니저가 gdm (Gnome Display Manager)으로 되어 있기 때문에, 이를 kdm (KDE Display Manager)으로 바꾸거나, 또는 Gnome과 KDE 양쪽에서의 XDMCP 수정을 모두 해주어야 하는 불편함이 있다.

일단 하나하나 알아보도록 하자.

 

1. 리눅스 시스템의 런레벨(Run-Level)이 "5"인지 확인한다.

이는 앞에서 본 내용과 동일하다. 런레벨 확인이 우선이겠다.

 

 

2. XDMCP 접속 허용 (1) (xdm-config)

KDE의 기본 로그인 매니저인 kdm (KDE Display Manager)의 설정파일은 아래에 있다.

# vi /etc/X11/xdm/xdm-config

 

...

!DisplayManager.requestPort:     0

설정파일의 제일 하단을 보면,

DisplayManager.requestPort:    0

이라고 설정되어 있는데 이 라인의 앞쪽에 느낌표(!)을 넣어 주석처리를 한다.

 

 

3. XDMCP 접속 허용 (2) (Xaccess)

다음으로 아래 경로에 있는 Xaccess 파일을 열어...

#* #any host can get a login window

위와 같이 되어있는 라인 앞쪽의 주석(#)을 해제한다.

 

# vi /etc/X11/xdm/Xaccess

 

...

* #any host can get a login window

...

 

 

4. XDMCP 접속 허용 (3) (kdmrc)

다음으로 kdmrc 파일을 열어 [Xdmcp] 섹션의 Enable 값을 true로 변경한다.
# vi /etc/X11/xdm/kdmrc

 

...

[Xdmcp]
Enable=true

...

 

 

5. 로그인 매니저 변경 (또는 gdm 설정)

이 것으로 설정파일들은 수정이 완료되었다. 하지만 앞에서 언급하였듯이 한글과컴퓨터 리눅스 데스크톱(또는 오픈에디션)은 기본 로그인 매니저가 gdm (Gnome Display Manager)로 되어 있으므로 아래의 2가지 방법중 한가지 방법을 더 처리해 주어야 한다.

 

① 앞서 다룬 gdm 설정도 같이 수행한다.

② 로그인 매니저를 gdm에서 kdm으로 변경한다. (변경 방법은 아래 Tip 참조)

 

 

6. X윈도우 재시작

 

위와 같이 설정을 마쳤다면, X윈도우를 재시작해야 한다. 변경된 설정으로 X윈도우가 가동되어야 외부에서의 접속이 가능하므로 반드시 X윈도우를 재시작하기 바란다.  로그아웃만 해서는 안된다. init 3 명령과 init 5 명령으로 런레벨 자체를 변경하는 것이 좋다.

(또는 이런 과정들이 복잡하다 생각되면 그냥 재부팅을 해도 된다. ^^)

그리고 Windows에 설치된 Xmanager를 사용하여 접속을 시도해보자. 잘 되는가?

 

Tip! Tip! Tip!

로그인 매니저 변경방법 (gdm --> kdm)

 

# vi /etc/sysconfig/desktop

 

DESKTOP="GNOME"                      # 기본 로그인 세션
DISPLAYMANAGER="KDE"           # 기본 로그인 매니저

 

/etc/sysconfig/desktop 파일을 열어서 ...

DISPLAYMANAGER의 값을 KDE로 수정한다. (해당 항목이 없다면 위의 예를 보고 직접 추가하자.)

 

※ 참고로, DESKTOP 항목은 기본으로 구동되는 세션을 말하는 것으로 ID와 패스워드를 넣었을때 어느 X윈도우로 로그인할 것인지를 설정하는 것이다.

 

※ 이상의 설명은 "한글과컴퓨터 리눅스 데스크톱" (또는 오픈에디션)을 기준으로 설명하였다. 다른 리눅스를 사용하거나 Xmanager 프로그램에 대한 좀 더 자세한 설명을 원한다면 Xmanager 홈페이지를 방문해보기 바란다.

http://www.netsarang.co.kr/

 

(위 URL에서 Xmanager의 30일 평가판 제품도 받아서 사용해 볼 수 있다.)

반응형

'OS > LINUX' 카테고리의 다른 글

LINUX RPM 관련 명령어  (0) 2007.07.03
C쉘 설정파일(.cshrc)  (0) 2007.04.12
crontab 명령  (0) 2007.02.15
LINUX usb 인식해서 사용하기  (0) 2007.02.10
호스트네임 변경  (0) 2006.10.11
Posted by [PineTree]