SYSTEM表空间是Oracle创建数据库时候自动创建的,每个Oracle数据库都会有SYSTEM表空间,而且SYSTEM表空间总是要保持在联机模式下,因为其包含了数据库运行所要求的基本信息,如:数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表等等。
在建立数据库的时候,SYSTEM表空间一般都写在磁盘最开始的位置,这就埋下了问题的隐患。如:误操作导致的格式化,ASM出现故障等等一系列的问题,他都会从磁盘最开始的地方写起,这样就会导致SYSTEM表空间没有办法进行数据恢复。
但是,如果在建立数据库的时候,把最开始的位置“让”出来,这样就会使得很多故障轻能而易举的解决,也让DBA在管理数据库、恢复数据库的时候能轻松一些。
查询Oracle表空间剩余大小
---查询Oracle表空间使用情况-- SELECT -- '表空间名称' a.tablespace_name as "表空间名称", -- 表空间总大小(byte) total as "表空间总大小(byte)", -- 表空间剩余大小(byte) free as "表空间剩余大小(byte)", -- 表空间已使用大小(byte) (total - free) as "表空间已使用大小(byte)", -- 表空间总大小(G) total / (1024 * 1024 * 1024) as "表空间总大小(G)" , -- 表空间剩余大小(G) free / (1024 * 1024 * 1024) as "表空间剩余大小(G)", -- 表空间已使用大小(G) (total - free) / (1024 * 1024 * 1024) as "表空间已使用大小(G)" , round((total - free) / total, 4) * 100 as "Usage Rate(%)" FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;
这里的system使用率达到了99.27%,接下来登入数据库服务器为system添加表空间
Linux系统下使用SQLPLUS命令登入Oracle
1. 输入: su oracle // 必须使用oracle 用户
说明: 直接进入的目录是 /home/oraccle
[root@crb-db1 ~]# su - oracle Last login: Tue May 11 10:47:23 CST 2021 on pts/0 [oracle@crb-db1 ~]$ sqlplus as / sysdba SQL*Plus: Release 11.2.0.4.0 Production Copyright (c) 1982, 2013, Oracle. All rights reserved. 使用 SQL*Plus 执行 SQL, PL/SQL 和 SQL*Plus 语句。 用法 1: sqlplus -H | -V -H 显示 SQL*Plus 版本和 用法帮助。 -V 显示 SQL*Plus 版本。 用法 2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ] <option> 为: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S] -C <version> 将受影响的命令的兼容性设置为 <version> 指定的版本。该版本具有 "x.y[.z]" 格式。例如, -C 10.2.0 -L 只尝试登录一次, 而不是 在出错时再次提示。 -M "<options>" 设置输出的自动 HTML 标记。选项 的格式为: HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}] -R <level> 设置受限模式, 以禁用与文件系统交互的 SQL*Plus 命令。级别可以 是 1, 2 或 3。最高限制级别为 -R 3, 该级别 禁用与文件系统交互的 所有用户命令。 -S 设置无提示模式, 该模式隐藏 命令的 SQL*Plus 标帜, 提示和回显 的显示。 <logon> 为: {<username>[/<password>][@<connect_identifier>] | / } [AS {SYSDBA | SYSOPER | SYSASM}] [EDITION=value] 指定数据库帐户用户名, 口令和数据库连接 的连接标识符。如果没有连接 标识符, SQL*Plus 将连接到默认数据库。 AS SYSDBA, AS SYSOPER 和 AS SYSASM 选项是数据库 管理权限。 <connect_identifier> 的形式可以是 Net 服务名 或轻松连接。 @[<net_service_name> | [//]Host[:Port]/<service_name>] <net_service_name> 是服务的简单名称, 它解析 为连接描述符。 示例: 使用 Net 服务名连接到数据库, 且 数据库 Net 服务名为 ORCL。 sqlplus myusername/mypassword@ORCL Host 指定数据库服务器计算机的主机名或 IP 地址。 Port 指定数据库服务器上的监听端口。 <service_name> 指定要访问的数据库的 服务名。 示例: 使用轻松连接连接到数据库, 且 服务名为 ORCL。 sqlplus myusername/mypassword@Host/ORCL /NOLOG 选项可启动 SQL*Plus 而不连接到 数据库。 EDITION 指定会话 Edition 的值。 <start> 为: @<URL>|<filename>[.<ext>] [<parameter> ...] 使用将分配给脚本中的替代变量的指定参数 从 Web 服务器 (URL) 或本地文件系统 (filename.ext) 运行指定的 SQL*Plus 脚本。 在启动 SQL*Plus 并且执行 CONNECT 命令后, 将运行站点概要 文件 (例如, $ORACLE_HOME/sqlplus/admin/glogin.sql) 和用户概要文件 (例如, 工作目录中的 login.sql)。这些文件 包含 SQL*Plus 命令。 有关详细信息, 请参阅 SQL*Plus 用户指南和参考。 [oracle@crb-db1 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on################### Copyright (c) 1982, 2013, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options --查看当前数据库中表空间是否为自动扩展 SQL> select tablespace_name,file_name,autoextensible from dba_data_files; TABLESPACE_NAME ------------------------------ FILE_NAME -------------------------------------------------------------------------------- AUT --- USERS /data/oradata/orcl/users01.dbf YES UNDOTBS1 /data/oradata/orcl/undotbs01.dbf YES TABLESPACE_NAME ------------------------------ FILE_NAME -------------------------------------------------------------------------------- AUT --- SYSAUX /data/oradata/orcl/sysaux01.dbf YES SYSTEM /data/oradata/orcl/system01.dbf TABLESPACE_NAME ------------------------------ FILE_NAME -------------------------------------------------------------------------------- AUT --- YES 已选择24行。 --增加新的数据文件 SQL> alter tablespace SYSTEM add datafile '/data/oradata/orcl/system02.dbf' size 10G autoextend on; 表空间已更改。 SQL>