【表空间区】
----创建表空间
CREATE TABLESPACE tableSpaceName
DATAFILE 'D:\oracleSpace\spaceName.dbf'-----表空间所在地址
SIZE 500M -----初始大小500M
AUTOEXTEND ON NEXT 100M -----每次增加100M
MAXSIZE UNLIMITED; -----不限制大小
----修改表空间
--修改为自增长模式
ALTER DATABASE DATAFILE 'D:\oracleSpace\spaceName.dbf' AUTOEXTEND ON;
--设置容量大小无限
ALTER DATABASE DATAFILE 'D:\oracleSpace\spaceName.dbf' MAXSIZE UNLIMITED;
----增加表空间
--表空间已达上限,增加表空间文件
alter tablespace tableSpaceName add datafile 'D:\oracleSpace\spaceName2.dbf' size 1024M autoextend on next 200M maxsize unlimited;
----查询表空间使用情况
SELECT TRUNC(SYSDATE) "日期",
UPPER(F.TABLESPACE_NAME) "表空间名",
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.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 DESC;
----删除表空间及数据库文件(D:\oracleSpace\spaceName.dbf)
drop tablespace tableSpaceName including contents and datafiles;
【快速Insert】一般用于数据迁移
alter table tableName nologging; --将表设置为不记录日志
drop index indexName; --若表上有索引,先删除表上的索引
insert /*+append*/ into tableName1 select * from tableName2; ---数据从表2迁移到表1
COMMIT; --提交
--重建index
alter table tableName; --回复日志记录功能
【查询后台正在执行的语句】
--单用户
select a.program, a.username, b.spid, c.sql_text
from v$session a, v$process b, v$sqlarea c
where a.paddr = b.addr
and a.sql_hash_value = c.hash_value;
--多用户
select a.program, a.username, b.spid, c.sql_text
from v$session a, v$process b, v$sqlarea c
where a.paddr = b.addr
and a.sql_hash_value = c.hash_value
and a.username ='用户名';
--查询并杀掉正在执行的语句
select sql_text, b.sid,b.serial#, 'alter system kill session'''||b.SID||','||b.serial#||''';',b.username
from v$process a, v$session b, v$sqlarea c
where a.addr = b.paddr
and b.sql_hash_value = c.hash_value;
-----执行查询到的指定语句,找到如下形式的语句复制出来执行。
alter system kill session '12345,456';
-----如果执行后依然没有释放资源,先查询到spid,然后登录数据库系统如Linux,杀掉进程
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid='123456'---上面语句查到的sid
---执行强制杀掉进程,sql工具会有提示会话连接失败。就是成功了。
kill -9 78945 ---78945是上面查到的spid