暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle 常用SQL查询(四)——增加表空间大小的四种方法

东面而视 2018-01-31
629



Meathod1:给表空间增加数据文件

ALTER TABLESPACE app_data ADD DATAFILE

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' SIZE 50M;

 

Meathod2:新增数据文件,并且允许数据文件自动增长

ALTER TABLESPACE app_data ADD DATAFILE

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF' SIZE 50M

AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

 

Meathod3:允许已存在的数据文件自动增长

ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF'

AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

 

Meathod4:手工改变已存在数据文件的大小

ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP02.DBF'

RESIZE 100M;

自动添加数据文件

set serveroutput on;

declare

Tablespacename Varchar(500);

  temp_file_name Varchar(500);

 file_name Varchar(500);

 free           Number(10,2);

 rate           Number(10,2);

 total           Number(10,2);

 used           Number(10,2);

 Vs_Sql         Varchar2(500);

 Data_File_No   Number(4);

 cursor cur_t  is

  select a.tablespace_name tablespace_name,a.total as total,a.total-a.free_space as used,(a.total-a.free_space)/a.total as rate, b.file_name file_name from (

  select f.tablespace_name tablespace_name,sum(f.bytes)/(1024*1024) as free_space,sum(d.bytes)/(1024*1024) as total

from dba_free_space f,dba_data_files  d

 where f.tablespace_name=d.tablespace_name and f.tablespace_name like '%GPS%' group by f.tablespace_name) a,(select max(file_name) file_name,tablespace_name from dba_data_files group by tablespace_name ) b where a.tablespace_name=b.tablespace_name;

 

 tablespace_info cur_t%rowtype;

 

Begin

  for tablespace_info in cur_t  loop

           rate:=tablespace_info.rate;

           total:=tablespace_info.total;

           used:=tablespace_info.used;

           Tablespacename:=tablespace_info.tablespace_name;

           file_name:=tablespace_info.file_name;

         

            If rate >=80 Then

            

               dbms_output.put_line(Tablespacename||' '||file_name||' '||rate);

            

            temp_file_name:=file_name;

            temp_file_name:=substr(file_name,0,INSTR (file_name, '.')-1);

            temp_file_name:=temp_file_name||'_'||to_char(sysdate,'yyyymmddhh24miss')||'.dbf';

             

        Vs_Sql := 'alter tablespace '||Tablespacename||' add datafile '''||temp_file_name||''' size 200M autoextend on next 100m maxsize UNLIMITED ';

         dbms_output.put_line(Vs_Sql);

        --alter中的路径需要根据本地数据库的安装路径修改 

        Execute Immediate Vs_Sql;

       End If;

  end loop;

End ;

 

修改索引表空间

  select 'alter index ' ||index_name|| ' rebuild tablespace FLTIDX;' index_name from  dba_indexes where owner like '%FLT%' and table_owner='FLT' and tablespace_name='FLT' and index_name  like '%PK%';

  

  select index_name,table_owner,tablespace_name from dba_indexes where owner like '%FLT%' and table_owner='FLT' and tablespace_name='FLTIDX' ;

  

   select index_name,table_owner,tablespace_name from dba_indexes where owner like '%FLT%' and table_owner='FLT' and tablespace_name='FLT' and index_name not like '%PK%';

  

  

  select * from  dba_indexes where owner like '%FLT%' and table_owner='FLT';

  alter index ANSWER_PK rebuild tablespace FLTIDX;

删除重复数据

delete from 表名 a 

  where a.rowid != 

  ( 

  select max(b.rowid) from 表名 b 

  where a.字段1 = b.字段1 and 

  a.字段2 = b.字段2 

)

 

 

 

查找sessionpsid

select a.sid, a.SERIAL#, b.spid, a.status, a.PROGRAM

from v$session a, V$PROCESS b

where a.sid in (29, 30, 32, 77, 120, 144, 151)

and a.paddr=b.ADDR

order by a.sid;

清除归档日志

rman target/ 

或rman target/@orcl 

在命令窗口里面执行 

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; 

魏健康 09:41:17

ALTER DATABASE ARCHIVELOG;

魏健康 09:41:31

ALTER DATABASE NOARCHIVELOG;

魏健康 09:41:37

 ARCHIVE  LOG  LIST

 

RAC 启动和停止

[oracle@node1 ~]$ crs_stat 

[oracle@node1 ~]$ crs_start -all 

[oracle@node1 ~]$ crs_stop -all 

[oracle@node1 ~]$ crs_stop "ora.fyweb.db" 

[oracle@node1 ~]$ crs_start "ora.fyweb.db" 

删除表空间,表分区

alter table ALARM_REALTIME drop partition flt_data_part_201301;

drop tablespace test_data including contents and datafiles;

 

查询oracle进程现在执行的sql

 

SELECT   /*+ ORDERED */

         sql_text

    FROM v$sqltext a

   WHERE (a.hash_value, a.address) IN (

            SELECT DECODE (sql_hash_value,

                           0, prev_hash_value,

                           sql_hash_value

                          ),

                   DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)

              FROM v$session b

             WHERE b.paddr = (SELECT addr

                                FROM v$process c

                               WHERE c.spid = 5396))

ORDER BY piece ASC;

文章出处:http://blog.itpub.net/29119536/viewspace-1138006/


文章转载自东面而视,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论