Oracle/Admin2009. 11. 24. 00:21
Database 생성 방식의 종류에는 두가지가 있다.
1. DBCA이용(오라클 교재 참고할 것 3장 초반, dbca실행은 os커맨드창에서 dbca를 실행시키면 됨)
2. 수동으로 생성

여기에서는 수동으로 linux에 Database를 생성하는 방법을 알아보도록 하겠다.
(OS: linux, oracle ver.: 10gr2
 Windows는 첨부파일을 참고할 것)

1. 디렉토리 생성한다. 
   (붉은색으로 되어 있는 부분은 생성하고 싶은 database명과 instance명이다.
    자신이 원하는 이름으로 해주면 되겠다. 
    참고로 보통 database명과 instance명은 같은 이름으로 해준다.)

OS] mkdir $ORACLE_BASE/oradata/jgh_db


2. parameter 파일 생성한다. (참고로 parameter파일은 instance의 구성과 관계가 있다.)

OS] export ORACLE_SID=jgh_db
OS] vi $ORACLE_HOME/dbs/initjgh_db.ora

아래는 파일에 들어갈 내용이다.

db_name       = jgh_db
instance_name = jgh_db
compatible    = 10.2.0
processes     = 100

undo_management = auto
undo_tablespace = undotbs01

db_cache_size    = 64m
shared_pool_size = 72m
db_block_size    = 4096

control_files = ('$ORACLE_BASE/oradata/jgh_db/control01.ctl',
                     '$ORACLE_BASE/oradata/jgh_db/control02.ctl')

remote_login_passwordfile = exclusive


3. nomount상태로 시작한다.

OS] sqlplus / as sysdba
SQL> startup nomount


4. database를 생성한다.
  - 실제 Database 를 생성하는 단계이며, Control File / Redo Log File / Data File 이 생성된다
  - 생성 후 OPEN 상태로 변경되어 $ORACLE_HOME/rdbms/admin/sql.bsg 를 자동 실행한다
  - $ORACLE_HOME/rdbms/admin/sql.bsg 의 실행을 통해 TAB$,COL$ 등의 Internal Table을 생성한다

create database jgh_db
logfile group 1 ('$ORACLE_BASE/oradata/jgh_db/redo01_a.log',
                      '$ORACLE_BASE/oradata/jgh_db/redo01_b.log') size 20m,
         group 2 ('$ORACLE_BASE/oradata/jgh_db/redo02_a.log',
                      '$ORACLE_BASE/oradata/jgh_db/redo02_b.log') size 20m
datafile '$ORACLE_BASE/oradata/jgh_db/system01.dbf' size 200m autoextend on next 20m maxsize unlimited
sysaux datafile '$ORACLE_BASE/oradata/jgh_db/sysaux01.dbf' size 200m autoextend on next 20m maxsize unlimited
undo tablespace undotbs01 datafile '$ORACLE_BASE/oradata/jgh_db/undotbs01.dbf' size 100m autoextend on next 20m maxsize 2G
default temporary tablespace temp tempfile '$ORACLE_BASE/oradata/jgh_db/temp01.tmp' size 20m autoextend on next 20m maxsize 2G;


5. sys, system 유저의 패스워드를 변경한다.
   
SQL> alter user sys identified by oracle;
SQL> alter user system identified by oracle;


6. data dictionary, pl/sql, product user profile 테이블 및 관련 프로시져 생성을 위한 작업을 해준다.

SQL> ed after_db_create.sql

아래는 파일에 들어갈 내용이다.

conn sys/oracle as sysdba
@?/rdbms/admin/catalog.sql            -- data dictionary 생성
@?/rdbms/admin/catproc.sql            -- pl/sql 환경 구성

conn system/oracle
@?/sqlplus/admin/pupbld.sql            -- product user profile테이블 및 관련 프로시져 생성

파일을 실행한다. 여기에서 20분가량의 시간이 걸린다.

SQL> @ after_db_create.sql

SQL> exit


이걸로 database 생성은 잘 끝났다. 잘 생성되었는지 테스트해보자.


OS] export ORACLE_SID=jgh_db
OS] sqlplus / as sysdba
SQL> select instance_name from v$instance;
SQL> shutdown abort
SQL> startup




다음은 네트워크 설정이다.
원격지에서 제어하기 위해서 필요한 설정이다.

1. 리스너를 정지한다.

OS] lsnrctl stop


2. listener.ora 파일을 편집한다.

OS] vi $ORACLE_HOME/network/admin/listener.ora

아래의 붉은 부분을 추가해준다.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /home/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = /home/oracle/product/10.2.0/db_1)
      (GLOBAL_DBNAME = orcl)
    )

    (SID_DESC =
      (SID_NAME = jgh_db)
      (ORACLE_HOME = /home/oracle/product/10.2.0/db_1)
      (GLOBAL_DBNAME = jgh_db)
    )

  )


3. 리스너를 시작한다.

OS] lsnrctl start


4. tnsnames.ora파일을 편집한다.(isqlplus에 접속할 수 있도록 설정)

OS] vi $ORACLE_HOME/network/admin/tnsnames.ora

붉은 부분을 추가해준다.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
jgh_db =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = jgh_db)
    )
  )



5. 패스워드 파일을 생성한다.

OS] ls $ORACLE_HOME/dbs
OS] orapwd file=$ORACLE_HOME/dbs/orapwjgh_db password=oracle entries=5


여기까지해서 네트워크 세팅이 완료되었다.
잘 되었는지 테스트해보자.

OS] tnsping orcl
OS] tnsping jgh_db


여기까지 수동으로 DB를 생성하고, 네트워크 세팅하는 것을 알아보았다.


참고 : http://cafe.naver.com/gseducation/87
         http://www.urbantree.wo.tc/entry/3
         http://blog.naver.com/enter128
Posted by 자수성가한 부자