[0306 정리]
drop 한 테이블 확인 /recyclebin 테스트 + 파라미터 동적 변경
create table T1 (C1 number);
insert into T1 values (2);
insert into T1 values (40);
insert into T1 values (3);
drop table T1;
select *
from recyclebin
where original_name = '<Table_Name'> ;

show param recycle

alter system set USE_RECYCLEBIN=N;

재기동하면 동적변경되었던 파라미터 다시 원복된 것 확인 가능.
기존 테이블을 이용하는 테이블 생성 / CTAS
create user test1 identified by 'tibero';
grant resource, connect to test1;
conn user1/tibero
ls user (현 USER 확인!)
create table table1 (C1 number);
insert into table1 select level from dual connect by level < 40;
create table table2
as
select * from table1;
select count(*)
from table1;
select count(*)
from table2;
create table table3
as
select * from table1
where C1 = 1;
CTAS 활용과 주의사항
[MAXTRANS] TEST
1. 최대 몇개의 ITL 엔트리를 허용할지를 결정.
2. 가령 MAXTRANS의 값을 50으로 주면 최대 50개까지의 동시 트랜잭션을 허용
select distinct dbms_rowid.rowid_block_number(rowid) from test1.table1;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
64
SQL> select distinct dbms_rowid.rowid_block_number(rowid) from test1.table2;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
1690
select distinct dbms_rowid.rowid_block_number(rowid) from test1.table3;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
1722
신기행
FLASH TEST
show param undo
NAME TYPE VALUE
---------------------------- -------- ----------------------------------------
UNDO_RETENTION INT32 900(default)
UNDO_TABLESPACE STRING UNDO0
select count(*)
from table2;
COUNT(*)
----------
60
delete from table2; commit;
select count(*)
from table2;
COUNT(*)
----------
0
insert into table2
select * from table2
as of timestamp (systimestamp-interval '5' minute);
commit;
select count(*)
from table2;
COUNT(*)
----------
60
복구된 것 확인 가능
근데 이거 하다가 undo에 쌓이는 것이 너무 많으면 아래 에러가 생길 수 있다고 함.
TBR-21003: Snapshot is too old
snapshot is too old 에러란.. 일반적으로 쿼리 수행시간이 오래 걸려서 발생하는 undo 관련 에러...
무분별하게 undo retention 값을 늘릴 경우, undo segment 보관기간이 늘어나 재사용할 수 있는 segment 가 부족해지며
select ts_name as "TABLESPACE_NAME",
ROUND(total_size/1024/1024,2) as "TOTAL_SIZE(MB)",
ROUND((total_size - free_size) / 1024/1024 ,2)as "USED_SIZE(MB)",
ROUND(free_size/1024/1024,2) as "FREE_SIZE(MB)",
ROUND(( free_size / total_size) * 100,2) as "FREE_SIZE(%)"
from v$undo_free_space
/
extent 할당에 실패하면서 발생하는 에러..
auto extend 가 꺼져있거나, 파일의 최대 크기(32GB)에 도달했거나, disk 공간 부족..
select * from vt_usgmt_cache;
US_N TS_I IS_M STATUS UHDRDBA UHDRDBA_DFID UHDRDBA_BLKNO
---- ---- ---- ---------- ---------- ------------ -------------
0 0 0 0 7 0 7
1 1 1 0 4194311 1 7
2 1 1 0 4195335 1 1031
3 1 1 0 4196359 1 2055
4 1 1 0 4197383 1 3079
5 1 1 0 4198407 1 4103
6 1 1 0 4199431 1 5127
7 1 1 0 4200455 1 6151
8 1 1 0 4201479 1 7175
9 1 1 0 4202503 1 8199
10 1 1 0 4203527 1 9223
11 1 1 0 4204551 1 10247
SELECT * FROM vt_datafile_bm;
FILE# BLOCKS UNIT_SIZE MAX_SIZE AUTOEXTEND INCREMENT
---------- ---------- ---------- ---------- ---------- ----------
0 25600 16 131072 1 2048
1 131072 16 1310720 1 2048
2 12800 16 131072 1 2048
3 2560 16 1572864 1 1280
SELECT * FROM _dd_props
NAME VALUE COMMENT_STR
------------------------- ---------- ----------------------------------------
DFLT_PERM_TS USR Name of default permanent tablespace
DFLT_TEMP_TS TEMP Name of default temporary tablespace
DFLT_UNDO_TS0 UNDO0 Name of default undo tablespace
NLS_CHARACTERSET UTF8
NLS_NCHAR_CHARACTERSET UTF16
DB_NAME tibero1 database name