ホームページ >php教程 >PHP开发 >Oracle によるユーザーとテーブルスペースの削除の詳細な紹介

Oracle によるユーザーとテーブルスペースの削除の詳細な紹介

高洛峰
高洛峰オリジナル
2017-01-06 11:37:221626ブラウズ

Oracle はユーザーとテーブルスペースを削除します

Oracle は長い間使用されてきたため、多くの新しいユーザーとテーブルスペースが追加されており、クリーンアップする必要があります

単一のユーザーとテーブルスペースの場合は、次のコマンドを使用できます。完了。

ステップ 1: ユーザーの削除

drop user ×× cascade

説明: ユーザーを削除すると、ユーザーの下のスキーマ オブジェクトのみが削除され、対応するテーブルスペースは削除されません。

ステップ 2: テーブルスペースを削除する

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;

ただし、開発環境用のデータベースであるため、クリーンアップする必要があるユーザーおよびテーブルスペースが多数あります。

アイデア:

DB 内のすべてのユーザーとテーブルスペースをエクスポートし、システムと有用なテーブルスペースをフィルターで除外し、有用な情報をテーブルにロードします。次に、有用なテーブルにないテーブルスペースを削除するルーチン ループを作成します

1. dba_users から username,default_tablespace を選択します。

2.

create table MTUSEFULSPACE
(
  ID Number(4) NOT NULL PRIMARY KEY,
  USERNAME varchar2(30),
  TABLESPACENAME varchar2(60),
  OWNERNAME varchar2(30)
);

がロックされているようです。 。

方法はありません。ルーチンを書くことはできないので、ステートメントを作成して実行することしかできません。

削除する必要があるユーザーとテーブルスペースを Excel にエクスポートします。CONCATENATE を使用して SQL を作成します。


バッチ実行のために SQLdevelop にポストします。

100 人を超えるユーザーの場合、全体の削除には時間がかかります。

データファイルの特定の場所を見つけたい場合は、

declare icount number(2);
    tempspace varchar2(60);
begin
 for curTable in (select username as allusr,default_tablespace as alltblspace from dba_users)
 loop
 tempspace :=curTable.alltblspace;
 dbms_output.put_line(tempspace);
 select count(TABLESPACENAME) into icount from MTUSEFULSPACE where TABLESPACENAME = tempspace;
 if icount=0 then
  DROP TABLESPACE tempspace INCLUDING CONTENTS AND DATAFILES;
 end if;
 commit;
 end loop;
end;


SQL コード

-- 空の表スペースを削除しますが、物理ファイルは含まれません

ORA-06550: 第 10 行, 第 5 列:
PLS-00103: 出现符号 "DROP"在需要下列之一时:
 begin case declare exit
  for goto if loop mod null pragma raise return select update
  while with <an identifier>
  <a double-quoted delimited-identifier> <a bind variable> <<
  close current delete fetch lock insert open rollback
  savepoint set sql execute commit forall merge pipe
06550. 00000 - "line %s, column %s:\n%s"
*Cause:  Usually a PL/SQL compilation error.
*Action:


--空ではない表領域を削除しますが、物理ファイルは含まれません

select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#;

--空の表領域を削除します。物理ファイルが含まれます

drop tablespace tablespace_name;

--空ではない表領域を削除します(物理ファイルが含まれます)ファイル

drop tablespace tablespace_name including contents;

-- 他のテーブルスペースのテーブルに、このテーブルスペースのテーブルのフィールドに関連付けられた外部キーやその他の制約がある場合、CASCADE CONSTRAINTS を追加する必要があります

drop tablespace tablespace_name including datafiles;

読んでいただきありがとうございます, 皆さんのお役に立てれば幸いです、皆さんコメントありがとうございます このサイトからのサポート!

ユーザーとテーブルスペースの削除に関する詳細な Oracle 関連記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。