Размер Таблиц и Tablespace в Oracle
Осваиваем Oracle и PL/SQLУзнаем сколько занимает каждый TableSpace:
(Размер указан в мегабайтах)
select a.tablespace_name, totalspace, nvl(freespace,0) freespace,
(totalspace-nvl(freespace,0)) used,
((totalspace-nvl(freespace,0))/totalspace)*100 "%USED"
from
(select tablespace_name, sum(bytes)/1048576 totalspace
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(Bytes)/1048576 freespace
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name (+)
and ((totalspace-nvl(freespace,0))/totalspace)*100 > 90
order by 5 desc
Теперь узнаем сколько занимают таблицы в указанном TableSpace:
(Размер в мегабайтах, имя нужного TableSpace — берем из результатов предыдущего запроса, для всех при больших базах может выполняться долго)
select de.owner, de.segment_name, sum(de.bytes)/1048576, de.segment_type from dba_extents de
where de.owner in ('нужный tablespace')
group by de.owner, de.segment_name, de.segment_type
Вот и всё. Комментировать...
Пример создания временных таблиц на PL/SQL как в MSSQL
Осваиваем Oracle и PL/SQLДля того, кто перешёл с MSSQL на Oracle, как например для меня, очень не привычно отсутствие такой удобной конструкции как:
select * into #tmp from table1
Где #tmp — временная таблица, с которой мы в рамках сессии можем далее обращаться как с обычной.
Однако в Oracle такая конструкция не работает. Мои попытки сходу найти какой либо аналог, успехом не увенчались. Однако свершилось чудо, и спустя некоторое время более опытный в этом вопросе коллега подсказал таки выход, который по сути реализует аналогичную вещь как и в MSSQL.
И так, вот как оказывается можно:
with
--Задаем временные таблицы
t_view1 as (select * from table1 where id = 1),
t_view2 as (select * from table2 where id = 1)
--Производим действия с использованием временных таблиц
select * from table3 t where
exists (select * from t_view1 v where v.id = t.id)
and exists (select * from t_view2 v where v.id = t.id)
И всё!..
(Кусочек кода не большой и думаю понятен, без излишнего разъяснения). Комментировать...
Oracle - добавляем размер табличного пространства
Осваиваем Oracle и PL/SQLЕщё это метод излечения ошибки типа:
ORA-01654: unable to extend.
Узнаем размеры табличного пространства и свободное место:
select file_name,tablespace_name,user_bytes/1024/1024,bytes/1024/1024,
maxbytes/1024/1024,autoextensible from dba_data_files;
Добавляем еще места:
ALTER TABLESPACE USERS_INDX -- Это TABLESPACE_NAME
ADD DATAFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS_IDX01.DBF'
SIZE 100M
AUTOEXTEND ON NEXT 100M
MAXSIZE 4G;
Комментировать...
DataTable , Фильтры и выбор количества записей.
Язык программирования C#Эта публикация из цикла о том, как делать не надо. А делать надо так: сначала читать MSDN затем творить, а не наоборот. И в результате проблема: «А чего это он мне 56 записей показывает? Ведь я фильтр наложил и должна быть ровно 1 запись!».
Так вот — если наложили фильтр на DataTable, то вот так вот делать нельзя:
DataTable table = new DataTable();
//Здесь - заполняем нашу таблицу чем нибудь...
table.DefaultView.RowFilter = "[поле_таблицы]=значение";
//Если значение символьное - то в одинарных ковычках.
int count = table.Rows.Count;
//Узнаём сколько строк после фильтра неполучится - выдаст общее количество!
string value = table.Rows[0]["поле_таблицы"].ToString();
//Получаем значение ячейки из первой строки (тоже без фильтра сделает).
Надо делать вот так: Читаль далее...
Oracle - Выбираем все пользовательские таблицы с полями и комментариями.
Осваиваем Oracle и PL/SQLДля того, чтобы написать скрипт выбора всех пользовательских таблиц с полями и комментариями нам понадобятся системные таблицы:
user_tables
--Выбираем все пользовательские таблицы и их параметры
select * from user_tables
user_tab_comments
--Выбираем комментарии к пользовательским таблицам
select * from user_tab_comments
user_tab_columns
--Выбираем все поля и их параметры по пользовательским таблицам
select * from user_tab_columns
user_col_comments
--Выбираем комментарии к полям пользовательских таблиц
select * from user_col_comments
Читаль далее...
Oracle PLSQL tables user_col_comments user_tables user_tab_comments user_tab_columns
MSSQL - передача таблицы или списка значений в процедуру ( C# .NET )
MS SQL - по необходимостиЧасто бывает необходимость передать за один раз некоторый набор данных в процедуру, в этой публикации будет приведен пример как это сделать на языке C# для базы данных MSSQL.
Использовать будем обычный способ вызова процедуры без каких либо фреймворков.
Для начала создадим тестовую таблицу в базе данных:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Bottles](
[Uid] [uniqueidentifier] NOT NULL,
[Name] [varchar](50) NULL,
[Color] [varchar](50) NULL
) ON [PRIMARY]
GO
В данной таблице будем размещать бутылки разных названий и цветов (просто для теста).Читаль далее...