oracle--块信息深入解析
一,创建
Data Block是数据库中最小的I/O单元
01,建立一个新的表空间
查看默认表空间位置
select TABLESPACE_NAME,FILE_NAME from dba_data_files;
创建一个表空间放其他的地方把
create tablespace test2 datafile '/orcl/app/table/test2.dbf' size 20m reuse autoextend on next 20m maxsize UNLIMITED extent management local;
02,创建用户
查看CDB
select name,cdb from v$database;
查看pDb
SQL> select pdb_id,pdb_name,dbid,status,creation_scn from dba_pdbs; PDB_ID PDB_NAME DBID STATUS CREATION_SCN ---------- ----------------------------------------------------------------------------------- 3 ORCLPDB 3877422513 NORMAL 1442756 2 PDB$SEED 4118313826 NORMAL 1408751 4 HRPDB 1506437541 NORMAL 4081006 5 SALESPDB 1453096304 NORMAL 4087331
查看PDB状态
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs; CON_ID DBID NAME OPEN_MODE ---------- ---------- ----------------------------------------------------- 2 4118313826 PDB$SEED READ ONLY 3 3877422513 ORCLPDB READ WRITE 4 1506437541 HRPDB READ ONLY 5 1453096304 SALESPDB READ ONLY
创建使用者为test
SQL> create user c##test identified by test; User created.
切换PDB
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=ORCLPDB;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
ORCLPDB
创建表空间
SQL> create tablespace test2 datafile '/orcl/app/table/test2.dbf' size 20M;
Tablespace created.
创建真正的用户
SQL> create user test identified by test default tablespace test2; User created.
授予权限
SQL> grant dba to test
Grant succeeded.
03,建立数据
SQL> create table t1 (id int,name varchar2(100)); Table created. SQL> insert into t1 values(1,'A'); 1 row created. SQL> alter system checkpoint; System altered. SQL> col name for a10 SQL> select id,name,dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block# from t1; ID NAME FILE# BLOCK# ---------- ---------- ---------- ---------- 1 A 1 32641 SQL> select p.spid from v$session s,v$process p where s.paddr=p.addr and s.sid in (select userenv('sid') from dual); SPID ------------------------ 17124 SQL> alter system dump datafile 1 block 32641; System altered. SQL> select p.spid from v$session s,v$process p where s.paddr=p.addr and s.sid in (select userenv('sid') from dual); SPID ------------------------ 17124 SQL> select p.spid from v$session s,v$process p where s.paddr=p.addr and s.sid in (select userenv('sid') from dual); SPID ------------------------ 17124 SQL> select object_id from dba_objects where object_name='T1' and owner='SYS'; OBJECT_ID ---------- 75798
[oracle@node12c01 trace]$ more orcl_ora_20178.trc Trace file /orcl/app/oracle/diag/rdbms/node12c01/orcl/trace/orcl_ora_20178.trc Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Build label: RDBMS_12.2.0.1.0_LINUX.X64_170125 ORACLE_HOME: /orcl/app/oracle/product/12.1.0/db_1 System name: Linux Node name: node12c01 Release: 3.10.0-693.el7.x86_64 Version: #1 SMP Tue Aug 22 21:09:27 UTC 2017 Machine: x86_64 Instance name: orcl Redo thread mounted by this instance: 1 Oracle process number: 36 Unix process pid: 20178, image: oracle@node12c01 (TNS V1-V3) *** 2019-04-16T05:29:55.899559-04:00 (CDB$ROOT(1)) *** SESSION ID:(31.49582) 2019-04-16T05:29:55.899596-04:00 *** CLIENT ID:() 2019-04-16T05:29:55.899601-04:00 *** SERVICE NAME:(SYS$USERS) 2019-04-16T05:29:55.899605-04:00 *** MODULE NAME:(sqlplus@node12c01 (TNS V1-V3)) 2019-04-16T05:29:55.899610-04:00 *** ACTION NAME:() 2019-04-16T05:29:55.899614-04:00 *** CLIENT DRIVER:(SQL*PLUS) 2019-04-16T05:29:55.899617-04:00 *** CONTAINER ID:(1) 2019-04-16T05:29:55.899621-04:00 Start dump data blocks tsn: 0 file#:1 minblk 32641 maxblk 32641 Block dump from cache: Dump of buffer cache at level 4 for pdb=1 tsn=0 rdba=4226945 Block dump from disk: buffer tsn: 0 rdba: 0x00407f81 (1/32641) scn: 0x5d140 seq: 0x01 flg: 0x06 tail: 0xd1400601 frmt: 0x02 chkval: 0x6c32 type: 0x06=trans data Hex dump of block: st=0, typ_found=1 Dump of memory from 0x00007FBF65C6A000 to 0x00007FBF65C6C000
分析:
数据头: buffer tsn: 0 rdba: 0x00419578 (1/103800) scn: 0x4ea6cf seq: 0x02 flg: 0x04 tail: 0xa6cf1002 frmt: 0x02 chkval: 0x5692 type: 0x10=DATA SEGMENT HEADER - UNLIMITED flg:0x01 (新建块)0x2(数据块延迟清洗推进scn和seq) 0X04(设置校验和) 0x08(临时块) type:0x06(表/索引块) frmt: 0x01(v7) 0x02(v8) Hex dump of block: st=0, typ_found=1 Dump of memory from 0x00007F12ACAA4000 to 0x00007F12ACAA6000 7F12ACAA4000 0000A210 00419578 004EA6CF 04020000 [....x.A...N.....] 7F12ACAA4010 00005692 00000000 00000000 00000000 [.V..............] 7F12ACAA4020 00000000 00000001 00000007 00001020 [............ ...] 7F12ACAA4030 00000000 00000003 00000007 0041957C [............|.A.] 7F12ACAA4040 00000000 00000000 00000001 00000003 [................] 7F12ACAA4050 00000000 00000000 00000000 00000001 [................] 7F12ACAA4060 00000000 000125D4 40000000 00419579 [.....%.....@y.A.] 7F12ACAA4070 00000007 00000000 00000000 00000000 [................] 7F12ACAA4080 00000000 00000000 00000000 00000000 [................] Repeat 250 times 7F12ACAA5030 00000000 00010000 00010001 00000001 [................] 7F12ACAA5040 00000000 00000003 0041957B 0041957B [........{.A.{.A.] 7F12ACAA5050 00000000 00000000 00000000 00000000 [................] Repeat 249 times 7F12ACAA5FF0 00000000 00000000 00000000 A6CF1002 [................]
http://www.itpub.net/thread-1772905-1-1.html
人生就像一滴水,非要落下才后悔!
--kingle