728x90
# NON CRITICAL FILE 복구
l 파일의 종류 2가지
1. cretical file
- data file 들(system tablespace, undo tablespace)
- controlfile
- redo log file 중에서 상태가 current, active 인것
2. non crtical file
- data file 들 중에서 non system file들
- temp file
- redo log file 중에서 상태가 inactive, unused
● SYSTEM 테이블 스페이스
- Data Dictionary 정보, Stored Procedure의 정의 Package, Trigger 포함
- SYSTEM ROLLBACK SEGMENT 포함
- 사용자 데이터 포함 가능
● NON-SYSTEM 테이블 스페이스
- 보다 융통성 있게 데이터베이스를 관리
- Temporary segment , Application Data Segment, Index Segment, User Data Segment
- Rollback : 특별한 성격의 NON-SYSTEM 테이블스페이스이며 사용중인 Rollback Segment 가 있으면 off-line, 읽기전용으로 전환 할수 없으며, SYSTEM 테이블 스페이스 처럼 복구 되어야 한다. 다시 말하면 복구를 하기위해 전체 데이터 베이스를 off-line하여 복구해야한다.
- NON CRITICAL FILE 복구
l data file들 중에서 non system file(index file) 들이 깨졌을 때 복구
SQL> create tablespace ts100 datafile /home/oracle/ts100.dbf’ size 20m; SQL> connect scott/tiger SQL> create index emp_sal on emp(sal) tablespace ts100; SQL> select index_name, tablespace_name from user_indexes; SQL> startup - tablespace에 대해서 오류를 발생한다 SQL> alter database datafile 6 offlien drop; - 6번 파일을 controlfile에서 지워 버린다 - system tablespace 또는 undo tablespace는 안된다 SQL> alter database open; SQL> drop tablespace ts100 including contents and datafiles; |
l temp file의 역할
- 정렬작업을 수행하기 위한 임시 저장공간
SQL> select file_name from dba_temp_files; FILE_NAME ----------------------------------------------------------------------------------------------------------------------------------------- /u01/app/oracle/oradata/dbdb/temp01.dbf [dbdb:dbdb]$ cd /u01/app/oracle/oradata/dbdb/ [dbdb:dbdb]$ rm temp01.dbf [dbdb:dbdb]$ ls control01.ctl example01.dbf redo01.log redo03.log system01.dbf user06.dbf control03.ctl log.sql redo02.log sysaux01.dbf undotbs01.dbf users01.dbf [dbdb:dbdb]$ sqlplus sh/sh SQL> select * from sales 2 order by promo_id desc, prod_id desc; select * from sales ERROR at line 1: ORA-01116: error in opening database file 201 ORA-01110: data file 201: '/u01/app/oracle/oradata/dbdb/temp01.dbf' ORA-27041: unable to open file Linux Error: 2: No such file or directory Additional information: 3 - temp 파일 손실로 위와 같은 정렬작업이 불가능하다 |
l temp file이 꺠졌을때의 조치방법 2가지
1. DB를 restart 하면 temp file이 자동으로 생긴다
- 실제로는 DB를 원하는 때에 올렸다 내렸다 내렸다 할 수가 없다
2. temp tablespace에 새로운 temp file을 추가한다
SQL> ALTER TABLESPACE temp ADD TEMPFILE '/u01/app/oracle/oradata/dbdb/temp02.dbf' SIZE 20M; - tablespace temp 새로 생성 SQL> ALTER TABLESPACE temp DROP TEMPFILE '/u01/app/oracle/oradata/dbdb/temp01.dbf'; - 기존 tablespace temp drop 시킴 |
- 인덱스 재생성
- parallel : 병렬로 작업해서 인덱스 생성
- nologging : 인덱스 생성시 redo 정보 생성 안함
SQL> create index emp_sal on emp(sal) nologging parallel 4; SQL> select index_name, degree from user_indexes; INDEX_NAME DEGREE ------------------------------ ---------------------------------------- EMP_SAL 4 SQL> alter index emp_sal parallel 1; |
l parallel 을 1로 되돌리는 이유는
- 1 이상이면 이 인덱스를 사용해서 옵티마이저가 실행계획을 만들 때 실행계획이 올바르지 않을 수 있다. full table scan을 하는게 더 빠른데 무조건 인덱스 스캔으 ㄹ하려고 할 수 있기 때문에 1로 변경해야 한다.
- degree가 4라는 이야기는 4명의 프로세서가 도와준다는 의미이고 이러면 full table scan 이 더 빠를수가 있음에도 불구하고 무조건 index scan을 하려고 하기 때문에 성능이 저하될 수 있다.
- password file 복구
l password file이 삭제 됐을 때 복구 방법
1. password file : 특별한 권한을 가진 유저를 인증해주기 위한 파일. 특별한 권한은 DB중지와 작동을 할 수 있는 권한을 의미한다
2. 패스워드 파일에 등록된 유저를 확인
SQL> select * from v$pwfile_users;
SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP SYSAS ------------------------------ ----- ----- ----- SYS TRUE TRUE FALSE SQL> show parameter remote NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ remote_dependencies_mode string TIMESTAMP remote_listener string remote_login_passwordfile string EXCLUSIVE - exclusive라는 것은 반드시 password file이 존재해야 특별한 권한을 가진 유저를 인증해 줄 수 있다는 의미이다 remote_os_authent boolean FALSE remote_os_roles boolean FALSE result_cache_remote_expiration integer 0 |
3. password file의 위치는(orapwdbdb 파일)
$cd $ORACLE_HOME/dbs
$ls
[dbdb:dbdb]$ cd $ORACLE_HOME/dbs [dbdb:dbs]$ ls ed.hup hc_dbdb.dat lkDBDB peshm_DBUA0_0 snapcf_dbdb.f hc_DBUA0.dat init.ora orapwdbdb peshm_dbdb_0 spfiledbdb.ora [dbdb:dbs]$ rm orapwdbdb |
4. 복구
[dbdb:dbs]$ orapwd file=orapwdbdb password=oracle entries=5 [dbdb:dbs]$ ls -l orapwdbdb -rw-r----- 1 oracle oinstall 2048 Jul 21 16:02 orapwdbdb |
- orapwd : 패스워드 파일 생성하는 유틸리티
- password=oracle : 패스워드 파일에 등록될 유저들이 사용하 패스워드를 oracle로 한다
- entries = 5 : 패스워드 파일에 등록될 유저를 5명으로 제한하겠다
'빅데이터과정 > WORKSHOP 2 ' 카테고리의 다른 글
#27_140721_WSHOP2_완전/불완전 복구 (0) | 2014.07.22 |
---|---|
#27_140721_WSHOP2_CURRENT REDO LOG FILE 복구 (0) | 2014.07.22 |
#27_140721_WSHOP2_압축 백업 (0) | 2014.07.22 |
#27_140721_WSHOP2_아카이브 백업 관리 (0) | 2014.07.22 |
#27_140721_WSHOP2_INCREMENTAL BACKUP (0) | 2014.07.22 |