分类: Oracle
2007-03-28 07:31:52
■如何查看数据库的各种数据文件?
SQL> set pages 100
SQL> col file_name form a60
SQL> col name form a60
SQL> col member form a50
SQL> col m0 form 99999 heading "Size (Mb)"
SQL>
SQL> spool datafile.lst
1)、查看数据文件
SQL> select file_name,bytes/(1024*1024) m0 from dba_data_files;
2)、查看控制文件
SQL> select NAME,status from v$controlfile;
3)、查看日志文件
SQL> select group#,member,status from v$logfile;
■如何查看各个表空间的自由空间?
SQL> desc dba_free_space
SQL> select tablespace_name,sum(bytes)/1024/1024 free_Mbytes
from dba_free_space
group by tablespace_name
order by free_Mbytes;
■如何查看数据文件所在的路径?
SQL> select tablespace_name,file_id,bytes/1024/1024,file_name
from dba_data_files order by file_id;
■如何查看数据文件是否自动扩展?
SQL> col FILE_NAME format a40
SQL> col TABLESPACE_NAME format a20
SQL> select file_id,file_name,tablespace_name,autoextensible from dba_data_files order by file_id;
■如何查看各个表空间占用磁盘情况?
SQL> col tablespace format a20
SQL> select
b.file_id "file_ID",
b.tablespace_name "tablespace_name",
b.bytes "byte_num",
(b.bytes-sum(nvl(a.bytes,0))) "used",
sum(nvl(a.bytes,0)) "remaining_space",
sum(nvl(a.bytes,0))/(b.bytes)*100 "percent"
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id;
============================
第7章 PL/SQL语言基础
■查看哪些session正在使用哪些回滚段?
测试方法: 打开多个SQL*Plus窗口,一些做一些需要回滚的操作,如insert,delete等,一个执行以下的语句来监视。
col "回滚段名" format a10
col SID format 9990
col "用户名" format a10
col "操作程序" format a80
col status format a6 trunc
SELECT r.name "回滚段名",
s.sid,
s.serial#,
s.username "用户名",
t.status,
t.cr_get,
t.phy_io,
t.used_ublk,
t.noundo,
substr(s.program, 1, 78) "操作程序"
FROM sys.v_$session s,sys.v_$transaction t,sys.v_$rollname r
WHERE t.addr = s.taddr and t.xidusn = r.usn
ORDER BY t.cr_get,t.phy_io
/
■查询数据库中有效的字符集
SQL> col nls_charset_id for 9999
SQL> col nls_charset_name for a30
SQL> col hex_id for a20
SQL> select
nls_charset_id(value) nls_charset_id,
value nls_charset_name,
to_char(nls_charset_id(value),'xxxx') hex_id
from v$nls_valid_values
where parameter = 'CHARACTERSET'
order by nls_charset_id(value);
■查看oracle实例
SQL> select instance_name from v$instance;
■修改块跟踪文件
SQL> alter database enable block change tracking
2 using file
3 '/export/home/opt/product/10.2.0.1.0/admin/orcl/changed_blocks.bct';
Database altered.
禁用块跟踪文件
SQL> alter database disable block change tracking;
■创建表空间
CREATE SMALLFILE TABLESPACE "YUHJ_SPACE"
DATAFILE '/export/home/opt/product/oradata/orcl/yuhj_datafile'
SIZE 10M AUTOEXTEND ON NEXT 50K MAXSIZE 20M
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
■创建临时表空间
CREATE SMALLFILE TEMPORARY TABLESPACE "YHJ_TEMP_SPACE"
TEMPFILE '/export/home/opt/product/oradata/orcl/yhj_tempfile' SIZE 5M
AUTOEXTEND ON NEXT 56K MAXSIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
■创建数据文件
ALTER TABLESPACE "YUHJ_SPACE"
ADD DATAFILE '/export/home/opt/product/oradata/orcl/yhj_datafile' SIZE 2M
AUTOEXTEND ON NEXT 56K MAXSIZE UNLIMITED/15M
■创建回滚段
CREATE ROLLBACK SEGMENT "SYSTEM"
TABLESPACE "SYSTEM"
STORAGE (INITIAL 112K MINEXTENTS 1 MAXEXTENTS 32765 )
■改变回滚段状态(上线/离线)
ALTER ROLLBACK SEGMENT "SYSTEM" ONLINE/OFFLINE
■创建重做日志组
ALTER DATABASE ADD
LOGFILE GROUP 4 ( '/export/home/opt/product/oradata/orcl/redo4.log') SIZE 51200K
■设定SGA总大小
ALTER SYSTEM SET sga_target = 209715200 SCOPE=BOTH
■设定SGA最大在小
ALTER SYSTEM SET sga_max_size = 262144000 COMMENT='internally adjusted' SCOPE=SPFILE
说明:
"SGA 最大大小"指定数据库可以分配的最大内存.如果指定了"SGA 最大大小", 则以后可以动态
更改上述 SGA 总大小 (提供的 SGA 总大小不能超过 SGA 最大大小).
■设定PGA内存分配
ALTER SYSTEM SET pga_aggregate_target = 25769803776 SCOPE=BOTH
■改变会话日期格式
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
改变会话时区
ALTER SESSION SET TIME_ZONE = '-05:00';
改变数据库的时区
ALTER DATABASE SET TIME_ZONE = '-05:00';
■查询触发器
select * from user_triggers;
select * from all_triggers;
select * from dba_triggers;
■查询当前用户在emp表上创建的所有触发器
SQL> select trigger_name, status from user_triggers where table_name = 'EMP';
■禁止触发器
SQL> alter trigger tr_emp_time DISABLE;
■激活触发器
SQL> alter trigger tr_emp_time ENABLE;
■激活或禁止表上的所有触发器
SQL> alter table dept DISABLE ALL TRIGGERS;
SQL> alter table emp ENABLE ALL TRIGGERS;
■重新编译触发器
SQL> alter trigger tr_emp_time compile;
■删除触发器
SQL> drop trigger tr_emp_time;
============================
第8章 Oracle 10g体系结构
■查看scott使用的数据段存储在哪个表空间,有多大,有几个分区:
SQL> select segment_name,tablespace_name,bytes,blocks from user_extents;
■查询scott使用的索引信息:
SQL> select index_name,table_owner,table_name,tablespace_name from user_indexes;
■查询是否使用了自动撤销管理功能
SQL> select value from v$parameter where name = 'undo_management';
VALUE
---------------------------------------------------------------------------
AUTO
SQL>
上面的查询结果为AUTO,表示使用了自动撤销管理功能,如果要使用回退段功能,
需要先将undo_management参数设置为manual,并重新启动数据库.
■查询重做日志缓存的大小
SQL> show parameter log_buffer;
■通过数据字典v$sysstat,查询用户进程等待重做日志缓存的次数
SQL> select name, value from v$sysstat;
■查询共享池缓存的大小
SQL> show parameter shared_pool_size;
■通过数据字典v$rowcache,查询共享池中数据字典缓存的成功与失败的次数
SQL> select sum(gets), sum(getmisses) from v$rowcache;
gets --- 表示读取某一类数据字典时成功的次数
getmisses --- 表示读取某一类数据字典时失败的次数
■查询大池缓存的大小
SQL> show parameter large_pool_size;
■动态改变大池的大小
SQL> alter system set large_pool_size = 20m;
■查看JAVA池缓存的大小(一般不小于20MB,以便安装JAVA虚拟机)
SQL> show parameter java_pool_size;
■查看PGA的排序区大小
SQL> show parameter sort_area_size;
■查看PGA的游标区大小
SQL> show parameter open_cursors;
通过设置初始化参数OPEN_CURSORS,可以限制用户能够同时打开的游标数目.
■查询数据字典视图V$BGPROCESS来检查数据库中启动斩后台进程个数及名称
SQL> select * from v$bgprocess
■有关检查点间隔的两个参数,也是触发数据库检查点所必需的时间或条件
SQL> show parameter log_checkpoint_%
NAME TYPE VALUE
------------------------------------ ----------- ------------------
log_checkpoint_interval integer 0
log_checkpoint_timeout integer 1800
log_checkpoint_interval --- 指定当一定数量的操作系统数据块(不是oracle数据块)被写入重做日志文件时,
将触发一个检查点.无论该参数设置为什么值,在切换重做日志文件时都会出现检查点.
log_checkpoint_timeout --- 用于指定检查点执行的最大时间间隔(以秒为单位),设置为0时禁用.
必须小心全用这两个参数
因为一个重做日志文件写满时,将触发一个检查点,所以应该使用log_checkpoint_interval设置的操作系统块数与
重做日志文件的大小相匹配.
■查看归档进程是否启动
SQL> show parameter log_archive_start
如果log_archive_start设置为FALSE,即使数据库运行在归档模式下,ARCH进程也不会被启动.这时,当重做日志文件
全部被写满后,数据库将被挂起,等待DBA进行手工归档.
■查询用户所创建的所有方案对象信息
SQL> select object_name,object_type from user_objects;
■NOMOUNT状态
V$PARAMETER V$SGA
V$OPTION V$PROCESS
V$SESSION V$VERSION
V$INSTANCE
■MOUNT状态
V$THREAD V$CONTROLFILE
V$DATABASE V$DATAFILE
V$DATAFILE_HEADER V$LOGFILE
■OPEN状态
V$FILESTAT V$SESSION_WAIT
V$WATISTAT
============================
第9章 管理控制文件
■修改初始化参数control_files
SQL> alter system set control_files=
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/control01.ctl',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/control02.ctl',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/control03.ctl',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/control04.ctl'
scope=SPFILE;
- MAXDATAFILES: 指定最大数据文件的个数
- MAXLOGFILES: 指定最大重做日志文件的个数
- MAXLOGMEMBERS: 指定重做日志文件中每个组成员的个数
- MAXLOGHISTORY: 指定控制文件可记载的重做日志历史的最大的个数
- MAXINSTANCES: 指定可以同时访问数据库的最大例程的个数
■将控制文件备份为二进制文件
SQL> alter database backup controlfile to '/tmp/yuhj/controlfile_061124.bak';
■将控制文件备份为文本文件
SQL> alter database backup controlfile to trace;
跟踪备份被存放在由初始化参数USER_DUMP_DEST指定的目录中.
SQL> show parameter user_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string /export/home/opt/product/10.1.
0.3.0/admin/ldfsys/udump
■CREATE CONTROLFILE语句
create controlfile reuse database ldfsys noresetlogs noarchivelog
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 454
LOGFILE
GROUP 1 '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/redo01.log' SIZE 10M,
GROUP 2 '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/redo02.log' SIZE 10M,
GROUP 3 '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/redo03.log' SIZE 10M
datafile
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/system01.dbf',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/undotbs01.dbf',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/sysaux01.dbf',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/users01.dbf'
CHARACTER SET ZHS16GBK
/
■删除控制文件
SQL> alter system set control_files=
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/control01.ctl',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/control02.ctl',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/control03.ctl'
scope=spfile;
就是把删除的控制文件直接去掉,然后重新设置下就可以了,然后重新启动一个oracle.
■查询控制文件信息
- V$CONTROLFILE 控制文件名称
- V$CONTROLFILE_RECORD_SECTION 控制文件记录文档段的信息
- V$PARAMETER 初始化参数CONTROL_FILES指定控制文件名称
============================
第10章 管理表空间
■查看排序段的使用情况
SQL> select * from v$sort_segment;
■查看使用排序段的会话和用户信息
SQL> select * from v$sort_usage;
■查询数据字典视图得到撤销表空间中回退段的信息
SQL> select * from dba_rollback_segs;
■创建大文件表空间
SQL> create bigfile tablespace bigfilespace01
datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/bigfilespace01.dbf' size 25G;
■创建小文件表空间
SQL> create smallfile tablespace smallfilespace01
datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/smallfilespace01.dbf' size 25G;
■创建不同类型的表空间的SQL语句
- CREATE TABLESPACE 创建(永久表空空)
- CREATE BIGFILE TABLESPACE 创建大文件表空间
- CREATE TEMPORARY TABLESPACE 创建临时表空间
- CREATE UNDO TABLESPACE 创建撤销表空间
■使用UNIFORM区分配方式的表空间
SQL> create tablespace myts01
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_1.dbf' size 2m
3 uniform size 128k;
优点:在表空间中不会产生磁盘碎片,可以节约磁盘空间
■使用AUTOALLOCATE区分配方式的表空间
SQL> create tablespace myts02
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_1.dbf' size 2m
3 autoallocate;
缺点:在表空间中会产生磁盘碎片,进而造成一些磁盘空间的浪费
■使用AUTO段管理方式的表空间
SQL> create tablespace myts03
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts03_1.dbf' size 2m
3 uniform size 128K
4 segment space management AUTO;
■创建大文件表空间
SQL> create bigfile tablespace mybigts05
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts05_1.dbf' size 2m;
该表空间管理方式为本地管理(只有本地管理才支持大文件表空间,最高可达8EB),并且区大小由系统自动分配
■创建临时表空间
SQL> create smallfile temporary tablespace mytmpts01
2 tempfile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/mytempts01_1.dbf' size 4m
3 extent management local
4 uniform size 1k;
■建立大文件临时表空间
SQL> create bigfile temporary tablespace mybigtempts01
2 tempfile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/mybigtempts01_1.dbf' size 4m
3 extent management local
4 uniform size 1k;
■创建撤销表空间
SQL> CREATE SMALLFILE UNDO TABLESPACE myundots01
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myundots01_1.dbf' size 4m
3 /
创建UNDO表空间时只能指定DATAFILE和EXTENT MANAGEMENT LOCAL选项,而不能指定其他选项,否则会有错误提示.
UNDO表空间采用本地管理方式,区的大小自动分配.
■向表空间中添加数据文件
SQL> alter tablespace myts01
2 add datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_2.dbf' size 3m;
■向临时表空间添加数据文件
SQL> alter tablespace mytmpts01
2 add tempfile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/mytmpts01_2.dbf' size 4m;
■改变数据文件
SQL> alter database
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_2.dbf'
3 resize 4m;
■充许数据文件自动扩展
SQL> alter database
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_2.dbf'
3 autoextend on next 1m maxsize 20m;
■使表空间脱机
SQL> alter tablespace myts01 offline;
■使表空间联机
SQL> alter tablespace myts01 offline;
■使表空间只读
SQL> alter tablespace myts01 read only;
处于只读状态时,仍然充许执行DROP操作删除该表空间上的对像,例如:
SQL> drop table personnel;
表已删除。
■使表空间可读写
SQL> alter tablespace myts01 read write;
■修改表空间的名称
SQL> alter tablespace myts03 rename to myts03_new;
提示:修改表空间名称是Oracle 10g特有的,在此之前不能实现该功能.
■设置数据库默认表空间
SQL> alter database default tablespace myts01;
■设置数据库默认临时表空间
SQL> alter database default temporary tablespace mytmpts01;
■删除myts03表空间,包括该表空间中的内容
SQL> drop tablespace myts03 including contents;
这条语句只会从数据字典中删除表空间信息,而其相关的数据文件仍在于磁盘上
■删除myts03表空间,包括该表空间中的内容及数据
SQL> drop tablespace myts04 including contents and datafiles;
删除表空间的同时删除与它相关的数据文件
■获得数据库中各个表空间的名称、区管理方式、区分配方式、段管理方式、类型等信息
SQL> select tablespace_name,extent_management,allocation_type,segment_space_management,contents from dba_tablespaces;
TABLESPACE_NAME EXTENT_MAN ALLOCATIO SEGMEN CONTENTS
------------------------------ ---------- --------- ------ ---------
SYSTEM LOCAL SYSTEM MANUAL PERMANENT
UNDOTBS1 LOCAL SYSTEM MANUAL UNDO
SYSAUX LOCAL SYSTEM AUTO PERMANENT
TEMP LOCAL UNIFORM MANUAL TEMPORARY
USERS LOCAL SYSTEM AUTO PERMANENT
BIGFILESPACE01 LOCAL SYSTEM AUTO PERMANENT
SMALLFILESPACE01 LOCAL SYSTEM MANUAL PERMANENT
MYTS01 LOCAL UNIFORM MANUAL PERMANENT
MYTS02 LOCAL SYSTEM MANUAL PERMANENT
MYBIGTS05 LOCAL SYSTEM AUTO PERMANENT
MYBIGTEMPTS01 LOCAL UNIFORM MANUAL TEMPORARY
MYUNDOTS01 LOCAL SYSTEM MANUAL UNDO
MYTMPTS01 LOCAL UNIFORM MANUAL TEMPORARY
■查询数据库中所有表空间的名称和默认的存储参数
SQL> select tablespace_name,initial_extent,next_extent,min_extents,max_extents,pct_increase from dba_tablespaces;
TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE
------------------------------ -------------- ----------- ----------- ----------- ------------
SYSTEM 65536 1 2147483645
UNDOTBS1 65536 1 2147483645
SYSAUX 65536 1 2147483645
TEMP 1048576 1048576 1 0
USERS 65536 1 2147483645
BIGFILESPACE01 65536 1 2147483645
SMALLFILESPACE01 65536 1 2147483645
MYTS01 131072 131072 1 2147483645 0
MYTS02 65536 1 2147483645
MYBIGTS05 65536 1 2147483645
MYBIGTEMPTS01 16384 16384 1 0
MYUNDOTS01 65536 1 2147483645
MYTMPTS01 16384 16384 1 0
■查询数据库中数据文件的位置、名称、大小及其所属的表空间
SQL> col file_name for a75
SQL> select file_name,blocks,tablespace_name from dba_data_files;
FILE_NAME BLOCKS TABLESPACE_NAME
--------------------------------------------------------------------------- ---------- ------------------
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/users01.dbf 640 USERS
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/sysaux01.dbf 35840 SYSAUX
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/undotbs01.dbf 3200 UNDOTBS1
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/system01.dbf 57600 SYSTEM
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/bigfilespace01.dbf 3200 BIGFILESPACE01
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/smallfilespace01.dbf 3200 SMALLFILESPACE01
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_1.dbf 256 MYTS01
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_1.dbf 256 MYTS02
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts05_1.dbf 256 MYBIGTS05
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myundots01_1.dbf 512 MYUNDOTS01
/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_2.dbf 512 MYTS01
■生成数据库中每个表空间的空闲盘区的信息
SQL> select tablespace_name,file_id,max(blocks) maximum,
count(*) pieces,
min(blocks) minimum,
avg(blocks) average,
sum(blocks) total
from dba_free_space
group by tablespace_name,file_id;
TABLESPACE_NAME FILE_ID MAXIMUM PIECES MINIMUM AVERAGE TOTAL
------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
USERS 4 584 1 584 584 584
MYTS01 7 208 2 16 112 224
MYTS01 12 496 1 496 496 496
MYTS02 8 248 1 248 248 248
SYSAUX 3 248 19 8 45.0526316 856
SYSTEM 1 1272 1 1272 1272 1272
UNDOTBS1 2 1656 11 8 204.363636 2248
MYBIGTS05 10 240 1 240 240 240
MYUNDOTS01 11 344 1 344 344 344
BIGFILESPACE01 5 3184 1 3184 3184 3184
SMALLFILESPACE01 6 3192 1 3192 3192 3192
pices列显示该表空间文件中的空闲空间盘区数;
maximun和minimum列显示数据库块中最大和最小的空间区域;
average列显示一个空闲空间盘区以块计的平均大小;
total列显示每个表空间文件中空闲空间盘区以块计的数量
■查询表空间的空闲空间大小
SQL> select tablespace_name,sum(bytes) free_space from dba_free_space
2 group by tablespace_name;
TABLESPACE_NAME FREE_SPACE
------------------------------ ----------
BIGFILESPACE01 26083328
MYBIGTS05 1966080
MYTS01 5898240
MYTS02 2031616
MYUNDOTS01 2818048
SMALLFILESPACE01 26148864
SYSAUX 7012352
SYSTEM 10420224
UNDOTBS1 18415616
USERS 4784128
■创建临时表空间组
SQL> alter tablespace mybigtempts01 tablespace group mytmptsgp01;
SQL> alter tablespace mytmpts01 tablespace group mytmptsgp01;
必须先创建临时表空间,然后才能创建临时表空间组.
SQL> ALTER TABLESPACE 临时表空间名 TABLESPACE GROUP 临时表空间组名
■查询表空间信息
V$TABLESPACE 来自控制文件的所有表空间名称和编号
DBA_TABLESPACE 所有(或用户可访问的)表空间的信息
USER_TABLESPACE
DBA_SEGMENTS 所有(或用户可访问的)表空间中的段的信息
USER_SEGMENTS
DBA_EXTENTS 所有(或用户可访问的)表空间中的数据盘区的信息
USER_EXTENTS
DBA_FREE_SPACE 所有(或用户可访问的)表空间中的空闲盘区的信息
USER_FREE_SPACE
V$DATAFILE 所有数据文件的信息,包括所属表空间的名称和编号
V$TEMPFILE 所有临时文件的信息,包括所属表空间的名称和编号
DBA_DATA_FILES 数据文件及其所属的表空间的信息
DBA_TEMP_FILES 临时文件及其所属的临时表空间的信息
V$TEMP_EXTENT_MAX 本地管理的临时表空间中的所有盘区的信息
V$TEMP_EXTENT_POOL 本地管理的临时表空间的缓存信息,使用的临时表空间的状态信息
V$TEMP_SPACE_HEADER 每个临时文件的已用/空闲空间信息
DBA_USERS 所有用户默认的和临时的表空间的信息
DBA_TS_QUOTAS 所有用户的表空间配额信息
V$SORT_SEGMENT 例程的每个排序段的信息.该视图只在表空间为TEMPORARY类型时更新
V$SORT_USER 用户使用的临时排序段的信息
============================
第11章 管理数据文件
■创建数据文件的SQL语句及说明
CREATE TABLESPACE 创建一个表空间和组成它的数据文件
CREATE TEMPORARY TABLESPACE 创建一个临时表空间和组成它的临时数据文件(临时数据文件
是一种特殊类型的数据文件)
ALTER TABLESPACE ... ADD DATAFILE 创建并添加一个数据文件到表空间
ALTER TABLESPACE ... ADD TEMPFILE 创建并添加一个临时数据文件到临时表空间
CREATE DATABASE 创建一个数据库和关联的数据文件
■创建表空间
SQL> create tablespace myts04
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_1.dbf' size 2m
3 autoextend on
4 next 1m
5 maxsize 5m
■向空间里添加数据文件并指定自动增长方式
SQL> alter tablespace myts02
2 add datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' size 4m
3 AUTOEXTEND ON
4 NEXT 4K
5 MAXSIZE 5M;
■更改原有数据文件为自动增长方式
SQL> ALTER DATABASE
2 DATAFILE '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_3.dbf'
3 AUTOEXTEND ON
4 NEXT 2K
5 MAXSIZE 5M;
■取消自动增长方式
SQL> alter database
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_3.dbf'
3 autoextend off;
■改变原数据文件大小
SQL> alter database
2 DATAFILE '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' resize 5m;
也可以利用RESIZE子句来缩小数据文件,不过必须保证缩小后的数据文件足够容纳其中已有的数据
■在ARCHIVELOG模式下使数据文件脱胎机
SQL> alter database
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' offline;
■在NOARCHIVELOG模式中使数据文件脱机
要注意,这会使数据文件脱机并立即删除它,所以,很可能导致丢失数据文件,这种方法一般只用于临时表空间
的临时数据文件.
SQL> alter database
2 datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' offline drop;
在这之后,如果要使数据文件联机,必须进行介质恢复,否则会有错误提示.
■修改表空间中所有数据文件的可用性
ALTER TABLESPACE ... DATAFILE { ONLINE | OFFLINE }
ALTER TABLESPACE ... TEMPFILE { ONLINE | OFFLINE }
表空间本身的联机或脱机状态不改变()
■修改整个表空间的可用性
ALTER TABLESPACE ... { ONLINE | OFFLINE }
■同一个表空间的数据文件的重命名
当改变数据文件的位置和名称时,Oracle只是在控制文件和数据字典中改变了数据文件的指针,并没有物理
地创建新的数据文件,也没有重定位和重命名任何操作系统文件.DBA必须自己在操作系统层复制文件,并重
定位或重命名数据文件.
SETUP1 SQL> alter tablespace myts04 offline normal;
将表空间设置为脱机状态是为了关闭该表空间中所有的数据文件,以便在停止数据库服务时不会造成
数据出现问题
SETUP2 SQL> shutdown immediate
如果不停止数据库服务就重命名数据文件,会出现错误提示.
SETUP3 将数据文件myts04_1.dbf重新命名为myts04_01.dbf、myts04_2.dbf重新命名为myts04_02.dbf
SETUP4 SQL> startup
SETUP5 SQL> alter tablespace myts02
rename datafile
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_1.dbf',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_2.dbf'
to
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_01.dbf',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_02.dbf';
SETUP6 SQL> alter tablespace myts04 online;
■多个表空间的数据文件的重定位和重命名
SETUP1 SQL> alter tablespace myts01 offline normal;
SQL> alter tablespace myts02 offline normal;
SETUP2 SQL> shutdown immediate
SETUP3 将myts01表空间的数据文件myts01_1.dbf重新命名为myts01_01.dbf、
将myts02表空间的数据文件myts02_1.dbf重新命名为myts02_01.dbf、
SETUP4 SQL> startup
SETUP5 SQL> alter database
rename file
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_1.dbf',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_1.dbf'
to
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_01.dbf',
'/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_01.dbf';
SETUP6 SQL> alter tablespace myts01 online;
alter tablespace myts02 online;
■查询数据文件信息
DBA_DATA_FILES
DBA_TEMP_FILES
DBA_EXTENTS
USER_EXTENTS
DBA_FREE_SPACE
USER_FREE_SPACE
V$DATAFILE
V$DATAFILE_HEADER
■查看数据文件与表空间
SELECT f.tablespace_name "表空间",
Decode(d.EXTENT_MANAGEMENT,'DICTIONARY','字典','本地') "表空间类型",
TRUNC(SUM(f.bytes/1024000),2 ) || 'MB' "自由空间",
MIN(f.bytes) "最小字节", MAX(f.bytes) "最大字节",
AVG(f.bytes) "平均字节",COUNT(f.tablespace_name) "分布在"
FROM dba_free_space f, dba_tablespaces d
Where f.tablespace_name = d.tablespace_name
GROUP BY f.tablespace_name ,d.EXTENT_MANAGEMENT
============================
第12章 管理重做日志文件
■日志切换
SQL> alter system switch logfile;
■增加重做日志文件组
SQL> alter database add logfile
2 group 4 ('/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/redo04.log') size 10m;
■增加重做日志文件组成员
SQL> alter database add logfile member
2 '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/redo04_1.log' to group 4;
■查看组及成员的状态信息
SQL> select group#,members,status from v$log;
■查看重做日志文件是否归档了
SQL> select group#,members,status,archived from v$log;
■查看重做日志文件的状态
SQL> select * from v$logfile;
如果Oracle不能访问重做日志文件,那么该文件将变成INVALID状态.
如果Oracle查出重做日志文件不完整或不正确,那么该文件将变成STALE状态(许久未用状态).当下次失效
日志文件所属的组变成活动组时,该失效日志文件才会再次变成有效状态
■删除重做日志文件组成员
SQL> alter database drop logfile member
2 '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/redo04_1.log';
■删除重做日志文件组
SQL> alter database drop logfile group 4;
当从数据库中删除了重做日志文件组或成员后,实际上并没有将该成员使用的操作系统文件从磁盘中删除掉,
也就是说,此时只是更新了相关数据库的控制文件,以便从数据库结构中删除该成员或组,所以在删除该成员
或组后,先要确定删除操作成功完成,然后使用合适的操作系统命令来删除对应的重做日志文件或组.
■清除重做日志文件组(重新初始化重做日志文件组)
SQL> alter database clear logfile group 4;
■清除损坏了的重做日志文件并且避免归档这些日志
SQL> alter database clear unarchived logfile group 4;
■改变重做日志组成员的位置或名称
SETUP1 暂停其它用户使用数据库
SETUP2 确定重做日志组的状态,只能改变处于INACTIVE和UNUSED状态
SQL> select group#,status from v$log;
SETUP3 使用操作系统命令对重做日志组成员进行更名或位置变更
SETUP4 修改控制文件中重做日志组成员的指针
SQL> alter database rename file
2 '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/redo04.log'
3 to
4 '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/new_redo04.log';
■查看重做日志文件信息
V$LOG 来自于控制文件的重做日志文件信息
V$LOGFILE 重做日志文件组及其成员以及成员的状态
V$LOG_HISTORY 重做日志文件的历史信息
============================
第13章 创建和删除数据库 2006.12.04
■查看使用的服务器参数文件
SQL> show parameter spfile;
■利用服务器参数文件创建文本参数文件
SQL> create pfile from spfile;
SQL> create pfile[='...'] from spfile[='...'];
■创建服务器参数文件
SQL> create spfile from pfile='...';
不指定spfile名称,默认为:spfile$ORACLE_SID.ora
或
SQL> create spfile='.../new_spfile.ora' from pfile='...';
■更改初始化参数
scope=spfile 只更改服务器参数文件中的参数.效果是:对于动态参数,这种更改将在下一次启动时
生效并一直保留;对于静态参数,效果与动态参数一样,只有这种更改的SCOPE子句用
于静态参数
SCOPE=MEMORY 只更改内存中的参数.效果是:对于动态参数,这种更改立即生效,但是因为没有更新
服务器参数文件,所以更改不能永久保留;对于静态参数,不允许这样更改
SCOPE=BOTH 既更改服务器参数文件中的参数,也更改内存中的参数.效果是:对于动态参数,这种
更改立即生效并且永久保留;对于静态参数,不允许这样更改
如果服务器没有使用服务器参数文件,那么在指定SCOPE=SPFILE或SCOPE=BOTH时将会出错.
如果使用服务器参数文件来启动例程,默认设置为SCOPE=BOTH;如果使用传统的文本初始化参数文件启动例程,
默认设置为SCOPE=MEMORY.
对于动态参数,可以指定DEFERRED关键字.如果指定了这个关键字,则更改将只影响将来的会话
■改变实例允许的工作队列进程的最大数目,也指定了一条注释,并在内存是中进行更改
SQL> alter system set job_queue_processes=50
comment='temporary change on 2006.12.05'
scope=memory;
■查看初始化参数
show parameters
SQL> show parameters db_recovery_file_dest;
■V$PARAMETER该视图显示当前正在使用的参数值
SQL> select name, value from v$parameter
where name='db_recovery_file_dest';
■V$SPPARAMETER该视图显示服务器参数文件的当前内容.如果实例没有使用服务器参数文件,那么该视图将返回
NULL(空)值.
SQL> select name,value from v$spparameter
where name='db_recovery_file_dest';
============================
第14章 启动和关闭数据库 2006.12.05
■监听程序
#lsnrctl start ---> 启动
#lsnrctl stop ---> 停止
#lsnrctl status ---> 状态
#lsnrctl help ---> 帮助
■一个例程只能访问一个数据库,而一个数据库可以由多个例程同时访问.
例程由一组逻辑内存结构和一系列后台服务进程组成.
在启动数据库的过程中,文件的使用顺序是:参数文件、控制文件、数据文件和重做日志文件.
■启动模式
nomount模式 启动例程,但不装载数据库,即只完成启动步骤的第1步。(读取参数文件)
mount模式 启动例程,并装载数据库,但不打开数据库。即,只完成启动步骤的第1和第2步。
open模式 启动例程,装载数据、打开数据库、即完成全部3个启动步骤.
启动语法
startup [nomount|mount|open|force] [restrict] [PFILE=filename];
■NOMOUNT选项
只创建例程,不装数据库,读取参数文件,为例程创建各种内存结构和后台服务进程,用户能与数据库进行通信,
但不能使用数据库中的任何文件.
如果要执行下列维护工作,就必须用NOMOUNT选项启动数据库
◆ 运行一个创建新数据的脚本
◆ 重建控制文件
在NOMOUNT启动模式下,只能访问那些与SGA区相关的数据库字典视图,如V$PARAMETER,V$SGA,V$OPTION,
V$PROCESS,V$VERSION,V$INSTANCE等.这些视图中的信息都是从SGA区中获取的,与数据库无关.
■MOUNT选项
MOUNT选项不仅创建例程,还装载数据库,但却不打开数据库.读取控制文件.管理员可以通过部分命令修改数据库,
用户还无法与数据库建立连接或会话.
如果要执行下列维护工作,就必须用MOUNT选项启动数据库
◆ 重命名数据文件
◆ 添加、删除或重命名重做日志文件
◆ 执行数据库完全恢复操作
◆ 改变数据库的归档模式
在MOUNT启动模式下,除了可以访问那些与SGA区相关的数据字典视图之外,还可以访问到那些与控制文件相关的数据字典
视图,如V$THREAD,V$CONTROLFILE,V$DATABASE,V$DATAFILE,V$LOGFILE等,这些视图中的信息是从控制文件中获取的.
■OPEN选项
OPEN选项不仅创建例程,还装载数据库,并且打开数据库.这是正常启动模式.如果startup命令行上没有指定任何
模式,默认就是start open选项启动数据库.
■FORCE选项
如果在正常启动数据库遇到困难,可以使用force启动选项.例如服务器突然断电.
FORCE选项与正常启动选项之间的差别还在于,无论数据库处于什么模式,都是先异常关闭数据库,然后再重新启动.
而不需要事先用SHUTDOWN语句关闭数据库.
■RESTRICT选项
RESTRICT选项启动数据库并把它置入OPEN模式,但些时只有拥有RESTRICTED SESSION权限的用户才能访问数据库.
如果需要在数据库处于OPEN模式下执行维护任何,又要保证此时其他用户不能在数据库上建立连接和执行任何,则应该
使用RESTRICT选项来打开数据库,以便完成如下任务:
◆ 执行数据库数据的导出或导入操作.
◆ 执行数据装载操作(用SQL*Loader)
◆ 暂时阻止一般的用户使用数据.
◆ 进行数据库移植或升级
当工作完成后,可以用如下语句禁用RESTRICT SESSION权限,即:
alter system disable restricted session
■关闭选项
■NORMAL选项
按NORMAL选项关闭数据库时,Oracle将执行如下操作:
◆ 阻止任何用户建立新的连接
◆ 等待当前所有正在连接的用户主动断开连接.正在连接的用户能够继续他们当前的工作,甚至能够提交新的事务.
◆ 一旦所有的用户都断开连接,才进行关闭、制裁数据库,并终止例程。
注意:
按NORMAL选项关闭数据库时,Oracle并不会断开当前用户的连接,而是等待当前用户主动断开连接。在这个过程中,连接的用
户甚至可以建立新的事务。此选项关闭数据库,在下次启动数据库时不需要任何恢复操作。关闭数据库所耗费的时间完全取决
于用户主动断开连接的时间.
■TRANSACTIONAL选项
TRANSACTIONAL选项比NORMAL选项稍微主动些。它能在尽可能短的时间内关闭数据库。
按NORMAL选项关闭数据库时,Oracle将执行如下操作:
◆ 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务
◆ 等待所有当前未提交的活动事务提交完后,然后立即断开用户的连接
◆ 一旦所有的用户都断开连接,立即进行关闭、制裁数据库,并终止例程
注意:
按TRANSACTIONAL选项关闭数据库,既能保证用户不会丢失当前工作的信息,又可以尽可能快地关闭数据库,此选项关闭数据库,在下次
启动数据库时不需要任何恢复操作。
■IMMEDIATE选项
IMMEDIATE选项关闭数据库,就能够在尽可能短的时间内关闭数据库。
按IMMEDIATE选项关闭数据库时,Oracle将执行如下操作:
◆ 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务
◆ 任何当前未提交的事务均被回退
◆ Oracle不再等待用户主动断开连接,而是直接关闭、制裁数据库,并终止例程
注意:
如果存在很多未提交的事务,则按IMMEDIATE选项关闭数据库仍然会耗费很长时间。此选项关闭数据库,在下次启动数据库时不需要任何
恢复操作。
■ABORT选项
如果上述三种选项都无法成功关闭数据库,就说明数据库存在严重错误。这时只能使用ABORT选项来关闭数据库。
在下面几种特殊情况中,可以考虑按ABORT选项来关闭数据库。
◆ 数据库本身或某个数据库应用程序发生异常,并且使用其他选项均无效
◆ 出现紧急情况,需要立刻关闭数据库(比如得到通知将在一分钟内发生停电)
◆ 在启动数据库例程的过程中产生错误。
按IMMEDIATE选项关闭数据库时,Oracle将执行如下操作:
◆ 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务
◆ 立即结束当前正在执行的SQL语句
◆ 任何未提交的事务均不被回退
◆ 立即断开所有用户的连接,关闭、缺氧数据库,并终止全程.
注意:
按ABORT选项关闭数据库时,由于当前未完成的事务并不会被回退,所以可能会丢失一部分数据信息。这样数据库的完整性遭到损害,在下一次启动时需要
进行恢复。因此建议尽量避免按ABORT选项来关闭数据库.
■在WINDOWS中启动和关闭数据库所使用的服务名称及说明
Oracle
OracleService
OracleDBConsole
Oracle
这几个服务之间的关系是:
◆ 首先启动Oracle
◆ 如果不启动Oracle
◆ 因为OracleDBConsole
OracleDBConsole
============================
第15章 管理网络 2006.12.06
■提示:全局数据库名是数据库的默认服务名,由初始化参数文件中的SERVICE_NAMES参数指定.
■Oracle网络配置分为服务器端配置和客户机端配置,服务器端配置的目的就是配置监听程序的配置文件(listener.ora).
客户机端配置的目的就是配置网络服务名的配置文件(tnsnames.ora).服务器端本身也有一个网络服务名的配置文件(
tnsnames.ora),在服务器端,一般不需要配置tnsnames.ora文件,但如果服务器要与其他服务器连接时(如在分布式网
络环境中),同样需要配置tnsnames.ora文件。根据网络连接的实际情况,每个listener.ora和tnsnames.ora内容都可能
不同,以便监听不同的连接请求信息或连接到不同的数据库.