Размер Таблиц и 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


Вот и всё.

Комментировать...

tablespace oracle pl/sql table size

Пример создания временных таблиц на 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)


И всё!..
(Кусочек кода не большой и думаю понятен, без излишнего разъяснения).

Комментировать...

PL/SQL temp tables временные таблицы

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;

Комментировать...

oracle tablespace ORA-01654

DataTable , Фильтры и выбор количества записей.

Язык программирования C#

Эта публикация из цикла о том, как делать не надо. А делать надо так: сначала читать MSDN затем творить, а не наоборот. И в результате проблема: «А чего это он мне 56 записей показывает? Ведь я фильтр наложил и должна быть ровно 1 запись!».

Так вот — если наложили фильтр на DataTable, то вот так вот делать нельзя:

DataTable table = new DataTable();
//Здесь - заполняем нашу таблицу чем нибудь...
table.DefaultView.RowFilter = "[поле_таблицы]=значение"; 
//Если значение символьное - то в одинарных ковычках.
int count = table.Rows.Count; 
//Узнаём сколько строк после фильтра неполучится - выдаст общее количество!
string value = table.Rows[0]["поле_таблицы"].ToString();
//Получаем значение ячейки из первой строки (тоже без фильтра сделает).

Надо делать вот так:

Читаль далее...

C шарп DataTable

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
В данной таблице будем размещать бутылки разных названий и цветов (просто для теста).

Читаль далее...

MSSQL Procedure Table TSQL SQL