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

高洛峰
リリース: 2017-01-06 11:37:22
オリジナル
1585 人が閲覧しました

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 サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート