oracle 存储过程创建表分区
oracle 存储过程创建表分区 Oracle 存储过程 CREATE OR REPLACE PROCEDURE BIP_MMS_PARTITION_PROC AS v_Mms_Task_Tab VARCHAR2(50); --表名 v_Mms_Content_Tab VARCHAR2(50); v_Mms_User_Tab VARCHAR2(50); v_TableSpace VARCHAR2(20); --表空间 v_PartPreFl
oracle 存储过程创建表分区Oracle 存储过程
CREATE OR REPLACE PROCEDURE BIP_MMS_PARTITION_PROC AS v_Mms_Task_Tab VARCHAR2(50); --表名 v_Mms_Content_Tab VARCHAR2(50); v_Mms_User_Tab VARCHAR2(50); v_TableSpace VARCHAR2(20); --表空间 v_PartPreFlag VARCHAR2(50); --分区名标识 v_SqlCursor NUMBER; --游标 v_SqlExec VARCHAR2(2000); --执行语句 v_PartPreDate VARCHAR2(20); --分区日期 v_RangeValue NUMBER; v_RangeDate NUMBER; v_Rows NUMBER(30) := 0; v_Num NUMBER(30) := 0; vErrInfo VARCHAR2(200); p_DateFrom NUMBER; p_PartNum NUMBER; p_Range NUMBER; BEGIN v_Mms_Task_Tab := 'BIP_MMS_MT_TASK_LOG_TAB_TEST'; v_Mms_Content_Tab := 'BIP_MMS_MT_CONTENT_TAB_TEST'; v_Mms_User_Tab := 'BIP_MMS_MT_USER_LOG_TAB_TEST'; -- 读取配置参数 BEGIN SELECT TO_NUMBER(VALUE) INTO p_DateFrom FROM BIP_OTHERS_PROPERTIES_TAB WHERE NAME = 'p_DateFrom'; SELECT TO_NUMBER(VALUE) INTO p_PartNum FROM BIP_OTHERS_PROPERTIES_TAB WHERE NAME = 'p_PartNum'; SELECT TO_NUMBER(VALUE) INTO p_Range FROM BIP_OTHERS_PROPERTIES_TAB WHERE NAME = 'p_Range'; EXCEPTION WHEN OTHERS THEN BEGIN p_DateFrom := 0; p_PartNum := 1; p_Range := 180; END; END; --记录存储过程添加分区 INSERT INTO BIP_LOG_STAT_EXEC_TAB VALUES (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'), 'BIP_MMS_PARTITION_PROC_ADD', 'BEGIN'); COMMIT; --ADD PARTITION FOR i IN 1 .. p_PartNum LOOP --BIP_MMS_MT_CONTENT_TAB 添加分区 v_PartPreDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD'); dbms_output.put_line(v_PartPreDate); v_Num := 0; v_TableSpace := 'BIP_MMS_TS_TEST'; v_PartPreFlag := 'MMS_MT_CONTENT'; SELECT COUNT(*) INTO v_Num FROM user_tab_partitions WHERE table_name = v_Mms_Content_Tab AND SUBSTR(partition_name, 16, 8) = v_PartPreDate; IF v_Num < 1 THEN v_RangeDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD'); v_RangeValue := v_RangeDate || '240000'; dbms_output.put_line(v_RangeValue); v_SqlExec := 'ALTER TABLE ' || v_Mms_Content_Tab || ' ADD PARTITION ' || v_PartPreFlag || '_' || v_PartPreDate || ' VALUES LESS THAN(''' || v_RangeValue || ''') TABLESPACE ' || v_TableSpace; dbms_output.put_line(v_SqlExec); v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); END IF; --BIP_MMS_MT_TASK_LOG_TAB_TEST 添加分区 v_PartPreDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD'); v_Num := 0; v_TableSpace := 'BIP_MMS_TS_TEST'; v_PartPreFlag := 'MMS_MT_TASK_LOG'; SELECT COUNT(*) INTO v_Num FROM user_tab_partitions WHERE table_name = v_Mms_Task_Tab AND SUBSTR(partition_name, 17, 8) = v_PartPreDate; IF v_Num < 1 THEN v_RangeDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD'); v_RangeValue := v_RangeDate || '240000'; v_SqlExec := 'ALTER TABLE ' || v_Mms_Task_Tab || ' ADD PARTITION ' || v_PartPreFlag || '_' || v_PartPreDate || ' VALUES LESS THAN(''' || v_RangeValue || ''') TABLESPACE ' || v_TableSpace; dbms_output.put_line(v_SqlExec); v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); END IF; --BIP_MMS_MT_USER_LOG_TAB_TEST 添加分区 v_PartPreDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD'); v_Num := 0; v_TableSpace := 'BIP_MMS_TS_TEST'; v_PartPreFlag := 'MMS_MT_USER_LOG'; SELECT COUNT(*) INTO v_Num FROM user_tab_partitions WHERE table_name = v_Mms_User_Tab AND SUBSTR(partition_name, 17, 8) = v_PartPreDate; IF v_Num < 1 THEN v_RangeDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD'); v_RangeValue := v_RangeDate || '240000'; v_SqlExec := 'ALTER TABLE ' || v_Mms_User_Tab || ' ADD PARTITION ' || v_PartPreFlag || '_' || v_PartPreDate || ' VALUES LESS THAN(''' || v_RangeValue || ''') TABLESPACE ' || v_TableSpace; dbms_output.put_line(v_SqlExec); v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); END IF; END LOOP; COMMIT; INSERT INTO BIP_LOG_STAT_EXEC_TAB VALUES (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'), 'BIP_MMS_PARTITION_PROC_ADD', 'END'); COMMIT; --DELETE PARTITION INSERT INTO BIP_LOG_STAT_EXEC_TAB VALUES (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'), 'BIP_MMS_PARTITION_PROC_DEL', 'BEGIN'); COMMIT; BEGIN v_PartPreFlag := 'MMS_MT_CONTENT' || '_' || TO_CHAR(SYSDATE - p_Range, 'yyyymmdd'); dbms_output.put_line(v_PartPreFlag); v_SqlExec := 'ALTER TABLE ' || v_Mms_Content_Tab || ' TRUNCATE PARTITION ' || v_PartPreFlag; dbms_output.put_line(v_SqlExec); v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); dbms_output.put_line(v_PartPreFlag || ' truncated'); v_SqlExec := 'ALTER TABLE ' || v_Mms_Content_Tab || ' DROP PARTITION ' || v_PartPreFlag; dbms_output.put_line(v_SqlExec); v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); dbms_output.put_line(v_PartPreFlag || ' dropped'); END; BEGIN v_PartPreFlag := 'MMS_MT_TASK_LOG' || '_' || TO_CHAR(SYSDATE - p_Range, 'yyyymmdd'); dbms_output.put_line(v_PartPreFlag); v_SqlExec := 'ALTER TABLE ' || v_Mms_Task_Tab || ' TRUNCATE PARTITION ' || v_PartPreFlag; dbms_output.put_line(v_SqlExec); v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); dbms_output.put_line(v_PartPreFlag || ' truncated'); v_SqlExec := 'ALTER TABLE ' || v_Mms_Task_Tab || ' DROP PARTITION ' || v_PartPreFlag; v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); dbms_output.put_line(v_PartPreFlag || ' dropped'); END; BEGIN v_PartPreFlag := 'MMS_MT_USER_LOG' || '_' || TO_CHAR(SYSDATE - p_Range, 'yyyymmdd'); dbms_output.put_line(v_PartPreFlag); v_SqlExec := 'ALTER TABLE ' || v_Mms_User_Tab || ' TRUNCATE PARTITION ' || v_PartPreFlag; dbms_output.put_line(v_SqlExec); v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); dbms_output.put_line(v_PartPreFlag || ' truncated'); v_SqlExec := 'ALTER TABLE ' || v_Mms_User_Tab || ' DROP PARTITION ' || v_PartPreFlag; v_SqlCursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE); v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor); DBMS_SQL.CLOSE_CURSOR(v_SqlCursor); dbms_output.put_line(v_PartPreFlag || ' dropped'); END; COMMIT; INSERT INTO BIP_LOG_STAT_EXEC_TAB VALUES (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'), 'BIP_MMS_PARTITION_PROC_DEL', 'END'); COMMIT; EXCEPTION WHEN OTHERS THEN BEGIN ROLLBACK; dbms_output.put_line(TO_CHAR(SQLCODE)); vErrInfo := SUBSTR(SQLERRM, 1, 200); dbms_output.put_line(TO_CHAR(vErrInfo)); INSERT INTO BIP_LOG_STAT_EXEC_TAB VALUES (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'), 'BIP_MMS_PARTITION_PROC_ERROR', vErrInfo); COMMIT; END; end bip_mms_partition_proc;

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



La fonction dans Oracle pour calculer le nombre de jours entre deux dates est DATEDIFF(). L'utilisation spécifique est la suivante : Spécifiez l'unité d'intervalle de temps : intervalle (tel que jour, mois, année) Spécifiez deux valeurs de date : date1 et date2DATEDIFF(interval, date1, date2) Renvoie la différence en jours

La durée de conservation des journaux de la base de données Oracle dépend du type de journal et de la configuration, notamment : Redo logs : déterminé par la taille maximale configurée avec le paramètre "LOG_ARCHIVE_DEST". Redo logs archivés : Déterminé par la taille maximale configurée par le paramètre "DB_RECOVERY_FILE_DEST_SIZE". Redo logs en ligne : non archivés, perdus au redémarrage de la base de données et la durée de conservation est cohérente avec la durée d'exécution de l'instance. Journal d'audit : Configuré par le paramètre "AUDIT_TRAIL", conservé 30 jours par défaut.

La séquence de démarrage de la base de données Oracle est la suivante : 1. Vérifiez les conditions préalables ; 2. Démarrez l'écouteur ; 3. Démarrez l'instance de base de données ; 4. Attendez que la base de données s'ouvre ; 6. Vérifiez l'état de la base de données ; . Activez le service (si nécessaire) ; 8. Testez la connexion.

Le type de données INTERVAL dans Oracle est utilisé pour représenter les intervalles de temps. La syntaxe est INTERVAL <precision> <unit> Vous pouvez utiliser des opérations d'addition, de soustraction, de multiplication et de division pour utiliser INTERVAL, ce qui convient aux scénarios tels que le stockage de données temporelles et. calculer les différences de dates.

La quantité de mémoire requise par Oracle dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis : pour le stockage des tampons de données, des tampons d'index, l'exécution d'instructions SQL et la gestion du cache du dictionnaire de données. Le montant exact dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis. Les meilleures pratiques incluent la définition de la taille SGA appropriée, le dimensionnement des composants SGA, l'utilisation d'AMM et la surveillance de l'utilisation de la mémoire.

Pour trouver le nombre d'occurrences d'un caractère dans Oracle, effectuez les étapes suivantes : Obtenez la longueur totale d'une chaîne ; Obtenez la longueur de la sous-chaîne dans laquelle un caractère apparaît. Comptez le nombre d'occurrences d'un caractère en soustrayant la longueur de la sous-chaîne ; de la longueur totale.

Exigences de configuration matérielle du serveur de base de données Oracle : Processeur : multicœur, avec une fréquence principale d'au moins 2,5 GHz Pour les grandes bases de données, 32 cœurs ou plus sont recommandés. Mémoire : au moins 8 Go pour les petites bases de données, 16 à 64 Go pour les tailles moyennes, jusqu'à 512 Go ou plus pour les grandes bases de données ou les charges de travail lourdes. Stockage : disques SSD ou NVMe, matrices RAID pour la redondance et les performances. Réseau : réseau haut débit (10GbE ou supérieur), carte réseau dédiée, réseau à faible latence. Autres : alimentation stable, composants redondants, système d'exploitation et logiciels compatibles, dissipation thermique et système de refroidissement.

Oracle utilise le symbole "||" pour concaténer des chaînes. La méthode d'utilisation est la suivante : connectez les chaînes à connecter avec le symbole "||" ; la priorité de connexion de chaîne est faible et des parenthèses doivent être utilisées pour garantir qu'une chaîne vide sera toujours une chaîne vide après ; connexion ; la connexion de valeur NULL est toujours NULL.
