ホームページ  >  記事  >  データベース  >  Oracleでスキーマを削除する方法

Oracleでスキーマを削除する方法

WBOY
WBOYオリジナル
2022-05-25 17:47:254586ブラウズ

Oracle では、drop ステートメントを使用してスキーマを削除できます。構文は「drop user username cascade;」です。drop ステートメントは、スキーマを含むテーブルの構造を削除するために使用されます。スキーマはデータベース オブジェクトのコレクションであり、ユーザーとして理解することもできます。

Oracleでスキーマを削除する方法

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle でスキーマを削除する方法

スキーマを削除するための構文は次のとおりです。

drop user username cascade;

Oracleでスキーマを削除する方法

例は次のとおりです。

##1) ユーザーのデフォルトの表スペースと一時表スペースを表示します

set lines 300
col username for a30
select username ,default_tablespace,TEMPORARY_TABLESPACE from dba_users where username='MESPRD';
-----------------------------------
USERNAME   DEFAULT_TABLESPACE     TEMPORAR    Y_TABLESPACE
MESPRD    HTTBS_MESPRD                        TEMP

2) ユーザーの権限とロールを表示します

select privilege from dba_sys_privs where grantee='SYSADM'
union
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='MESPRD' );
-----------------------------------
PRIVILEGE
CREATE CLUSTER
CREATE INDEXTYPE
CREATE OPERATOR
CREATE PROCEDURE
CREATE SEQUENCE
CREATE SESSION
CREATE TABLE
CREATE TRIGGER
CREATE TYPE

9 行が選択されました。

3) ユーザー権限を付与するスクリプトを取得します。

select 'grant '||privilege||' to SYSADM;' from (select privilege from dba_sys_privs where grantee='SYSADM'
union
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SYSADM' ));

4) スクリプトを実行して、スキーマの下のオブジェクトを削除するスクリプトを取得します。 mesprd は削除するスキーマです

connect mesprd/MESPRD
spool E:\app\Administrator\del_mesprd.sql;
select 'alter table '||table_name||' drop constraint '||constraint_name||' ;' from user_constraints where constraint_type='R';
select 'truncate table '||table_name ||';' from user_tables;
select 'drop table '||table_name ||' purge;' from user_tables;
select 'drop index '||index_name ||';' from user_indexes;
select 'drop view ' ||view_name||';' from user_views;
select 'drop sequence ' ||sequence_name||';' from user_sequences;
select 'drop function ' ||object_name||';'  from user_objects  where object_type='FUNCTION';
select 'drop procedure '||object_name||';' from user_objects  where object_type='PROCEDURE';
select 'drop package '|| object_name||';' from user_objects  where object_type='PACKAGE';
select 'drop database link '|| object_name||';' from user_objects  where object_type='DATABASE LINK';
spool off;

5) sqlplus スキーマに接続し、上記で取得したスクリプトを実行します。

実行前にスキーマ配下のオブジェクトを確認し、実行後に再度スキーマ配下のオブジェクトを確認します

@?\E:\app\Administrator\del_mesprd.sql;
SQL> select object_type,count(*) from user_objects group by object_type;

6) Kill接続されたデータベース セッション

select 'alter system kill session '''||sid||','||serial#||''' immediate;' from v$session where username='MESPRD';

7) スキーマを削除します

drop user MESPRD cascade;

推奨チュートリアル: 「

Oracle Video Tutorial

以上がOracleでスキーマを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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