1.Oracle物理结构管理

本文介绍了Oracle数据库的管理操作,包括启动和关闭的不同模式,表空间的创建、删除和修改,数据文件的管理,控制文件的查询和维护,以及联机重做日志文件的管理。这些内容涵盖了数据库日常运维的关键方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.数据库启动

2.数据库关闭

3.表空间管理

1)创建表空间 

2)删除表空间

3)修改表空间

4)查看表空间信息

4.数据文件管理

1)创建数据文件

2)修改数据文件

3)移动数据文件

4)移除数据文件

5)查看数据文件信息

6)检查数据文件

 5.控制文件管理

1)查询控制文件信息

a.使用动态性能视图v$controlfile查询控制文件的名称和状态。

b.使用初始化参数文件中的CONTROL_FILES参数查询控制文件的名称。

c.使用动态性能视图v$parameter查询控制文件的名称和位置。

2)建立多路控制文件

3)删除控制文件

6.联机重做日志文件管理

1)查看日志组和成员日志文件信息

2)创建联机重做日志组

3)创建日志组成员

4)删除重做日志组

5)删除重做日志组中的成员

6)手工日志切换


数据库启动

 在Oracle数据库中,有三种启动模式可供选择,分别是:

  • NOMOUNT模式:在这种模式下,Oracle实例已启动,但数据库尚未打开。此模式用于创建新的数据库或恢复控制文件。
startup nomount;
  • MOUNT模式:在这种模式下,Oracle实例已启动并且数据库已打开,但是数据文件和重做日志文件尚未被访问。此模式用于更改控制文件的位置或名称,更改数据库名称等。
startup mount;
  • OPEN模式:在这种模式下,Oracle实例已启动,并且数据库已打开并可以被访问。此模式是正常的数据库运行模式,允许用户执行查询和修改操作。
startup;

数据库关闭

 Oracle数据库关闭有以下三种模式:

  1.  `IMMEDIATE`:立即关闭数据库实例,不等待正在运行的事务完成。如果还有事务未完成,这些事务将被回滚。
  2. `TRANSACTIONAL`:等待所有事务完成,然后关闭数据库实例。如果在等待期间有新的事务开始,这些事务将被回滚。
  3. `ABORT`:立即关闭数据库实例,不管是否有事务在运行。这种方式可能会导致数据库损坏或数据丢失,因此只有在无法通过其他方式关闭数据库实例时才应使用。

默认情况下,`shutdown`命令等价于`shutdown immediate`,即立即关闭数据库实例。可以使用以下语法指定关闭模式:

shutdown [immediate|transactional|abort];

表空间管理

在 Oracle 数据库中,表空间是逻辑存储单元,用于管理数据库中的物理存储结构。它是一个数据库对象,用于存储数据文件,这些数据文件实际上是用于存储表、索引、存储过程和其他数据库对象的文件。

  • 创建表空间 

CREATE TABLESPACE tablespace_name
DATAFILE 'datafile_path' SIZE size 
[REUSE] 
[AUTOEXTEND ON [NEXT next_size] [MAXSIZE max_size]]
[DEFAULT STORAGE    (INITIAL initial_extent [NEXT next_extent] [MINEXTENTS min_extents] [MAXEXTENTS max_extents] 
   [PCTINCREASE pct_increase])]
[EXTENT MANAGEMENT {LOCAL | DICTIONARY}]
[SEGMENT SPACE MANAGEMENT {AUTO | MANUAL}];
  • tablespace_name 为表空间名称
  • datafile_path 为数据文件路径
  • size 为表空间大小
  • REUSE 表示重用现有数据文件
  • AUTOEXTEND 表示自动扩展表空间
  • DEFAULT STORAGE 为默认存储参数
  • EXTENT MANAGEMENT 指定扩展管理方式
  • SEGMENT SPACE MANAGEMENT 指定段空间管理方式。
  • 删除表空间

ALTER TABLESPACE tablespace_name
[ADD DATAFILE 'datafile_path' SIZE size [REUSE] [AUTOEXTEND ON [NEXT next_size] [MAXSIZE max_size]]]
[RESIZE DATAFILE 'datafile_path' SIZE size]
[DEFAULT STORAGE    (INITIAL initial_extent [NEXT next_extent] [MINEXTENTS min_extents] [MAXEXTENTS max_extents] 
   [PCTINCREASE pct_increase])]
[ONLINE | OFFLINE];
  • ADD DATAFILE 表示添加数据文件
  • RESIZE DATAFILE 表示调整数据文件大小
  • DEFAULT STORAGE 表示修改默认存储参数
  • ONLINEOFFLINE 分别表示在线和离线修改表空间
  • 修改表空间

DROP TABLESPACE tablespace_name [INCLUDING CONTENTS] [CASCADE CONSTRAINTS];
  • INCLUDING CONTENTS 表示删除表空间及其内容
  • CASCADE CONSTRAINTS 表示删除表空间及其所有外键关联的表。
  • 查看表空间信息

SELECT tablespace_name, status, contents, logging, allocation_type, extent_management, segment_space_management
FROM dba_tablespaces;

该查询语句将返回数据库中

  • 所有表空间的名称(tablespace_name)
  • 状态(status)
  • 类型(contents)
  • 是否启用日志记录(logging)
  • 空间分配类型(allocation_type)
  • 扩展管理方式(extent_management)
  • 段空间管理方式(segment_space_management)       等详细信息。

数据文件管理

数据文件(Datafile)是Oracle数据库中存储数据的物理文件,是Oracle数据库中数据存储的最小单位。每个数据文件在操作系统上都是一个文件,可以被独立备份、复制或迁移到另一个磁盘中。

  • 创建数据文件

ALTER TABLESPACE tablespace_name
ADD DATAFILE 'file_path/file_name.dbf' SIZE file_size [AUTOEXTEND ON];

这个语句用于为一个表空间添加一个新的数据文件

  • 修改数据文件

ALTER DATABASE DATAFILE 'file_path/file_name.dbf'
[AUTOEXTEND OFF | ON [NEXT file_size] [MAXSIZE max_file_size]];

这个语句用于修改数据文件的属性,例如设置自动扩展和最大文件大小等

  • 移动数据文件

ALTER DATABASE RENAME FILE 'file_path/old_file_name.dbf' TO 'file_path/new_file_name.dbf';

这个语句用于将一个数据文件移动到另一个位置或重命名。

注意,移动数据文件需要先将表空间离线。

ALTER TABLESPACE tablespace_name OFFLINE;
  • 移除数据文件

ALTER TABLESPACE tablespace_name
DROP DATAFILE 'file_path/file_name.dbf';

这个语句用于从表空间中移除一个数据文件。

  • 查看数据文件信息

SELECT file_name, tablespace_name, bytes/1024/1024 AS size_MB, status, autoextensible
FROM dba_data_files;

这个语句用于查看数据库中所有数据文件的信息,包括

  • 文件名                 file_name
  • 所属表空间           tablespace_name
  • 大小                    bytes/1024/1024 AS size_MB
  • 状态                    status
  • 是否自动扩展       autoextensible
  • 检查数据文件

ALTER TABLESPACE tablespace_name
CHECK DATAFILES;

这个语句用于检查表空间中的数据文件是否完整。如果有文件被破坏或损坏,可以使用这个命令尝试恢复数据。

 控制文件管理

  • 查询控制文件信息

  • 使用动态性能视图v$controlfile查询控制文件的名称和状态。

SELECT NAME,STATUS FROM V$CONTROLFILE;

  1. `STATUS`:控制文件的状态,可能的值为 `A`(当前控制文件)和 `S`(备用控制文件)。
  2. `NAME`:控制文件的完整路径和名称。
  3. `IS_RECOVERY_DEST_FILE`:表示该控制文件是否是一个恢复目标文件。可能的值为 `YES` 或 `NO`。
  4. `BLOCK_SIZE`:控制文件中每个块的大小,以字节为单位。
  5. `FILE_SIZE_BLKS`:控制文件的大小,以块为单位。
  6. `CON_ID`:容器 ID。在 Oracle 数据库的多租户架构中,这个值标识了这些信息所属的容器 ID。如果不是多租户数据库,则此列始终为 0。

        

  • 使用初始化参数文件中的CONTROL_FILES参数查询控制文件的名称。

SHOW PARAMETER CONTROL_FILES;
  • 使用动态性能视图v$parameter查询控制文件的名称和位置。

SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
  • 建立多路控制文件

example:

  • 第1步:修改参数control_files的值,增加一个新的控制文件。
alter system set control_files=
'd:\oracle\oradata\orcl\control01.ctl',
'd:\oracle\oradata\orcl\control02.ctl',
'c:\finance\control03.ctl',
'd:\finance\control04.ctl'  scope=spfile;
  • 第2步:关闭数据库实例。
shutdown immediate;
  • 第3步:将当前某个控制文件复制到新文件的目标位置,在此增加了一个控制文件的拷贝。
C:\>copy d:\oracle\oradata\orcl\control01.ctl c:\finance\control03.ctl
C:\>copy d:\oracle\oradata\orcl\control01.ctl d:\finance\control04.ctl
  • 第4步:启动数据库实例。
startup;
  • 删除控制文件

example:

  • 第1步:修改参数control_files的值。
alter system set control_files=

'd:\oracle\oradata\orcl\control01.ctl',

'd:\oracle\oradata\orcl\control02.ctl',

'c:\finance\control03.ctl'  scope=spfile;
  • 第2步:关闭数据库实例。
shutdown immediate
  • 第3步:利用操作系统命令删除control04控制文件。
del d:\finance\control04.ctl
  • 第4步:启动数据库实例。
startup

联机重做日志文件管理

  • 查看日志组和成员日志文件信息

查看日志组信息。

select group#, sequence#, members, status from v$log;

查看日志成员信息。

select group#, member, status from v$logfile;

v$logv$logfile 都是 Oracle 数据库的动态性能视图,但是它们展示的信息是不同的。

  • v$log 显示当前所有的联机重做日志文件,包括重做日志文件的组号、序列号、大小、状态等信息。
  • v$logfile 显示所有在线日志文件和归档日志文件的信息,包括文件名、状态、大小、最后修改时间等信息。

        简而言之,`v$log` 主要用于管理联机重做日志文件,而 `v$logfile` 主要用于管理日志文件。在进行日志管理时,这两个视图经常一起使用。

  • 创建联机重做日志组

创建日志文件组4,包括2个成员。
 

alter database add logfile group 4

         ('c:\finance\redo04a.rdo', 'd:\finance\redo04b.rdo') size 50m;

select group#, members, status, first_time from v$log;

创建一个新的日志文件组,不指定日志文件组号。
 

alter database add logfile

         ('c:\finance\redo05a.rdo', 'd:\finance\redo05b.rdo') size 50m;
  • 创建日志组成员

alter database add logfile member
	'd:\finance\redo01b.rdo' to group 1,
	'd:\finance\redo02b.rdo' to group 2,
	'd:\finance\redo03b.rdo' to group 3,
	'd:\finance\redo04c.rdo' to group 4;
  • 删除重做日志组

alter database drop logfile group 5;

select group#, members, status, first_time from v$log;

在删除重做日志组前,确保该重做日志组的状态为inactive

  • 删除重做日志组中的成员

alter database drop logfile member 'member_name';

在删除重做日志组前,确保该重做日志组的状态为inactive;

  • 手工日志切换

SQL>alter system switch logfile;

用于强制 Oracle 切换到新的联机重做日志文件,这通常用于手动切换联机重做日志,例如在备份联机重做日志之前。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值