[oracle] 오라클 서버 관리 - create database SQL 명령으로 데이터베이스 생성
오라클 서버 관리 - DBCA 방식이 아닌 수동으로 create database SQL 명령으로 데이터베이스 생성
Create Database SQL Statement
06_DBCA 방식이 아닌 수동으로 create database SQL 명령으로 데이터베이스 생성
- https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11073
0.디렉토리 및 파라미터 파일 생성
[orcl:~]$ vi + $ORACLE_HOME/sqlplus/admin/glogin.sql
vi 편집기 실행
define _editor=vi <-- 마지막줄에 추가하기
vi 편집기 종료
[orcl:~]$ vi /etc/oratab
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
prod:/u01/app/oracle/product/11.2.0/dbhome_1:N
[orcl:~]$ rm -rf $ORACLE_BASE/oradata/prod <-prod 폴더 삭제
[orcl:~]$ mkdir -p $ORACLE_BASE/oradata/prod <-prod 디렉도리 생성
[orcl:~]$ ls -lR $ORACLE_BASE/oradata
/u01/app/oracle/oradata:
total 8
drwxr-x--- 2 oracle oinstall 4096 Apr 8 11:13 orcl
drwxr-xr-x 2 oracle oinstall 4096 Apr 8 13:09 prod
/u01/app/oracle/oradata/orcl:
total 1713480
-rw-r----- 1 oracle oinstall 9748480 Apr 8 13:13 control01.ctl
-rw-r----- 1 oracle oinstall 9748480 Apr 8 13:13 control02.ctl
-rw-r----- 1 oracle oinstall 104865792 Apr 8 12:05 example01.dbf
-rw-r----- 1 oracle oinstall 104865792 Apr 8 12:05 myts.dbf
-rw-r----- 1 oracle oinstall 52429312 Apr 8 12:00 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Apr 8 13:13 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Apr 8 10:29 redo03.log
-rw-r----- 1 oracle oinstall 534781952 Apr 8 13:13 sysaux01.dbf
-rw-r----- 1 oracle oinstall 713039872 Apr 8 13:10 system01.dbf
-rw-r----- 1 oracle oinstall 30416896 Apr 8 10:26 temp01.dbf
-rw-r----- 1 oracle oinstall 110108672 Apr 8 13:13 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Apr 8 12:05 users01.dbf
/u01/app/oracle/oradata/prod:
total 0
[orcl:~]$ export ORACLE_SID=prod <-내가 작업할 데이터베이스를 prod로 변경
[prod:~]$ vi $ORACLE_HOME/dbs/initprod.ora <-prod란 이름의 정해진 경로에 정해진 이름으로 파일 생성. 이를 파라미터 파일 생성이라고 한다.
vi 편집기 실행
db_name = prod
instance_name = prod
compatible = 11.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/prod/control01.ctl',
'$ORACLE_BASE/oradata/prod/control02.ctl')
remote_login_passwordfile = exclusive
vi 편집기 종료
1.Software 시작
[prod:~]$ sqlplus / as sysdba
SQL> startup nomount
ORACLE instance started.
Total System Global Area 175775744 bytes
Fixed Size 1335248 bytes
Variable Size 100663344 bytes
Database Buffers 67108864 bytes
Redo Buffers 6668288 bytes
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
-------------------------------- ------------------------
prod STARTED
SQL> !ps -ef|grep smon
oracle 10484 1 0 18:17 ? 00:00:00 asm_smon_+ASM
oracle 4556 1 0 15:53 ? 00:00:00 ora_smon_prod
oracle 8148 1 0 14:52 ? 00:00:01 ora_smon_orcl
2.Create database 명령 실행
SQL> create database prod --시간 소요 됨
logfile group 1 ('$ORACLE_BASE/oradata/prod/redo01_a.log',
'$ORACLE_BASE/oradata/prod/redo01_b.log') size 20m,
group 2 ('$ORACLE_BASE/oradata/prod/redo02_a.log',
'$ORACLE_BASE/oradata/prod/redo02_b.log') size 20m
datafile '$ORACLE_BASE/oradata/prod/system01.dbf' size 200m autoextend on next 20m maxsize unlimited
sysaux datafile '$ORACLE_BASE/oradata/prod/sysaux01.dbf' size 200m autoextend on next 20m maxsize unlimited
undo tablespace undotbs01 datafile '$ORACLE_BASE/oradata/prod/undotbs01.dbf' size 100m autoextend on next 20m maxsize 2G
default temporary tablespace temp tempfile '$ORACLE_BASE/oradata/prod/temp01.tmp' size 20m autoextend on next 20m maxsize 2G;
Database created.
SQL> !ls -l $ORACLE_BASE/oradata/prod
SQL> select instance_name, status from v$instance; --인스턴스 상태 확인
INSTANCE_NAME STATUS
-------------------------------- ------------------------
prod OPEN
3.필수 Script 수행
SQL> alter user sys identified by oracle; -- 기본 암호 : change_on_install -> 새로운 패스워드
User altered.
SQL> alter user system identified by oracle; -- 기본 암호 : manager -> 새로운 패스워드
SQL> ed after_db_create.sql --반드시 돌려야하는 스크립트 생성
vi 편집기 실행
conn sys/oracle as sysdba
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
conn system/oracle
@?/sqlplus/admin/pupbld.sql
vi 편집기 종료
SQL> @ after_db_create.sql --시간이 다소 소요 됨
데이터베이스 생성하는 단계로 엄청난 명령어가 실행된다.
중간중간에 가끔 에러?같은거는 drop이 실행됐는데 drop할게 없어서 뜨는 명령어니 무시해도 된다.
SQL> -- End of pupbld.sql --이게 뜨면 데이터베이스 생성 완료
DB 생성 완료!!!!! 축하합니다.
SQL> exit
Test
[prod:~]$ ps -ef|grep smon
oracle 24145 1 0 18:06 ? 00:00:00 ora_smon_prod <-수동으로 만든거
oracle 22122 1 0 17:52 ? 00:00:00 ora_smon_orcl <-DBCA 만든거
[prod:~]$ export ORACLE_SID=orcl
[prod:~]$ sqlplus / as sysdba
SQL> startup force
ORACLE instance started.
Total System Global Area 1489829888 bytes
Fixed Size 1336624 bytes
Variable Size 872418000 bytes
Database Buffers 603979776 bytes
Redo Buffers 12095488 bytes
Database mounted.
Database opened.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl
SQL> exit
[ocrl:~]$ export ORACLE_SID=prod --sql을 나갔다가 실행하면 초기값을 ocrl로 줬기 때문에 prod로 바꿔줘야한다.
[prod:~]$ sqlplus / as sysdba
SQL> startup force
ORACLE instance started.
Total System Global Area 175775744 bytes
Fixed Size 1335248 bytes
Variable Size 100663344 bytes
Database Buffers 67108864 bytes
Redo Buffers 6668288 bytes
Database mounted.
Database opened.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
prod
SQL> exit
[prod:~]$ vi /etc/oratab --DBCA에서 DB삭제시 수동으로 만든 prod도 뜰 수 있게하는 작업
vi 편집기 실행
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N --기존에 만들어져 있음
prod:/u01/app/oracle/product/11.2.0/dbhome_1:N --추가하기
vi 편집기 종료
[prod:~]$ export ORACLE_SID=prod --prod로 접속
[prod:~]$ sqlplus / as sysdba --sqlplus 접속
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/system01.dbf
/u01/app/oracle/oradata/prod/sysaux01.dbf
/u01/app/oracle/oradata/prod/undotbs01.dbf
SQL> --prod 데이터베이스에 새로운 user 생성
create tablespace users01
datafile '/u01/app/oracle/oradata/prod/users01.dbf' size 10m;
Tablespace created.
create tablespace users02
datafile '/u01/app/oracle/oradata/prod/users02.dbf' size 10m;
Tablespace created.
SQL> create user itzy
identified by jyp
default tablespace users01
temporary tablespace temp
quota 1m on users01
quota 1m on users02;
User created.
SQL> grant connect, resource
to itzy;
Grant succeeded.
SQL> exit
심심풀이
* 시스템 날짜 확인
SQL> select sysdate from dual;
SYSDATE
---------
08-APR-19
* 내 생일을 기준으로 산 날 카운트
SQL> select sysdate - to_date('09-DEC-86') from dual;
SYSDATE-TO_DATE('09-DEC-86')
----------------------------
11808.459
*
SQL> select (sysdate - to_date('09-DEC-86'))/7 from dual;
(SYSDATE-TO_DATE('09-DEC-86'))/7
--------------------------------
1686.92305
*
SQL> select months_between(sysdate , to_date('09-DEC-86')) from dual;
MONTHS_BETWEEN(SYSDATE,TO_DATE('09-DEC-86'))
--------------------------------------------
387.982642
References
개발자님들 덕분에 많이 배울 수 있었습니다. 감사의 말씀 드립니다.