无详细内容 无 create or replace procedure p_test_gy(v_datacycle_id varchar2, --添加分区的上限值 v_entity_owner varchar2, v_entity_name varchar2, v_retcode out varchar2, v_retinfo out varchar2) is v_cnt1 number; --实体检测 v_cnt2 number; --
create or replace procedure p_test_gy(v_datacycle_id varchar2, --添加分区的上限值 v_entity_owner varchar2, v_entity_name varchar2, v_retcode out varchar2, v_retinfo out varchar2) is v_cnt1 number; --实体检测 v_cnt2 number; --分区是否存在检测 v_cnt3 number; --模板子分区是否存在检测 v_part_type varchar2(30); --分区类型 v_subpart_type varchar2(30); --子分区类型 v_part_value_max varchar2(30); --分区最大值 v_part_style varchar2(30); --分区命名格式 v_part_value varchar2(30); --分区值变量 v_sql varchar2(4000); --动态执行SQL v_sub_template varchar2(4000); --调整模板子分区 v_high_value long; --子分区值变量 v_subpart_value varchar2(30); --子分区值变量 /*v_pkg v_procname */ begin /*--插入日志部分 p_insert_log(v_acct_month, v_pkg, v_procname, v_prov_id, sysdate, '');*/ --检测输入参数是否有误 select count(0) into v_cnt1 from sys.dba_objects where owner = v_entity_owner and object_name = v_entity_name and object_type = 'TABLE'; if v_cnt1 = 0 then v_retcode := 'FAIL'; v_retinfo := '目标表信息输入有误'; else --检测目标表有无分区 select count(0) into v_cnt2 from sys.dba_part_tables t where t.owner = v_entity_owner and t.table_name = v_entity_name; if v_cnt2 = 0 then v_retcode := 'SUCCESS'; v_retinfo := '目标表无分区'; else --检测分区是否已存在 select regexp_replace(max(t.partition_name), '[^0-9]', ''), regexp_replace(max(t.partition_name), '[0-9]', '') into v_part_value_max, v_part_style from sys.dba_tab_partitions t where t.table_owner = v_entity_owner and t.table_name = v_entity_name; select partitioning_type, subpartitioning_type into v_part_type, v_subpart_type from sys.dba_part_tables t where t.owner = v_entity_owner and t.table_name = v_entity_name; --分区已存在&分区是LIST/HASH分区 if v_part_value_max >= v_datacycle_id OR v_part_type <> 'RANGE' then v_retcode := 'SUCCESS'; v_retinfo := '分区已存在'; else select count(0) into v_cnt3 from sys.dba_subpartition_templates where table_name = v_entity_name and user_name = v_entity_owner; --无子分区&有子分区且为模板子分区 if v_part_type = 'RANGE' AND ((v_subpart_type = 'LIST' AND v_cnt3 <> 0) OR nvl(v_subpart_type, '**') = 'NONE') then v_part_value := to_char(add_months(to_date(v_part_value_max, 'yyyymm'), 1), 'yyyymm'); while v_part_value <= v_datacycle_id loop v_sql := 'alter table ' || v_entity_owner || '.' || v_entity_name || ' add partition ' || v_part_style || v_part_value || ' values less than (''' || to_char(add_months(to_date(v_part_value, 'yyyymm'), 1), 'yyyymm') || ''') tablespace '; --日志检索 /*dbms_output.put_line(v_sql);*/ --需要分配分区(或者建表设置默认表空间) execute immediate v_sql; v_part_value := to_char(add_months(to_date(v_part_value, 'yyyymm'), 1), 'yyyymm'); end loop; v_retcode := 'SUCCESS'; v_retinfo := '成功'; else /*--顺序不太好看 select rtrim(wmsys.wm_concat(' subpartition ' || substr(subpartition_name,length(partition_name)+2) || ' values ( ''' || regexp_replace(substr(subpartition_name, length(partition_name)+2),'[^0-9]','') || ''' ) '),',') into v_sub_template from sys.dba_tab_subpartitions where table_owner = v_entity_owner and partition_name = v_part_value_max and table_name = v_entity_name;*/ --有子分区且非模板子分区 v_sub_template := 'alter table ' || v_entity_owner || '.' || v_entity_name || ' set subpartition template('; --''' ||regexp_replace(substr(subpartition_name,length(partition_name) + 2),'[^0-9]','') || ''' for t in (select /*+parallel(sub,4)*/* from sys.dba_tab_subpartitions sub where table_owner = v_entity_owner and partition_name = v_part_style || v_part_value_max and table_name = v_entity_name order by length(regexp_replace(subpartition_name, '[0-9]', '')),subpartition_name) loop v_high_value:=t.high_value; v_subpart_value:=substr(v_high_value,1,4000); /*if v_subpart_value= 'DEFAULT' then v_subpart_value:='''DEFAULT'''; end if;*/ v_sub_template := v_sub_template ||' subpartition ' || substr(t.subpartition_name, length(t.partition_name) + 2) || ' values ( '||v_subpart_value||' ) ,' ; end loop; --日志检索 dbms_output.put_line(rtrim(v_sub_template, ',') || ')'); insert into dm_check_log select rtrim(v_sub_template, ',') || ')', v_datacycle_id, sysdate from dual; commit; execute immediate rtrim(v_sub_template, ',') || ')'; v_part_value := to_char(add_months(to_date(v_part_value_max, 'yyyymm'), 1), 'yyyymm'); while v_part_value <= v_datacycle_id loop v_sql := 'alter table ' || v_entity_owner || '.' || v_entity_name || ' add partition ' || v_part_style || v_part_value || ' values less than (''' || to_char(add_months(to_date(v_part_value, 'yyyymm'), 1), 'yyyymm') || ''') tablespace '; /*dbms_output.put_line(v_sql);*/ execute immediate v_sql; --需要分配分区(或者建表设置默认表空间) v_part_value := to_char(add_months(to_date(v_part_value, 'yyyymm'), 1), 'yyyymm'); end loop; v_retcode := 'SUCCESS'; v_retinfo := '成功'; end if; end if; end if; end if; end;

mysqlhandlesconcurrencyusingamixofrow-reveltable-levellocking, 주로 throughinnodb'srow-levellocking.comparedtootherrdbms, mysql 's trofficefice formanyusecasesbutmayfacechallengeswithdeadlocksandlacksadvancturespostpostgresql'sserializa

mysqlhandlestransactionseffectialthicatied theinnodbengine, support-propertiessimilartopostgresqlandoracle.1) mysqlusesepeatablereadasthedefaultisolationlevel, itpoptormizestperformance와 함께

MySQL 데이터 유형은 숫자, 날짜 및 시간, 문자열, 이진 및 공간 유형으로 나뉩니다. 올바른 유형을 선택하면 데이터베이스 성능 및 데이터 스토리지를 최적화 할 수 있습니다.

모범 사례에는 다음이 포함됩니다. 1) 데이터 구조 및 MySQL 처리 방법 이해, 2) 적절한 인덱싱, 3) 선택을 피하십시오*, 4) 적절한 결합 유형 사용, 5)주의와 함께 하위 쿼리 사용, 6) 설명과 함께 쿼리 분석, 7) 서버 리소스에 대한 쿼리의 영향을 고려하십시오. 8) 데이터베이스를 정기적으로 유지하십시오. 이러한 관행은 MySQL 쿼리를 빠르게 만들뿐만 아니라 유지 보수, 확장 성 및 자원 효율성을 만들 수 있습니다.

mysqlisbetterforspeedandsimplicity, 적절한 위장; postgresqlexcelsincmoMplexDatascenarioswithrobustFeat.MySqlisIdeAlforQuickProjectSandread-Heavytasks, whilepostgresqlisprefferredforapticationstrictaintetaintegritytetegritytetetaintetaintetaintegritytetaintegritytetaintegritytetainte

MySQL은 비동기식, 반 동시성 및 그룹 복제의 세 가지 모드를 통해 데이터 복제를 처리합니다. 1) 비동기 복제 성능은 높지만 데이터가 손실 될 수 있습니다. 2) 반 동기화 복제는 데이터 보안을 향상 시키지만 대기 시간을 증가시킵니다. 3) 그룹 복제는 고 가용성 요구 사항에 적합한 다중 마스터 복제 및 장애 조치를 지원합니다.

설명 설명은 SQL 쿼리 성능을 분석하고 개선하는 데 사용될 수 있습니다. 1. 쿼리 계획을 보려면 설명 명세서를 실행하십시오. 2. 출력 결과를 분석하고 액세스 유형, 인덱스 사용량 및 조인 순서에주의를 기울이십시오. 3. 분석 결과를 기반으로 인덱스 생성 또는 조정, 조인 작업을 최적화하며 전체 테이블 스캔을 피하여 쿼리 효율성을 향상시킵니다.

논리 백업에 mysqldump를 사용하고 핫 백업을 위해 mysqlenterprisebackup을 사용하는 것은 mySQL 데이터베이스를 백업하는 효과적인 방법입니다. 1. MySQLDUMP를 사용하여 데이터베이스를 백업합니다 : MySQLDUMP-UROOT-PMYDATABASE> MYDATABASE_BACKUP.SQL. 2. Hot Backup : MySQLBackup- 사용자 = root-password = password-- backup-dir =/path/to/backupbackup에 mysqlenterprisebackup을 사용하십시오. 회복 할 때 해당 수명을 사용하십시오


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
