Heim Datenbank MySQL-Tutorial Oracle 在线重定义(将普通堆表转换成分区表)

Oracle 在线重定义(将普通堆表转换成分区表)

Jun 07, 2016 pm 05:07 PM
oracle数据库

1 创建测试表 用sys用户创建测试表 SQLgt; CREATE TABLE HR.ST (ID NUMBER, TIME DATE); Table created. SQLgt; INSERT INTO

1 创建测试表

用sys用户创建测试表

SQL> CREATE TABLE HR.ST (ID NUMBER, TIME DATE);

Table created.

SQL> INSERT INTO HR.ST SELECT ROWNUM, CREATED FROM DBA_OBJECTS;

50416 rows created.

SQL> commit;

Commit complete.

2 授权

SQL> grant execute on DBMS_REDEFINITION to hr;

Grant succeeded.

SQL> grant CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE, LOCK ANY TABLE, SELECT ANY TABLE to hr;

Grant succeeded.

3 新建中间表(分区的表结构)

SQL> create table mid_st(id number primary key, time date) partition by range(time)

  2  (

  3    partition p1 values less than(to_date('2004-7-1', 'yyyy-mm-dd')),

  4    partition p2 values less than(to_date('2005-1-1', 'yyyy-mm-dd')),

  5    partition p3 values less than(to_date('2005-7-1', 'yyyy-mm-dd')),

  6    partition p4 values less than(maxvalue)

  7  );

Table created

4 验证

SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(user, 'ST', DBMS_REDEFINITION.CONS_USE_PK);

PL/SQL procedure successfully completed

5 在线重定义

SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'ST', 'MID_ST');

PL/SQL procedure successfully completed

6 同步数据(可选)

如果在执行DBMS_REDEFINITION.START_REDEF_TABLE()过程和执行DBMS_REDEFINITION.FINISH_REDEF_TABLE()过程直接在重定义表上执行了大量的DML操作,那么可以选择执行一次或多次的SYNC_INTERIM_TABLE()过程,,以减少最后一步执行FINISH_REDEF_TABLE()过程时的锁定时间。

SQL> EXEC DBMS_REDEFINITION.SYNC_INTERIM_TABLE(USER, 'ST', 'MID_ST');

PL/SQL procedure successfully completed

7 结束重定义

SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'ST', 'MID_ST');

PL/SQL procedure successfully completed

8 查看分区结果

SQL> select a.table_name, a.partition_name from user_tab_partitions a;

TABLE_NAME                     PARTITION_NAME

------------------------------ ------------------------------

ST                             P1

ST                             P2

ST                             P3

ST                             P4

9 放弃在线重定义

可以在执行dbms_redefinition.start_redef_table之后到执行dbms_redefinition.finish_redef_table之前的时间里执行:

DBMS_REDEFINITION.abort_redef_table(user, 'st', 'mid_st')以放弃执行在线重定义。

10 常见问题

10.1 无主键

SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(user, 'ST', DBMS_REDEFINITION.CONS_USE_PK);

BEGIN DBMS_REDEFINITION.CAN_REDEF_TABLE(user, 'ST', DBMS_REDEFINITION.CONS_USE_PK); END;

*

ERROR at line 1:

ORA-12089: cannot online redefine table "HR"."ST" with no primary key

ORA-06512: at "SYS.DBMS_REDEFINITION", line 137

ORA-06512: at "SYS.DBMS_REDEFINITION", line 1478

ORA-06512: at line 1

 

出错了, 该表上缺少主键, 为该表建主键. 再执行验证.

SQL> alter table st add constraint pk_t primary key(id);

Table altered.

 

用这句删除materialized view 即可继续进行

drop materialized view log on ;

drop materialized view log on t; OR drop materialized t;

10.2 未授权

SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'ST', 'MID_ST');

begin DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'ST', 'MID_ST'); end;

ORA-01031: insufficient privileges

ORA-06512: at "SYS.DBMS_REDEFINITION", line 50

ORA-06512: at "SYS.DBMS_REDEFINITION", line 1343

ORA-06512: at line 2

linux

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So überprüfen Sie, zu welchem ​​Tabellenbereich eine Tabelle in Oracle gehört So überprüfen Sie, zu welchem ​​Tabellenbereich eine Tabelle in Oracle gehört Jul 06, 2023 pm 01:31 PM

So überprüfen Sie, zu welchem ​​Tabellenbereich eine Tabelle in Oracle gehört: 1. Verwenden Sie die Anweisung „SELECT“ und geben Sie den Tabellennamen an, um den Tabellenbereich zu finden, zu dem die angegebene Tabelle gehört. 2. Verwenden Sie zur Überprüfung die von Oracle bereitgestellten Datenbankverwaltungstools Der Tabellenbereich, zu dem die Tabelle gehört, bietet normalerweise eine grafische Oberfläche, wodurch die Bedienung intuitiver und komfortabler wird. 3. In SQL*Plus können Sie den Tabellenbereich anzeigen, zu dem die Tabelle gehört .

So stellen Sie mithilfe von PDO eine Verbindung zur Oracle-Datenbank her So stellen Sie mithilfe von PDO eine Verbindung zur Oracle-Datenbank her Jul 28, 2023 pm 12:48 PM

Überblick über die Verwendung von PDO zum Herstellen einer Verbindung zur Oracle-Datenbank: PDO (PHPDataObjects) ist eine Erweiterungsbibliothek für den Betrieb von Datenbanken in PHP. Sie bietet eine einheitliche API für den Zugriff auf mehrere Datenbanktypen. In diesem Artikel besprechen wir, wie man mit PDO eine Verbindung zu einer Oracle-Datenbank herstellt und einige gängige Datenbankoperationen durchführt. Schritt: Installieren Sie die Oracle-Datenbanktreibererweiterung. Bevor Sie PDO zum Herstellen einer Verbindung zur Oracle-Datenbank verwenden, müssen Sie das entsprechende Oracle installieren

So rufen Sie nur ein Stück doppelter Daten in Oracle ab So rufen Sie nur ein Stück doppelter Daten in Oracle ab Jul 06, 2023 am 11:45 AM

Schritte für Oracle, um nur ein Stück doppelter Daten abzurufen: 1. Verwenden Sie die SELECT-Anweisung in Kombination mit den GROUP BY- und HAVING-Klauseln, um doppelte Daten zu finden. 2. Verwenden Sie ROWID, um doppelte Daten zu löschen, um sicherzustellen, dass korrekte doppelte Datensätze gelöscht werden Verwenden Sie die Funktion „ROW_NUMBER“ ()“, um doppelte Daten zu löschen. Dadurch werden alle Datensätze außer dem ersten Datensatz in jedem Satz doppelter Daten gelöscht. 3. Verwenden Sie die Anweisung „select count(*) from“, um die Anzahl der gelöschten Datensätze zurückzugeben das Ergebnis sicherstellen.

Implementieren Sie den Datenimport in PHP- und Oracle-Datenbanken Implementieren Sie den Datenimport in PHP- und Oracle-Datenbanken Jul 12, 2023 pm 06:46 PM

Implementierung des Datenimports in PHP- und Oracle-Datenbanken In der Webentwicklung kann die Verwendung von PHP als serverseitige Skriptsprache den bequemen Betrieb der Datenbank ermöglichen. Als gängiges relationales Datenbankverwaltungssystem verfügt die Oracle-Datenbank über leistungsstarke Datenspeicher- und -verarbeitungsfunktionen. In diesem Artikel wird die Verwendung von PHP zum Importieren von Daten in eine Oracle-Datenbank vorgestellt und entsprechende Codebeispiele gegeben. Zuerst müssen wir sicherstellen, dass PHP und die Oracle-Datenbank installiert sind und dass PHP entsprechend konfiguriert wurde

So nutzen Sie PHP- und Oracle-Datenbankverbindungspools effizient So nutzen Sie PHP- und Oracle-Datenbankverbindungspools effizient Jul 12, 2023 am 10:07 AM

So nutzen Sie Verbindungspooling in PHP- und Oracle-Datenbanken effizient. Einführung: Bei der Entwicklung von PHP-Anwendungen ist die Verwendung einer Datenbank ein wesentlicher Bestandteil. Bei der Interaktion mit Oracle-Datenbanken ist die Verwendung von Verbindungspools entscheidend für die Verbesserung der Anwendungsleistung und -effizienz. In diesem Artikel wird die effiziente Nutzung des Oracle-Datenbankverbindungspools in PHP vorgestellt und entsprechende Codebeispiele bereitgestellt. 1. Das Konzept und die Vorteile des Verbindungspoolings Verbindungspooling ist eine Technologie zur Verwaltung von Datenbankverbindungen. Es erstellt im Voraus einen Stapel von Verbindungen und verwaltet diese

Benötigt die Oracle-Datenbank JDK? Benötigt die Oracle-Datenbank JDK? Jun 05, 2023 pm 05:06 PM

Die Oracle-Datenbank erfordert JDK. Die Gründe sind: 1. Bei Verwendung bestimmter Software oder Funktionen ist andere im JDK enthaltene Software oder Bibliotheken erforderlich. 3. JDK Bietet Funktionen zum Entwickeln und Kompilieren von Java-Anwendungen. 4. Erfüllen Sie die Anforderungen von Oracle für Java-Funktionen, um bei der Implementierung und Implementierung spezifischer Funktionen zu helfen.

Wie Oracle ermittelt, ob eine Tabelle in einer gespeicherten Prozedur vorhanden ist Wie Oracle ermittelt, ob eine Tabelle in einer gespeicherten Prozedur vorhanden ist Jul 06, 2023 pm 01:20 PM

Oracles Schritte, um festzustellen, ob eine Tabelle in einer gespeicherten Prozedur vorhanden ist: 1. Verwenden Sie die Systemtabelle „user_tables“, um die Tabelleninformationen unter dem aktuellen Benutzer abzufragen, vergleichen Sie den eingehenden Tabellennamen „p_table_name“ mit dem Feld „table_name“ und prüfen Sie, ob Sind die Bedingungen erfüllt, gibt „COUNT(*)“ einen Wert größer als 0 zurück. Verwenden Sie die Anweisung „SET SERVEROUTPUT ON;“ und das Schlüsselwort „EXEC`“, um die gespeicherte Prozedur auszuführen und den Tabellennamen zu übergeben Bestimmen Sie, ob die Tabelle vorhanden ist.

So erweitern Sie PDO mit PHP, um eine Verbindung zur Oracle-Datenbank herzustellen So erweitern Sie PDO mit PHP, um eine Verbindung zur Oracle-Datenbank herzustellen Jul 29, 2023 pm 07:21 PM

So erweitern Sie PDO mit PHP, um eine Verbindung zur Oracle-Datenbank herzustellen. Einführung: PHP ist eine sehr beliebte serverseitige Programmiersprache und Oracle ist ein häufig verwendetes relationales Datenbankverwaltungssystem. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Erweiterung PDO (PHPDataObjects) eine Verbindung zur Oracle-Datenbank herstellen. 1. Installieren Sie die PDO_OCI-Erweiterung. Um eine Verbindung zur Oracle-Datenbank herzustellen, müssen Sie zunächst die PDO_OCI-Erweiterung installieren. Hier sind die Schritte zum Installieren der PDO_OCI-Erweiterung: Stellen Sie sicher

See all articles