2023/12/08
- LISTNER( HOST,PORT,SID,PROTOCOL )
: remote(client)지역에서 정보를 가지고 server로 들어가는 길
- SQL DEVELOPER는 remote 이므로 listner가 필요하다.
- PUTTY는 서버로 직접 들어갔으니 listner가 필요가없다.
(로컬에서 들어간 느낌)
[oracle@oracle ~]$ lsnrctl status
[oracle@oracle ~]$ lsnrctl stop
TNS-12541: TNS:no listener
: 리스너가 내려갔다.
[oracle@oracle ~]$ lsnrctl start
[oracle@oracle ~]$ sqlplus / as sysdba
- Connected to an idle instance
: DB가 내려갔다- Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
: DB가 연결잘되어있다.
오라클이 사용하고 있는 프로세스 확인
SQL> ! ps -ef | grep oracle
인스턴스 상태정보 확인
SQL> select * from v$instance;
STATUS
-----
OPEN
SQL> ed
SQL> define
DEFINE _DATE = "07-DEC-23" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "ora11g" (CHAR)
DEFINE _USER = "SYS" (CHAR)
DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1102000400" (CHAR)
DEFINE _EDITOR = "vi" (CHAR)
DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR)
DEFINE _O_RELEASE = "1102000400" (CHAR)
DEFINE _RC = "0" (CHAR)
define_editor를 vi로 바꾸기
SQL> define_editor="vi"
전에 썻던거
SQL> /
select open from v$instance
*
ERROR at line 1:
ORA-00904: "OPEN": invalid identifier
시멘틱 에러 : server process 에러
STATUS
------------
OPEN
[oracle@oracle ~]$ cd $ORACLE_HOME/sqlplus/admin
[oracle@oracle admin]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/sqlplus/admin
[oracle@oracle admin]$ ls
glogin.sql help libsqlplus.def plustrce.sql pupbld.sql
[oracle@oracle admin]$ vi glogin.sql
[vi]
define_editor="vi"
[oracle@oracle admin]$ cd
[oracle@oracle ~]$ pwd
/home/oracle
- 오라클이 운영되고 종료될때 까지 중요한 내용들을 저장하고 있는 파일
- 오라클 서버에서 어떤 장애가 발생했거나 문제의 징후가 보일 경우 이 파일 내용을 자세히 분석해보면 해답을 찾을 수 있다.
- dba는 항상 틀어놔야한다.
alert log file 창
[oracle@oracle ~]$ cd $ORACLE_BASE/diag/rdbms/ -- 이부분은 똑같다. [oracle@oracle rdbms]$ ls -- 현장마다 SID가 다르다. ora11g [oracle@oracle rdbms]$ cd ora11g [oracle@oracle ora11g]$ ls i_1.mif ora11g [oracle@oracle ora11g]$ cd ora11g [oracle@oracle ora11g]$ pwd /u01/app/oracle/diag/rdbms/ora11g/ora11g [oracle@oracle ora11g]$ ls alert hm incpkg lck metadata_dgif stage trace cdump incident ir metadata metadata_pv [oracle@oracle ora11g]$ cd trace [oracle@oracle trace]$ vi alert_ora11g.log -- alert log 창 ---------------------------------------------- - SID값만 바꿔주면 된다. $ORACLE_BASE/oracle/diag/rdbms/SID/SID/trace /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace ----------------------------------------------
alert log 파일 위치 확인
SQL> SHOW PARAMETER USER_DUMP_DEST; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string /u01/app/oracle/diag/rdbms/ora 11g/ora11g/trace
alert log file 창
- tail -f : 실시간으로 보여준다.
[oracle@oracle trace]$ tail -f alert_ora11g.log
-- alert log 실시간으로 띄어준다. dba항상띄어논다.
SQL> shutdown immediate
Database closed.
Database dismounted. -- 디스크 종료
ORACLE instance shut down. -- 메모리 종료
SQL> startup
ORACLE instance started.
Total System Global Area 531476480 bytes
Fixed Size 1365796 bytes
Variable Size 209717468 bytes
Database Buffers 314572800 bytes
Redo Buffers 5820416 bytes
Database mounted.
Database opened.
1. nomount ?
: instance 시작 (sga 영역과 background process 생성)
- 초기 파라미터 파일 (initialization parameter file) OPEN
- spfile
<SID>
.ora , init<SID>
.ora
(server parameter file)- $ORACLE_HOME/dbs 안에 있다.
[oracle@oracle ~]$ cd $ORACLE_HOME/dbs
[oracle@oracle dbs]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/dbs
[oracle@oracle dbs]$ ls
hc_ora11g.dat init.ora lkORA11G orapwora11g spfileora11g.ora
2. 하는일
startup nomount 단계에서 제일 먼저 보는 파일이 spfile
<SID>
.ora를 찾는데 없으면 다음으로 init<SID>
.ora를 찾는다. 둘다 없으면 오류 발생
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
.4/db_1/dbs/spfileora11g.ora
3. nomount 단계에서 오라클 작업하는 일
alert
<SID>
.log ,trace file OPEN 하고 실행
- db 생성
- control 파일 재생성
- 백업, 복구
1. mount 단계에서 오라클 작업하는일
control file open 하고 실행
- 데이터 파일 이름 바꾸기
- noarchivelog mode 를 archivelog mode 바꾸는 작업
- full database recovery
- rman을 이용해서 close backup 할때
data file, redo log file open
SQL> startup nomount
ORACLE instance started.
Total System Global Area 531476480 bytes
Fixed Size 1365796 bytes
Variable Size 209717468 bytes
Database Buffers 314572800 bytes
Redo Buffers 5820416 bytes
SQL> select status from v$instance;
STATUS
------------
STARTED -- nomount까지 올라왔구나
SQL> alter database mount;
Database altered.
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database open;
Database altered.
SQL> select status from v$instance;
STATUS
------------
OPEN
- 순서
nomount -> mount -> open
그냥 startup 하면 : 기본값 open이다.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SQL> shutdown immediate -- 운영중에 못바꾸므로 shutdown 해줘야한다.
SQL> startup open read only
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY
SQL> select salary from hr.employees where employee_id=100;
SALARY
----------
24000
SQL> update hr.employees set salary = 1000 where employee_id=100;
update hr.employees set salary = 1000 where employee_id=100
*
ERROR at line 1:
ORA-16000: database open for read-only access
SQL> shutdown immediate
SQL> startup
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
shutdown (normal)
shutdown transactional
shutdown immediate
shutdown abort
주의!!
shutdown abort 수행한 후 데이터베이스 백업을 하지말자!!
alert log 창을 보고 어떤 모드로 종료되어있는지 볼수있다.