[SQLPLUS에서 출력 설정]
set pages 100 -> 한 페이지에 100행씩 출력하도록 함.
col 컬럼명 또는 alias명 format a10 -> 문자 컬럼에 대해서 10바이트로 출력되게 함.
col 컬럼명 또는 alias명 format 9999 -> 숫자 컬럼에 대해서 4자리로 출력되게 함.
[PDB]
1. PDB 접속
ss
alter session set container=orapdb;
show con_name
select name from v$datafile;
2. 새로운 tbs 생성
create tablespace ts_test1 datafile '/oracle19/app/oracle/oradata/ORA19DB/ts_test01.dbf' size 10m;
3. 테이블 생성
create table system.pdb_table1(no number) tablespace ts_test1;
insert into system.pdb_table1 values(10);
insert into system.pdb_table1 values(20);
insert into system.pdb_table1 values(30);
commit;
4. 기존 테이블스페이스 용량 증설
alter tablespace ts_test1 add datafile '/oracle19/app/oracle/oradata/ORA19DB/orapdb/ts_test02.dbf' size 10m;
alter database datafile '/oracle19/app/oracle/oradata/ORA19DB/orapdb/ts_test01.dbf' resize 20m;
alter database datafile '/oracle19/app/oracle/oradata/ORA19DB/orapdb/ts_test01.dbf' autoextend on;
5. 테이블스페이스 삭제
drop tablespace ts_test1 including contents and datafiles;
[CDB]
1. CDB 접속
ss
select name, open_mode from v$pdbs;
2. PDB shutdown
alter pluggable database ORAPDB2 close immediate;
3. PDB 삭제
drop pluggable database ORAPDB2 including datafiles;
[유저관리]
1. 공동 사용자
– CDB, PDB에서 같이 사용하는 사용자 (같은 패스워드)
– sys, system 사용자
– c##username 형태의 사용자
2. 로컬 사용자
– 각 PDB에서 사용하는 사용자
– PDB에서 생성 시 로컬 사용자가 됨
PDB유저 생성
1. PDB 접속
ss
alter session set container=orapdb;
select username from dba_users;
2. user 생성
create user scott identified by oracle;
grant create session to scott;
3. scott 유저로 접속
sqlplus scott/oracle@orapdb
CDB유저 생성
1. CDB 접속
select username from dba_users;
2. USER 생성
create user hr identified by oracle; -- 생성 불가
create user c##hr identified by oracle;
3. c##hr에 접속 권한 부여
-- CDB에만 권한 부여
grant create session to c##hr;
sqlplus c##hr/oracle -- 가능
sqlplus c##hr/oracle@orapdb -- 접속 불가
-- 전체에 권한 부여
grant create session to c##hr container=all;
sqlplus c##hr/oracle -- 가능
sqlplus c##hr/oracle@orapdb -- container=all로 권한줘서 접속 가능
[CDB 장애 복구]
PDB FILE은 정상, CDB의 물리전 손상으로 인해 CDB, PDB 접속 불가
0. 전체 백업 진행
rman target /
backup database;
1. 로그스위치 5번
alter system switch logfile;
2. 테이블 생성
create table recover_test500(no number);
insert into recover_test500 values(500);
commit;
select * from system.recover_test500;
3. 장애 발생
select 'rm '||file_name from dba_data_files;
-----------------------------------------------
rm /oracle19/app/oracle/oradata/ORA19DB/system01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/sysaux01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/undotbs01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/users01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/ts_test01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/ts_test02.dbf
----------------------------------------------
shutdown abort
4. 복구
1.
startup nomount
2. controlfile restore
restore controlfile from '/oracle19/backup/ora19db/c-73391101-20250123-05';
alter database mount;
3. restore
restore database; -- 이건 CDB, PDB 전체를 restore하는 거라 오래 걸림
-- 아래처럼 하면 장애난 CDB의 datafile만 restore. 그러기 위해서 filenumber 조회
SQL> col name format a50
SQL> select file#, name from v$datafile;
RMAN> restore datafile 1,3,4,7,13,14;
4. recover
recover database;
5. open
alter database open resetlogs;
5. 조회
select * from system.recover_test500;
6. PDB open
CDB 복구를 하면 PDB가 꺼져 있는 상태다
select name, open_mode from v$pdbs;
alter pluggable database ORAPDB open;
[PDB 장애]
PDB file들
1. 백업 진행
RMAN> backup database;
2. 로그 스위치 – CDB에서
alter system switch logfile;
3. PDB 접속
sqlplus system/oracle@orapdb
4. 테이블 생성
create table recover_test600(no number);
insert into recover_test600 values(600);
commit;
5. 장애 발생
select 'rm '||file_name from dba_data_files; -- PDB로 넘어왔기 때문에 PDB에 대한 datafile이 조회됨.
---------------------------------------------------------
rm /oracle19/app/oracle/oradata/ORA19DB/orapdb/system01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/orapdb/sysaux01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/orapdb/undotbs01.dbf
rm /oracle19/app/oracle/oradata/ORA19DB/orapdb/users01.dbf
---------------------------------------------------------
-- shutdown인데 PDB라서 아래처럼 CDB에서
alter pluggable database ORAPDB close immediate;
6. open 시도 (CDB에서)
alter pluggable database ORAPDB open; -- 실패
select name, open_mode from v$pdbs; -- instance와 controlfile을 공유하기 때문에 PDB는 mount단계 아래로는 내려가지 않는다.
7. 복구
1. restore
RMAN> restore pluggable database ORAPDB;
-- 이렇게 치면 알아서 9,10,11,12번 파일 restore함.
-- 아래처럼 해도 될거임 아마도...?(내 생각)
select file#, name from v$datafile;
-- 9,10,11,12
restore datafile 9,10,11,12;
2. recover
recover pluggable database ORAPDB;
8. open
RMAN> alter pluggable database ORAPDB open;
9. 조회
select * from system.recover_test600; -- PDB에 접속해서 확인해야됨. RMAN에선 확인 안되더라