Oracle 常用语句

表空间区

----创建表空间
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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值