`

oracle 删除和重建表空间脚本

阅读更多
调试数据库生成脚本,需要频繁重建表空间


/**

清除原有表空间
重建表空间和用户
**/


declare


tbs varchar2(100):='TS_data'; --表空间名称
tbs_tpm varchar2(100):='data_TEMP';--临时表空间名称
uname varchar2(100):='user';--用户名 密码为用户名小写
file_sp varchar2(100):='/';--文件分隔附 自动判断
tbs_exists INTEGER;
filepath varchar2(100);
dyn_sql varchar2(1000);
begin

 --check exist
 select count(*) INTO tbs_exists from dba_data_files where tablespace_name=tbs;
 dbms_output.put_line(tbs||' exists '|| tbs_exists);
 
 /**  **/
 --drop old table space
 if tbs_exists>0 then
   dbms_output.put_line('drop exists old table space '||tbs);
   
   dyn_sql:='DROP USER '||uname||' cascade';
   dbms_output.put_line(dyn_sql);
   execute immediate dyn_sql;
   
    dyn_sql:='DROP tablespace '||tbs||' including contents and datafiles cascade constraints  ';
   dbms_output.put_line(dyn_sql);
   execute immediate dyn_sql;

   
    dyn_sql:='DROP  tablespace '||tbs_tpm||' including contents and datafiles   ';
   dbms_output.put_line(dyn_sql);
   execute immediate dyn_sql;
   
 end if;

-- windows 系统的文件分隔符
 if(instr(dbms_utility.port_string,'WIN')>0) then
    file_sp:='\';
 end if;


  -- init file path
 select substr(file_name,0,instr(file_name,file_sp,-1,1)) into filepath from dba_data_files 
 where rownum=1;
 dbms_output.put_line('filepath='||filepath);

 --create new table space
  dyn_sql:='create tablespace '||tbs||' logging  datafile  '''||filepath||tbs||'_data.dbf'' size 50m autoextend on next 10m maxsize unlimited ';
  dbms_output.put_line(dyn_sql);
 execute immediate dyn_sql;

 dyn_sql:='create temporary tablespace '||tbs_tpm||' tempfile '''||filepath||tbs_tpm||'.dbf'' size 500m autoextend on  next 50m maxsize 2048m  extent management local   ';
   dbms_output.put_line(dyn_sql);

 execute immediate dyn_sql;


 -- USER SQL


 dyn_sql:='create user '||uname||' identified by "'||lower(uname)||'"   ';
  dbms_output.put_line(dyn_sql);
 execute immediate dyn_sql;
 
 dyn_sql:='ALTER USER '||uname||' DEFAULT TABLESPACE "'||tbs||'" TEMPORARY TABLESPACE "'||tbs_tpm||'" ACCOUNT UNLOCK ';
  dbms_output.put_line(dyn_sql);
 execute immediate dyn_sql;
 
 dyn_sql:='ALTER USER '||uname||' QUOTA UNLIMITED ON "'||tbs||'"';
  dbms_output.put_line(dyn_sql);
 execute immediate dyn_sql;
 
 dyn_sql:='grant connect,resource,dba to  '||uname||' ';
  dbms_output.put_line(dyn_sql);
 execute immediate dyn_sql;
 
 dyn_sql:='ALTER USER '||uname||' DEFAULT ROLE "DBA"';
  dbms_output.put_line(dyn_sql);
 execute immediate dyn_sql;
 
 dyn_sql:='grant connect,resource,dba to '||uname||' ';
 dbms_output.put_line(dyn_sql);
 execute immediate dyn_sql;

end;
  






ORA-01940: 无法删除当前已连接的用户


SQL>alter user XXX account lock;

SQL>SELECT * FROM V$SESSION WHERE USERNAME='LGDB';

SQL>alter system kill session 'xx,xx'

SQL>drop user xx cascade




drop user and table space
DROP USER XXXXcascade;



DROP tablespace TSXXXXN including contents and datafiles cascade constraints  ;

DROP  tablespace XXXX_TEMP including contents and datafiles  ;





查询表空间文件
select * from dba_data_files


create tablespace TS_XXX logging  datafile  '/opt/oracle/oradata/orcl_pdm/TS_XXXX_data.dbf' size 50m autoextend on next 10m maxsize unlimited;

create temporary tablespace XXXX_TEMP   tempfile '/opt/oracle/oradata/orcl_pdm/XXXX_TEMP.dbf' size 500m autoextend on  next 50m maxsize 2048m  extent management local;  



-- USER SQL
create user XXXX identified by XXXX  ;
ALTER USER XXXX
DEFAULT TABLESPACE TS_XXXX
TEMPORARY TABLESPACE XXXX_TEMP
ACCOUNT UNLOCK ;

-- QUOTAS
ALTER USER XXXX QUOTA UNLIMITED ON TS_XXXX;

-- SYSTEM PRIVILEGES
grant connect,resource,dba to  XXXX ;

-- ROLES
ALTER USER XXXX DEFAULT ROLE DBA;

-- SYSTEM PRIVILEGES
grant connect,resource,dba to  XXXX ;





select COUNT(*) from all_tables t where t.owner='XXXX';

0
3
分享到:
评论

相关推荐

    关于oracle clob 类型字段重建索引SQL及修复用户表空间索引空间的存储过程

    总之,管理Oracle数据库中CLOB类型的字段和表空间索引空间是一项重要的任务,直接影响到系统的性能和稳定性。通过合理的索引重建和表空间管理,可以确保数据库高效运行,并减少不必要的维护成本。在实践中,应结合...

    Oracle DBA脚本大全

    管理脚本可以帮助监控表空间使用情况,创建新的表空间,扩展或收缩已有的表空间,以及处理空间不足的问题。 6. **归档与日志管理**:Oracle的日志系统是保证事务一致性和数据库可恢复性的重要部分。脚本可能包括...

    更改Oracle数据库表的表空间实践.pdf

    这个过程的关键在于,通过导出/导入,我们可以保留原有的数据和表结构,然后在新的表空间中重建这些对象。这种方式比直接修改表空间更安全,因为它允许在操作过程中对数据进行备份,减少了因误操作导致的数据丢失...

    不让临时表空间影响ORACLE数据库性能

    - 文件"不要让临时表空间影响数据库性能 - Oracle - 3.mht"可能提供了实际的配置和优化步骤,包括脚本示例和监控工具的使用。 通过理解和优化临时表空间,可以显著提升Oracle数据库的性能,尤其是在处理大数据量和...

    Oracle误删除表空间后数据库如何修复的方法.doc

    ### Oracle误删除表空间后的数据库修复方法 #### 一、背景介绍 在Oracle数据库管理过程中,误操作导致的重要数据丢失是常见的问题之一。比如误删除表空间,这不仅会导致该表空间下的所有数据不可访问,还可能会...

    oracle管理常用sql脚本

    在Oracle数据库管理中,SQL(Structured Query Language)脚本扮演着至关重要的角色,尤其是在日常维护、性能监控和问题排查方面。以下是一些Oracle管理中常用的SQL脚本及其相关的知识点: 1. **数据查询与操作**:...

    Oracle常用数据字典说明及常用脚本

    1. 表空间和数据文件管理:创建、扩展或删除表空间,调整数据文件大小的SQL脚本,如CREATE TABLESPACE、ALTER DATABASE ADD DATAFILE和DROP TABLESPACE等。 2. 用户和权限管理:创建用户、赋予角色、分配权限的脚本...

    oracle表空间误操作

    - **逻辑恢复**:通过日志文件和SQL脚本,逐个重建表空间内的对象。 - **数据泵导出导入(Data Pump Export and Import)**:如果误删的是用户表空间,可以尝试导出然后再导入。 4. **预防措施**: - **权限控制...

    oracle常用脚本

    9. **表空间管理**:创建、扩展、收缩和删除表空间的脚本,用于管理数据库的物理存储结构。 10. **事务和锁管理**:控制事务的提交(COMMIT)、回滚(ROLLBACK)和锁定数据以防止并发问题的脚本也是数据库管理的...

    oracle重要脚本

    6. **数据库维护脚本**(如`db_maintenance.sql`):包括清理临时表空间、重建索引、分析表和索引等日常维护任务。这些脚本可以按计划任务自动运行,保持数据库高效运行。 7. **数据库升级脚本**(如`upgrade_11g_...

    到底能拿多少薪水 ORACLE工程师技能评估表

    - 管理表空间(普通表空间、undo、temp表空间的创建、删除和扩容)。 - 数据库参数的管理(备份参数、修改参数以及pfile和spfile的互转)。 - redolog的管理(添加、删除日志组和成员)。 - 起停数据库,了解数据库...

    Oracle数据库整理表碎片

    此脚本可以帮助评估表的高水位空间、真实使用空间、预留空间以及浪费空间的情况,从而得出碎片的程度。 3. **使用脚本检查特定模式下的表碎片**:还可以使用特定脚本来找出某个Schema中表碎片超过25%的表。例如,...

    Oracle 监控索引使用率脚本分享

    通过定期运行这样的脚本,数据库管理员能够识别低效或未使用的索引,进而进行必要的优化,如重建索引、合并索引或删除无用索引,以提高整体数据库性能。同时,这也能够帮助规划未来的索引策略,确保资源的有效利用。

    基本成本的Oracle优化法则--书里脚本.rar

    《基本成本的Oracle优化法则》是一本专注于Oracle数据库性能调优的专业书籍,它提供了一系列的脚本工具,帮助读者深入理解和应用Oracle的性能优化技术。Oracle数据库是全球广泛使用的数据库管理系统,尤其在企业级...

    Oracle数据导入导出

    下面将详细讨论这两个工具以及相关的数据库脚本和SQL操作。 1. Oracle EXP工具:Export是Oracle数据库提供的一个实用程序,用于从数据库中导出数据和对象定义。它可以创建一个二进制的转储文件,包含了用户选择的...

    oracle高水位.txt

    - **存储浪费**:如果表中存在大量的删除和更新操作,那么高水位线以下的空间可能会被标记为已使用但实际上是空闲的,这将导致存储资源的浪费。 ### Oracle高水位处理脚本分析 #### 脚本解读 1. **分析表统计信息*...

    DBA常用的数据库脚本精华汇总

    - 定期备份数据库和表空间是防止数据丢失的重要措施。这通常涉及RMAN(Recovery Manager)命令或使用其他备份工具。 8. **权限和安全性**: - 管理用户权限、角色分配、审计策略等,确保数据库的安全性。 9. **...

    Oracle-DBA-数据库日常维护手册-常用SQL-脚本.docx

    综上,Oracle数据库的日常维护涉及到日志监控、表空间管理和会话管理。通过这些关键任务,DBA可以有效地预防和解决可能出现的问题,保证数据库的稳定性和高性能。对于DBA来说,熟悉这些操作并定期执行是至关重要的,...

    Oracle 数据库日常维护

    本文将深入探讨Oracle数据库的警告日志监控、表空间使用情况监控以及DBA常用的管理脚本和SQL语句。 一、Oracle警告日志文件监控 Oracle数据库在运行过程中,会将各种操作和事件记录在警告日志文件(alert_SID.log)中...

Global site tag (gtag.js) - Google Analytics