Вы здесь

dblinks, LOB, индексы и все такое

ДБ линки лобы индексы таблицы вьюхи снимки и прочие сущности

Ежегодная работа с партициями.

Каждый год в декабре я делаю одно и тоже. Пора запротоколировать.

Создаем табличные пространства под новые партиции.

Процедура для создания партиций, добавления партиций

CREATE OR REPLACE PACKAGE BILLING7.PARTITIONIER
IS
   PROCEDURE partitions_create (
      table_name_arg   IN   VARCHAR2,
      days_count_arg   IN   NUMBER,
      block_measure    IN   VARCHAR2 DEFAULT 'MM'
   );
 
    PROCEDURE partitions_job_runner;
 
 
 
END;                                                           -- Package spec
/
 
CREATE OR REPLACE PACKAGE BODY BILLING7.PARTITIONIER
IS

Процедура вытаскивает наименование таблиц из BLOB

CREATE OR REPLACE PROCEDURE REPMAN.tables_report IS
 
--- sql string
 
sql_ifrom  varchar(1000);
sql_ifromn varchar(1000);
 
sql_iwhere varchar(1000);
sql_iclip varchar(1000);
sql_iorder varchar(1000);
sql_igroup varchar(1000);
sql_ihaving varchar(1000);
sql_lenght varchar(1000);
 
sql_tables varchar(1000);
strsql varchar(5000);
sql_tables1 varchar(1000);
strsql1 varchar(5000);
 

Типы данных, размер

dbms lob

Когда хранимая процедура Oracle извлекает из таблицы объект типа lob, Oracle на самом деле возвращает не его содержимое, а локатор lob (в объектной терминологии - дескриптор). Локатор используется совместно с набором из девяти специальных функций, с помощью которых хранимая процедура может манипулировать данными, хранящимися в столбце типа lob. Вот краткое описание этих функций:

Компрессия патриций и субпартиций в oracle 10

Задача  произвести компрессию всех табличных сегментов , находящихся в табличных пространствах:

DATAMOS_2005

 

сморим свободное пространство

переименовать партиции

Задача: переименовать ошибочные названия партиций.

Необходимо установить VALUES LESS THAN на +1 месяц выше, либо изменить название партиции на -1 месяц меньше, только партиции при этом должны оставаться в наличии с 01.01.2012 года по 01.01.2016, т.е. с P20120101 до P20160101.

Например:

-- на данный момент
PARTITION p20120801 VALUES LESS THAN (TO_DATE('01-08-2012', 'DD-MM-YYYY')),

-- необходимо изменить на
PARTITION p20120801 VALUES LESS THAN (TO_DATE('01-09-2012', 'DD-MM-YYYY')),

Мониторинг индексов

grant select on V_$SQL to SSDR_SOURCE;
grant select on V_$SQL_PLAN to SSDR_SOURCE;
grant select on V$SQL_BIND_CAPTURE to SSDR_SOURCE;

Создадим таблицы для хранения полезной информации для анализа:

-- таблица для хранение информации из V$SQL по интересным для нас обьектам
CREATE TABLE monitoring_index_usage_table as
SELECT *
FROM v$sql s
WHERE s.hash_value IN
(SELECT v.hash_value FROM v$sql_plan v WHERE v.object_name = 'I#SA$DISTR_STOCK#SP_ST_DT_MT');

-- Add/modify columns
-- Add/modify columns

сносим партиции

ALTER TABLE DROP PARTITION  UPDATE GLOBAL INDEXES;

 

добываем все таблицы с партициями

select TABLE_NAME,PARTITIONED

from all_tables

where owner='BILLING7' and PARTITIONED!='NO'

BM_ACTION_LOG YES DAILY_BACKUP YES BM_CDR_ACCT YES BM_CDR_FILE YES BM_APERIODIC_ACCT YES BM_PERIODIC_ACCT YES RADACCT YES BM_SERVICE_MONEY YES

или все пучком

Как перенести LONG

CREATE OR REPLACE FUNCTION LONG_TO_CHAR
  ( in_table_name varchar,
    in_column varchar2,
    in_column_name varchar2,
    in_tab_name varchar2)
RETURN varchar AS
text_c1 varchar2(32767);
sql_cur varchar2(32767);
begin
sql_cur := 'select '||in_column||' from '||in_table_name||' where  ' ||in_column_name ||' = '|| in_tab_name ;
dbms_output.put_line (sql_cur);
 execute immediate sql_cur into text_c1;
 text_c1 := substr(text_c1, 1, 2000);

Страницы

Подписка на RSS - dblinks, LOB, индексы и все такое