oracle移动数据/修改数据文件路径 html
SQL> col TABLESPACE_NAME format a20 SQL> col TOTAL_BYTES format a20 SQL> select * from (Select a.tablespace_name, to_char(a.bytes/1024/1024,'99,999.999') total_bytes, to_char(b.bytes/1024/1024,'99,999.999') free_bytes, to_char(a.bytes/1024/1024 - b.bytes/1024/1024,'99,999.999') use_bytes, to_char((1 - b.bytes/a.bytes)*100,'99.99') || '%' use from (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) b where a.tablespace_name = b.tablespace_name union all select c.tablespace_name, to_char(c.bytes/1024/1024,'99,999.999') total_bytes, to_char( (c.bytes-d.bytes_used)/1024/1024,'99,999.999') free_bytes, to_char(d.bytes_used/1024/1024,'99,999.999') use_bytes, to_char(d.bytes_used*100/c.bytes,'99.99') || '%' use from (select tablespace_name,sum(bytes) bytes from dba_temp_files group by tablespace_name) c, (select tablespace_name,sum(bytes_cached) bytes_used from v$temp_extent_pool group by tablespace_name) d where c.tablespace_name = d.tablespace_name); TABLESPACE_NAME TOTAL_BYTES FREE_BYTES USE_BYTES USE -------------------- -------------------- --------------------------------- --------------------------------- --------------------- SYSAUX 760.000 92.000 668.000 87.89% USERS 5.000 .813 4.188 83.75% SYSTEM 828.000 71.188 756.813 91.40% EXAMPLE 100.000 21.250 78.750 78.75% UNDOTBS2 150.000 46.188 103.813 69.21% MYMOTIF_TS 100.000 95.500 4.500 4.50% TEMP 8.992 .992 8.000 88.97% 已选择7行。 SQL> col Schema for a25; SQL> col Item for a25; SQL> col move_procedure for a40; SQL> SELECT occupant_name "Item", space_usage_kbytes / 1024 "Space Used (MB)", schema_name "Schema", move_procedure FROM v$sysaux_occupants ORDER BY 1 ; Item Space Used (MB) Schema MOVE_PROCEDURE ------------------------- --------------- ------------------------- ---------------------------------------- AO 42 SYS DBMS_AW.MOVE_AWMETA AUDIT_TABLES 0 SYS DBMS_AUDIT_MGMT.move_dbaudit_tables AUTO_TASK .3125 SYS EM 99.6875 SYSMAN emd_maintenance.move_em_tblspc EM_MONITORING_USER 1.3125 DBSNMP EXPRESSION_FILTER 3.625 EXFSYS JOB_SCHEDULER 5.0625 SYS LOGMNR 7.875 SYSTEM SYS.DBMS_LOGMNR_D.SET_TABLESPACE LOGSTDBY 1.375 SYSTEM SYS.DBMS_LOGSTDBY.SET_TABLESPACE ORDIM .4375 ORDSYS ordsys.ord_admin.move_ordim_tblspc ORDIM/ORDDATA 12.75 ORDDATA ordsys.ord_admin.move_ordim_tblspc Item Space Used (MB) Schema MOVE_PROCEDURE ------------------------- --------------- ------------------------- ---------------------------------------- ORDIM/ORDPLUGINS 0 ORDPLUGINS ordsys.ord_admin.move_ordim_tblspc ORDIM/SI_INFORMTN_SCHEMA 0 SI_INFORMTN_SCHEMA ordsys.ord_admin.move_ordim_tblspc PL/SCOPE 1.5625 SYS SDO 53.0625 MDSYS MDSYS.MOVE_SDO SM/ADVISOR 30.0625 SYS SM/AWR 94 SYS SM/OPTSTAT 58 SYS SM/OTHER 7.5 SYS SMON_SCN_TIME 3.25 SYS SQL_MANAGEMENT_BASE 1.6875 SYS STATSPACK 0 PERFSTAT Item Space Used (MB) Schema MOVE_PROCEDURE ------------------------- --------------- ------------------------- ---------------------------------------- STREAMS 1 SYS TEXT 3.5 CTXSYS DRI_MOVE_CTXSYS TSM 0 TSMSYS ULTRASEARCH 0 WKSYS MOVE_WK ULTRASEARCH_DEMO_USER 0 WK_TEST MOVE_WK WM 3.0625 WMSYS DBMS_WM.move_proc XDB 128.0625 XDB XDB.DBMS_XDB.MOVEXDB_TABLESPACE XSAMD 7.3125 OLAPSYS DBMS_AMD.Move_OLAP_Catalog XSOQHIST 42 SYS DBMS_XSOQ.OlapiMoveProc 已选择31行。
SQL> col PARTITION_NAME format a30 SQL> col SEGMENT_NAME format a30 SQL> col SEGMENT_TYPE format a15 SQL> select * from (select segment_name,PARTITION_NAME,segment_type,bytes/1024/1024 from dba_segments where tablespace_name='SYSTEM' order by 4 desc) where rownum<=20; SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE BYTES/1024/1024 ------------------------------ ------------------------------ --------------- --------------- IDL_UB1$ TABLE 248 SOURCE$ TABLE 64 IDL_UB2$ TABLE 30 C_TOID_VERSION# CLUSTER 23 C_OBJ#_INTCOL# CLUSTER 15 I_SOURCE1 INDEX 12 C_OBJ# CLUSTER 11 JAVA$MC$ TABLE 11 ARGUMENT$ TABLE 11 IDL_CHAR$ TABLE 10 OBJ$ TABLE 8 SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE BYTES/1024/1024 ------------------------------ ------------------------------ --------------- --------------- SYS_LOB0000001021C00003$$ LOBSEGMENT 8 I_ARGUMENT1 INDEX 8 VIEW$ TABLE 7 DEPENDENCY$ TABLE 7 I_OBJ2 INDEX 6 I_ARGUMENT2 INDEX 6 I_DEPENDENCY2 INDEX 6 I_DEPENDENCY1 INDEX 6 I_OBJ5 INDEX 6 已选择20行。
参考:http://wwyz998.blog.163.com/blog/static/321867852011117111832334/
oracle移动数据文件
1.链接到数据库
[oracle@linux]$ sqlplus /nolog
SQL> conn / as sysdba
2. 查看数据文件位置
SQL> select file_name from sys.dba_data_files;
或
SQL> select name from v$datafile;
FILE_NAME
------------------------------------------------------------------------
/oradata/PMPTGDB/users01.dbf
/oradata/PMPTGDB/undotbs01.dbf
/oradata/PMPTGDB/sysaux01.dbf
/oradata/PMPTGDB/system01.dbf
/oradata/PMPTGDB/work.dbf
2. 关闭数据库
SQL> shutdown immediate;
4. 移动文件到新的位置(好比新的位置为/media/hdd1/oradata/PMPTGDB )
cd /oradata/PMPTGDB/
mv users01.dbf undotbs01.dbf sysaux01.dbf system01.dbf work.dbf /media/hdd1/oradata/PMPTGDB
5. 以mount模式启动数据库
SQL> startup mount;
SQL> alter database rename file 'C:\APP\WANGXW\ORADATA\ORCL\MYMOTIF_TS.DBF' to 'D:\oradata\orcl\MYMOTIF_TS.DBF';
对每个要移动的文件重复执行上面的alter database rename file ... to ...
6. 打开数据库
SQL> alter database open;
再次查看文件位置,发现已经更该。java
第 1 行出现错误:
ORA-01125: 没法禁用介质恢复 - 文件 1 设置了联机[url=]备份[/url]
ORA-01110: 数据文件 1: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'linux
SQL>
是在归档模式下出现的问题,
解决办法是:sql
conn / as sysdba
startup mount
recover datafile "select name from v$datafile;" ;
alter databae open;
临时表空间重建:
更多temp表空间维护可参考:http://www.blogjava.net/japper/archive/2012/06/28/381721.html数据库
create temporary tablespace temp2 tempfile 'D:\oradata\orcl\temp1.DBF' size 50M autoextend off; alter database default temporary tablespace temp2; drop tablespace temp including contents and datafiles cascade constraints; create temporary tablespace TEMP tempfile 'D:\oradata\orcl\TEMP01.DBF' size 50M autoextend on; alter database default temporary tablespace TEMP; drop tablespace temp2 including contents and datafiles cascade constraints;
------------------------------------------------------------------------------------------------------------------------------------------------------------api
UNDO 表空间重建(清理),释放磁盘内存的办法
原文:https://blog.csdn.net/sinat_27933301/article/details/80932226
col FREE_RATE format a30
SELECT a.tablespace_name,ROUND (a.total_size) "total_size(MB)",ROUND (a.total_size) - ROUND (b.free_size, 3) "used_size(MB)",ROUND (b.free_size, 3) "free_size(MB)",ROUND (b.free_size / total_size * 100, 2) || '%' free_rate FROM ( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 total_size FROM dba_data_files GROUP BY tablespace_name) a, ( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 free_size FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name(+);服务器
TABLESPACE_NAME total_size(MB) used_size(MB) free_size(MB) FREE_RATE
-------------------- -------------- ------------- ------------- ------------------------------
SYSAUX 720 636.062 83.938 11.66%
UNDOTBS1 150 149.125 .875 .58%
USERS 5 4.125 .875 17.5%
SYSTEM 828 694.937 133.063 16.07%
EXAMPLE 100 78.75 21.25 21.25%
MYMOTIF_TS 100 4.437 95.563 95.56%oracle
确认文件:
select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1';
检查UNDO Segment状态
select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;app
一、建立一个新的小空间的undo tablespace
create undo tablespace UNDOTBS2 datafile 'D:\oradata\orcl\UNDOTBS02.DBF' size 150m autoextend off;url
二、设置新的表空间为系统undo_tablespace
alter system set undo_tablespace=UNDOTBS2;
3.等待原UNDO表空间全部UNDO SEGMENT OFFLINE
select usn,xacts,status,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
四、删除旧的表空间
alter tablespace UNDOTBS1 offline;
drop tablespace UNDOTBS1 including contents and datafiles;
5.检查空间状况
往后增长数据文件方法
ALTER TABLESPACE UNDOTBS2 ADD DATAFILE 'D:\oradata\orcl\UNDOTBS03.DBF' size 150M reuse AUTOEXTEND ON;
询回滚段状况(原undo表空间的回滚段所有offline,能够删除相关表空间)
select tablespace_name,segment_name,status from dba_rollback_segs;
离线原undo表空间
alter tablespace undotbs1 offline;
肯定原undo回滚段所有offline,直接删除
drop tablespace undotbs1 including contents and datafiles;
六、其余方法
禁止undo tablespace自动增加
alter database datafile 'C:\APP\WANGXW\ORADATA\ORCL\UNDOTBS01.DBF' autoextend off;
扩大undo tablespace的大小:
alter database datafile 'C:\APP\WANGXW\ORADATA\ORCL\UNDOTBS01.DBF' resize 200m;
system表空间满:
其解决的方法有两个:
1)扩SYSTEM表空间,或者清理SYS.AUD$表;安装数据库时报以下错误:
ORA-00604:ERROR occurred at recursive SQL level 1
ORA-01653:unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM
ORA-02002:ERROR while writing to audit trail
ORA-00604:ERROR occurred at recursive SQL level 1
ORA-01653:unable to exten table SYS.AUD$ by 8192 in tablespace SYSTEM
WARNING:You are no longer connected to ORACLE.
SQL>SP2-0640:Not connected
报system系统表空间不足
能够使用以下语句查询system表空间中什么对象占用空间最大:
select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024 from dba_segments where TABLESPACE_NAME='SYSTEM' and rownum < 10 order by BYTES/1024/1024 desc;
并对其进行分析,看system表空间过大的问题。
但如上显示的错误信息已经直接说明:一是:数据库的审计功能已经开启(SYS.AUD$表,只有开了审计功能才会向其中插入数据),如何开启和关闭oracle数据库中的审计功能?
扩展表空间能够参考以下方法:
方法一:手动重设并增长表空间tbsk的数据文件大小
SQL> alter database datafile '/opt/oracle/oradata/ora11g/system.dbf' resize 20G;
方法二:把表空间的数据文件设为自动增加(不建议使用此方法)
SQL> alter database datafile '/opt/oracle/oradata/ora11g/system.dbf' autoextend on next 10M maxsize unlimited;
一个表空间数据库文件最大能够扩展到32G。
方法三:增长新的数据文件(建议使用此方法)
SQL> alter tablespace system add datafile '/opt/oracle/oradata/ora11g/system2.dbf' size 10G autoextend off;
下面语句清理审计表,释放系统表空间:
sqlplus / as sysdba
truncate table SYS.AUD$;
2)关闭审计功能:(关闭审计须要从新启动Oracle)
SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /oracle/app/admin/ora11g/adump
audit_sys_operations boolean TRUE
audit_syslog_level string
audit_trail string DB -->说明已经开启审计功能
SQL>
执行下面SQL:
SQL>alter system set audit_trail=none scope=spfile;
直接使用spfile文件中的审计功能参考audit_trail为none,即关闭审计功能。
执行完后,重启数据库。
启动后查看:
SQL> show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string NONE
SYSTEM表空间如今又能插入数据了。
http://zxf261.blog.51cto.com/701797/762048
Oracle 11g缺省安装数据库启动了audit功能,致使oracle不断累积sys.aud$表及相关索引数据量增长;
若是致使表空间满了,在alert日志中将会报ORA-1654: unable to extend index SYS....错误。
若是不用到审计功能,建议关闭审计。
处理过程:
一、用oracle用户登陆到数据库服务器,执行:
sqlplus / as sysdba
二、取消audit,将初始化参数audit_trail设置为NONE
alter system set audit_trail=none scope=spfile;
三、而后重启数据库.
shutdown immediate;
sqlplus / as sysdba
startup;
四、删除签权数据,oracle用户登陆到数据库服务器:
sqlplus / as sysdba
truncate table SYS.AUD$;
关闭审计功能: sqlplus / as sysdba SQL> alter system set audit_trail=none scope=spfile; SQL> shutdown immediate; SQL> startup; SQL> truncate table SYS.AUD$;