Oracle+11g+笔记(7)-数据库空间管理
7、数据库空间管理
存储空间是数据库系统中非常重要的资源,无论是数据库中的对象还是数据库中的数据都需要空间进行存储,一旦
数据库空间被全部占用,那么该数据库系统就不能再接受任何对象和数据,数据库系统的运行基本上会处于停滞状
态。合理利用空间不但能节省空间,还可以提高数据库系统的效率和工作性能。对数据库空间的管理主要通过以下
几种方法。
-
建立数据库时分配存储空间。建立数据库可以指定
SYSTEM
表空间和其他表空间的大小。 -
空间充足时,通过动态空间监视和增加数据文件的方法管理数据库空间。
-
空间不够用时,需要增加存储空间,增加存储空间的方法主要包括:改变系统表空间数据文件的大小、创建新
表空间和增加表空间大小。
-
减少存储空间的使用,主要方法包括:为表中的列设置合适的数据类型和长度、为对象设置合适的存储参数。
-
回收存储空间,主要方法包括:对历史数据进行存档并回收相应的空间;删除无用的对象和表空间。
7.1 建立数据库时的空间设计
从逻辑上说,数据库空间是由若干个表空间组成的,而表空间只是一个逻辑概念,它与数据库的物理结构有着密切
的关系。表空间与磁盘上的若干个数据文件对应,表空间的所有内容其实都存储在数据文件中。数据文件是实际存
在的文件,在创建表空间时就需要指定该表空间中各个数据文件的大小。因此,为了防止以后数据库存储空间不够
用,在建立数据库时需要对可能的空间需求做出合理的估计,然后为其设置一个较大的预分配空间。
在建立数据库之初,合理估计可能用到的存储空间大小,并为表空间中的数据文件设置较大的存储空间,甚至设置
为空间大小不受限制,则在以后使用过程中就会较少或几乎碰不到空间不够用的情况。
根据表空间的类型不同,空间设计可分为以下两种:
-
system表空间初值:创建数据库时指定。
-
其他表空间初值:创建表空间时指定。
7.1.1 指定system 表空间初值
数据库运行期间如果出现存储空间不够用的现象,会对数据库的运行造成较大的影响,虽然可以通过增加数据文件
以扩充存储空间,但还是会或多或少地影响数据库的性能,因此在创建数据库时,为表空间中的数据文件设置足够
大的值是必要的。下面我们通过两种方法来设置system
表空间的初值。
1、通过DBCA
工具创建数据库并指定system
表空间的初值。
##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################
###########################################
# Shared Server
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=mydbXDB)"
###########################################
# Miscellaneous
###########################################
compatible=11.2.0.0.0
diagnostic_dest=D:\app\zhangshixing
memory_target=1287651328
###########################################
# Security and Auditing
###########################################
audit_file_dest=D:\app\zhangshixing\admin\mydb\adump
audit_trail=db
remote_login_passwordfile=EXCLUSIVE
###########################################
# Database Identification
###########################################
db_domain=""
db_name=mydb
###########################################
# File Configuration
###########################################
control_files=("D:\app\zhangshixing\oradata\mydb\control01.ctl", "D:\app\zhangshixing\flash_recovery_area\mydb\control02.ctl")
db_recovery_file_dest=D:\app\zhangshixing\flash_recovery_area
db_recovery_file_dest_size=5218762752
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_tablespace=UNDOTBS1
###########################################
# Network Registration
###########################################
local_listener=LISTENER_MYDB
###########################################
# Processes and Sessions
###########################################
processes=150
###########################################
# Cache and I/O
###########################################
db_block_size=8192
CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
2、通过命令方式创建数据库并指定system
表空间的初值。
参考连接:
https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN002
通过命令的方式创建数据库比较复杂,实现起来难度较大,下面将给出具体的实现步骤。
Step1
创建文件目录,用于存放数据库的各个不同类型的文件。
C:\>mkdir D:\app\zhangshixing\product\11.2.0\dbhome_1\admin\eygle
C:\>mkdir D:\app\zhangs