Oracle 修改数据库文件大小

   Database    Oracle  Setting

查询表空间信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT D.FILE_NAME "表空间地址", 
UPPER(F.TABLESPACE_NAME) "表空间名",
D.AUTOEXTENSIBLE "是否自动扩展",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM
(
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME
) F,
(
SELECT DD.FILE_NAME, DD.AUTOEXTENSIBLE, DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.FILE_NAME, DD.AUTOEXTENSIBLE, DD.TABLESPACE_NAME
) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 5 DESC;

设置表空间大小

1
2
3
4
-- 设置为自动扩展
alter database datafile '/U01/oradata/system.dbf' AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
-- 设置为表空间的大小
alter database datafile '/U01/oradata/system.dbf' resize 10240m;

_*注意:处理 ORA-01653: 表 SYS.OBJ$ 无法通过 128的错误 _

添加表空间文件

1
2
3
4
-- 自动扩展
ALTER TABLESPACE "SYSTEM" ADD DATAFILE '/U01/oradata/system01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
-- 不可扩展
ALTER TABLESPACE "SYSTEM" ADD DATAFILE '/U01/oradata/system01.dbf' SIZE 500M;

迁移表空间位置

关闭数据库迁移

1
2
3
4
5
6
7
-- 关闭数据库
shutdown database;
-- 移动对应文件地址 *.dbf 并mount模式启动数据库,修改数据库位置
startup mount;
alter database rename file '[原数据文件地址]' to '[移动后数据文件地址]';
-- 打开数据库
alter database open;

在线迁移数据库

1
2
3
4
5
6
-- 离线表空间
alter tablespace SYSTEM offline;
-- 移动对应文件地址 *.dbf 并修改数据库位置
alter database rename file '[原数据文件地址]' to '[移动后数据文件地址]';
-- 加载表空间
alter tablespace SYSTEM online;

查询锁表并删除锁表

1
2
3
4
-- 获取锁表信息
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID
-- kill掉锁表记录
alter system kill session '[SID],[SERIAL#]'
  1. 查询表空间信息
  2. 设置表空间大小
  3. 添加表空间文件
  4. 迁移表空间位置
    1. 关闭数据库迁移
    2. 在线迁移数据库
    3. 查询锁表并删除锁表
Liunx Bash 命令
Android 添加 Dependencies 报错 Manifest merger failed