但行好事
莫论前程❤

Oracle学习总结–数据库常见操作

  • 多线程 并发 创建 索引
create index I_EPRK_PERSON_FLOW_PLAN on EPRK_PERSON_FLOW(PK_PLAN) NOLOGGING tablespace EPRKINDEX parallel 8;
alter index I_EPRK_PERSON_FLOW_PLAN parallel 1;
  • 创建主键唯一索引
alter table EPRK_PSN_ALTERATION add constraint PK_EPRK_PSN_ALTERATION primary key (PK_PSN_ALTERATION) 
using index
tablespace EPRKINDEX;
  • 创建一般索引
create index I_EPRK_PERSON_ALTERATION_TS on EPRK_PSN_ALTERATION
tablespace EPRKINDEX;
  • 修改索引空间
alter index I_EPRK_PSN_ALTERATION rebuild tablespace EPRKDATACSG;
  • 删除索引
drop index I_EPRK_PSN_ALTERATION;
  • 新增表空间
alter table EPRK_PERSON split partition P_MAX at('2020-02-01') into(partition P_202001 tablespace eprkdata,partition P_MAX);
alter table EPRK_PERSON split partition P_MAX at('2020-03-01') into(partition P_202001 tablespace eprkdata,partition P_MAX);
  • 查询当前运行sql
select a.USERNAME,
       a.SID,
       'alter system kill session ''' || a.sid || ',' || a.serial# || ''';' activeSQL,
       b.SQL_TEXT,
       b.SQL_FULLTEXT,
       b.SQL_ID,
       a.CLIENT_INFO ip,
       a.MACHINE,
       a.OSUSER,
       last_call_et
  from v$session a, v$sqlarea b
 where a.SQL_ADDRESS = b.ADDRESS
  • 查看当前锁表
select 'alter system kill session ''' || s.sid || ',' || s.serial# || ''':' activeSQL,
       s.SID,
       s.SERIAL#,
       s.MODULE,
       s.PROCESS,
       l.CTIME,
       o.OBJECT_NAME,
       s.MACHINE,
       s.OSUSER
  from v$transaction t, v$session s, v$lock l, all_objects o
 where t.SES_ADDR = s.SADDR
   and s.SID = l.SID
   and l.TYPE = 'TM'
   and l.ID1 = o.OBJECT_ID
  • 查询–当前运行sql绑定变量
select b.NAME,
  b.POSITION,
  b.DATATYPE_STRING,
  b.VALUE_STRING,
  b.LAST_CAPTURED,
  from v$sql_bind_capture b
  where b.sql_id = '? '
  • 查询执行计划
select * from table(dbms_xplan.display_cursor(?,0));
  • 查询索引
select index_name, 
       s.status,
       s.table_owner
from dba_indexes s
where table_name = 'EPRK_PERSON'
and s.table_owner = 'EPRK'
  • 查看temp+UNDOTBS1等,所有表空间使用情况
select a.tablespace_name,
       round(a.bytes_alloc / 1024 / 1024) megs_alloc,
       round(nvl(b.bytes_free, 0) / 1024 / 1024) megs_free,
       round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024) megs_used,
       round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_Free,
       100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_used,
       round(maxbytes / 1048576) Max
  from (select f.tablespace_name,
               sum(f.bytes) bytes_alloc,
               sum(decode(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) maxbytes
          from dba_data_files f
         group by tablespace_name) a,
       (select f.tablespace_name, sum(f.bytes) bytes_free
          from dba_free_space f
         group by tablespace_name) b
 where a.tablespace_name = b.tablespace_name(+)
union all
select h.tablespace_name,
       round(sum(h.bytes_free + h.bytes_used) / 1048576) megs_alloc,
       round(sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /1048576) megs_free,
       round(sum(nvl(p.bytes_used, 0)) / 1048576) megs_used,
       round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
             sum(h.bytes_used + h.bytes_free)) * 100) Pct_Free,
       100 -round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
             sum(h.bytes_used + h.bytes_free)) * 100) pct_used,
       round(sum(f.maxbytes) / 1048576) max
  from sys.v_$TEMP_SPACE_HEADER h,
       sys.v_$Temp_extent_pool  p,
       dba_temp_files           f
 where p.file_id(+) = h.file_id
   and p.tablespace_name(+) = h.tablespace_name
   and f.file_id = h.file_id
   and f.tablespace_name = h.tablespace_name
 group by h.tablespace_name
 ORDER BY 1

 ##表空间名 总容量  剩余  使用 剩余% 使用% 最大容量
  • 查询无效索引
select 'alter index' || s.owner || '.' || s.index_name || 'rebuild;'
from dba_indexes s
where s.status not in('VALID','SYSTEM');
  • 检查 数据分析 表时间小于今天的表
select 'exec dbms_stats.gather_table_stats(user.tabname=>''' ||
user_tables.table_name || ''',cascade=>true,force=>true);' sql
from user_tables
where user_tables.tablespace_name is not null
and last_analyzed <=sysdate
and last_analyzed is not null
  • 分区表更新
alter table eprk_personcontr enable row movement
alter table eprk_personcontr disable row movement
  • 归档 开启 关闭
# 登录到数据库服务器
sqlplus / as sysdba

1. 开启归档
    a. shutdown immediate  #关闭数据库
    b. startup mount 
    c. alter database archivelog
    d. alter database open

2. 禁止归档
    a. shutdown immediate  #关闭数据库
    b. startup mount 
    c. alter database noarchivelog
    d. alter database open

  • 删除归档
FireZila 登录
/arch 目录下为归档文件
1。 停止服务  
2. 删除/arch目录下的文件
3. 启动服务
  • 按分区表 查询sql
select count(*) from eprk_person_flow history2017 partition(P_201701);
  • 表空间-扩展
select * from dba_data_files t where t.TABLESPACE_NAME='temp'
select * from dba_data_files t where t.TABLESPACE_NAME='EPRKDATA'
alter tablespace temp add tempfile '/oradata/eprkdb/temp23.dbf' size 20G;
alter tablespace EPRKDATA add datafile '/oradata/eprkdb/EPRKDATA_20.dbf' size 30G;
alter tablespace EPRKINDEX add datafile '/oradata/eprkdb/EPRKINDEX_20.dbf' size 10G;
赞(0) 打赏
未经允许不得转载:刘鹏博客 » Oracle学习总结–数据库常见操作
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏