3.4 命令
3.4.1[ALTER SESSION]SET init.dul parameter = value;
用途:用于修改会话级的运行参数,[]内的为可选项。
举例:
//修改dc_users参数到50
DUL> alter session set dc_users=50;
Parameter altered
用scan database命令生成的extent map做unload操作用
//以scan database生成的数做后续操作基础
DUL> set use_scanned_extent_map=true;
Parameter altered
DUL>
3.4.2 BOOTSTRAP [LOCATE|GENERATE|COMPLETE];
用途:如果系统表空间的数据文件是完好的,这是dul操作的第一步,使用这个命令生成数据字典的信息,供下面unload等操作使用。三个选项作用如下:
LOCATE :根据bootstrap$这张表把数据字典先unload本地,再导入到缓冲区之中。
GENERATE :根据缓冲区的信息生成一个建立数据字典的ddl语句文件,文件名为dict.ddl。
COMPLETE :这个选项是默认值,等同于LOCATE+ GENERATE,实际操作中也基本上不会单独使用LOCATE及GENERATE选项,用的都为默认值。
3.4.3 COMMIT;
用途:用于将update变更的数据块写回到数据文件。
3.4.4 DESCRIBE owner_name.table_name;
用途:用于显示表的列信息及
存储相关信息。
举例:
DUL> describe hr.employees;
Table obj#= 6302, dataobj#= 6302, ts#= 3, file#= 3, block#=83
tab#= 0, realcols= 11, clucols= 0 max_col_no 11
Column information:
col# 00: type#= 2, length= 22, "EMPLOYEE_ID"
col# 01: type#= 1, length= 20, "FIRST_NAME"
col# 02: type#= 1, length= 25, "LAST_NAME"
col# 03: type#= 1, length= 25, "EMAIL"
col# 04: type#= 1, length= 20, "PHONE_NUMBER"
col# 05: type#=12, length= 7, "HIRE_DATE"
col# 06: type#= 1, length= 10, "JOB_ID"
col# 07: type#= 2, length= 22, "SALARY"
col# 08: type#= 2, length= 22, "COMMISSION_PCT"
col# 09: type#= 2, length= 22, "MANAGER_ID"
col# 10: type#= 2, length= 22, "DEPARTMENT_ID"
DUL>
3.4.5 DUMP [ TABLESPACE tablespace_no ]
[ FILE file_no ]
[ BLOCK block_no]
[ LEVEL level_no] ;
用途:用于转储数据块的信息,不是完整的块信息的转储,这个命令的主要用于debug。
举例:
DUL> dump file 1 block 200 level 1;
Block dump
Dump of KCBH (Kernel Cache layer Block Header, version 2)
(ty=K_BT of= 0 sz= 1) TYPE (block type) = 0(NONE)
(ty=UB1 of= 1 sz= 1) FRMT (format type) = 2
(ty=UB1 of= 2 sz= 1) SPARE1(Unused) = 0
(ty=UB1 of= 3 sz= 1) SPARE2(Unused) = 0
(ty=KDBA of= 4 sz= 4) RDBA (Relative Disk Block Address)= fno=0, bno=200
(ty=UB4 of= 8 sz= 4) BAS (scn BASe) = 0
(ty=UB2 of= 12 sz= 2) WRP (scn WRaP) = 0
(ty=UB1 of= 14 sz= 1) SEQ (SEQuence) = 1
(ty=UB1 of= 15 sz= 1) FLG (FLaG) = 5
(ty=UB2 of= 16 sz= 2) CHKVAL(optional checksum) = 462
(ty=UB2 of= 18 sz= 2) SPARE3(unused) = 0
DUL>
3.4.6 REM any_text_you_like_till_End_Of_Line :
用途:Dul运行脚本的注释用。
举例:
REM this is a test script
REM used to change running parameter
alter session set export_mode = false;
alter session set ldr_phys_rec_size = 0;
alter session set ldr_enclose_char = """" ;
3.4.7 ROLLBACK;
用途:相对于commit命令,用于取消update操作。
3.4.8 SHOW
用途:用于显示如下一些选项的信息。
DBA dba ; # 根据数据块地址计算出文件号和块号
| DBA rfile_no block_no ; # 根所文件号和块号计算出数据块地址
| SIZES ; # 查看一些重要结构的大小
| PARAMETER; # 显示运行的参数
| LOBINFO; # 显示scan database找到的lob索引
举例:
//查看文件3,块号100的数据块地址
DUL> show dba 3 100;
dba: 12583012 (0x00c00064) = file 3 (0x0003), block 100 (0x00000064)
//查看块地址0x00c00064的文件号和块号
DUL> show dba 0x00c00064;
dba: 12583012 (0x00c00064) = file 3 (0x0003), block 100 (0x00000064)
//查看lob索引信息
DUL> show lobinfo;
lob segment data id 322
lob segment data id 461
DUL>
3.4.9 UNLOAD DATABASE;
用途:转载整个数据库。
3.4.10 UNLOAD USER user_name;
用途:转载一个用户。
3.4.11 UNLOAD TABLE [ schema_name . ] table_name //用户名.表名
[ ( column_definitions ) ] //列定义
[ cluster_clause ] //cluster子句
[ storage_clause ] ; //存储子句
用途:转载一张表。
举例:
//例1
DUL> unload table hr.employees;
. unloading table EMPLOYEES 107 rows unloaded
//例2
UNLOAD TABLE qiuyb ( C1 NUMBER, C2 NUMBER, C3 NUMBER )
STORAGE ( TABNO 0 EXTENTS( FILE 6 BLOCK 2)); #下面有更详细的例子
3.4.12 UNLOAD EXTENT table_name
[ ( column_definitions ) ] #更定义
[ TABLESPACE tablespace_no ] #表空间号
FILE extent_start_file_number #起始文件号
BLOCK extent_start_block_number #起始块号
BLOCKS extent_size_in oracle_blocks #extent包含多少个块
用途:用于转储一个或多个相邻的block,这个命令必须与存储选项一起使用,存储选项是指(FILE fno BLOCK bno BLOCKS #blocks)
举例:
DUL> unload extent employees storage (file 3 block 83 blocks 5);
. unloading table EMPLOYEES
DUL: Warning: Recreating file "EMPLOYEES.ctl"
107 rows unloaded
3.4.13 UPDATE [ block_address ] SET UB1|UB2|UB4 @ offset_in_block = new_value ;
用途:用于简单的修补一下数据块,Update后,需要Commit掉才能生效。
3.4.14 storage_clause ::=
STORAGE ( storage_specification [ more_storage_specs ] )
用途:这是命令中的存储选项格式。
3.4.15 storage_specification ::=
OBJNO object_id_number #对象号
| TABNO cluster_table_number #cluster表号
| SEGOBJNO cluster/data_object_number #/Oracle v7/v8 类型的数据块id
| FILE data_segment_header_file_number #/Oracle v6 类型的数据块id
BLOCK data_segment_header_block_number )
| any_normal_storage_specification_but_silently_ignored
3.4.16 SCAN DATABASE;
用途:当system表空间的数据文件丢失时,这个命令取代bootstrap是dul操作的第一步,这个命令扫描所有数据文件中的数据块,并生成了如下两个文件:
○1:seg.dat 扫描到的段(segment)的段头信息 (index/cluster/table):
○2:ext.dat 扫描到的相邻的table/cluster的数据块信息。
3.4.17 SCAN TABLES;
用途:以SCAN DATABASE生成的两个文件seg.dat and ext.dat做为输入,扫描所有数据段中的所有的表。
3.4.18 SCAN EXTENTS;
用途:以SCAN DATABASE生成的两个文件seg.dat and ext.dat做为输入,扫描所有的extent。当表空间不完整或一个段的段发生了损坏时这个命令是很有用的。
3.4.19 EXIT|QUIT;
退出dul程序。