Script pro výpis sessions dle využití RAM.

select
e.sid,
e.username,
e.osuser,
e.terminal,
e.MACHINE,
e.status,
e.state,
e.SQL_ID,
e.sql_exec_start,
a.uga_memory as UGA_MEMORY_KB,
b.pga_memory as PGA_MEMORY_KB,
c.sql_text,
substr(e.program,1,20) program,
decode(e.command,
1,'Create table' , 2,'Insert',
3,'Select' , 6,'Update',
7,'Delete' , 9,'Create index',
10,'Drop index' ,11,'Alter index',
12,'Drop table' ,13,'Create seq',
14,'Alter sequence' ,15,'Alter table',
16,'Drop sequ.' ,17,'Grant',
19,'Create syn.' ,20,'Drop synonym',
21,'Create view' ,22,'Drop view',
23,'Validate index' ,24,'Create procedure',
25,'Alter procedure' ,26,'Lock table',
42,'Alter session' ,44,'Commit',
45,'Rollback' ,46,'Savepoint',
47,'PL/SQL Exec' ,48,'Set Transaction',
60,'Alter trigger' ,62,'Analyze Table',
63,'Analyze index' ,71,'Create Snapshot Log',
72,'Alter Snapshot Log' ,73,'Drop Snapshot Log',
74,'Create Snapshot' ,75,'Alter Snapshot',
76,'drop Snapshot' ,85,'Truncate table',35,'Alter database',
170,'Call method',182,'Update indexes',114,'Grant role',
0,'No command', '? : '||e.command) nocommand,
e.event
from v$session e
left join
(select y.SID,
TO_CHAR(ROUND(y.value/1024),99999999) UGA_MEMORY
from
v$sesstat y,
v$statname z
where
y.STATISTIC# = z.STATISTIC#
and
NAME = 'session uga memory') a
ON a.sid=e.sid
left join
(select
y.SID,
TO_CHAR(ROUND(y.value/1024),99999999) PGA_MEMORY
from
v$sesstat y, v$statname z
where
y.STATISTIC# = z.STATISTIC#
and
NAME = 'session pga memory') b
on e.sid=b.sid
left join DBA_HIST_SQLTEXT c
on c.sql_id = e.sql_id
--where e.STATUS = 'ACTIVE'
order by
e.status,
a.uga_memory desc;
Rubriky: Admin scripts, Oracle SQL | Komentáře nejsou povolené u textu s názvem Script pro výpis sessions dle využití RAM.

Upload z Excelu do Oracle SQL tabulky

Příklad insertu sedmi sloupců (A-G) do tabulky na SQL.

Pro insert musí být v nastavení VBA povoleno „Microsoft ActiveX Data Objects 6.x Library“

Do sloupce „K“ skript vloží příkaz na INSERT v textové podobě, který se pak v cyklu provádí po jednotlivém řádku.

Je ošetřeno opakované spuštění – smaže předchozí data, pokud jsou vloženy ten samý den.
Jsou vynechány prázdné řádky.
Nakonec se vyčistí sloupec „K“.

----------------
Skript
----------------
Sub upload()

'Musi byt povoleno "Microsoft ActiveX Data Objects 6.0+ Library"

Dim objADO As ADODB.Connection
Dim strSQL
Dim dotaz As String
Dim ConString As String

' Priprava dat
Sheets("Zdroj").Select

Range("K2").FormulaLocal = "=KDYŽ(A2="""";""""; ""INSERT INTO DATA (JEDNA,DVA,TRI,CTYRI,PET,SEST,DATUM_VLOZENI) VALUES ('"" & A2 & ""','""& B2 & ""','""& C2 & ""','""& D2 & ""','""& E2 & ""','""& F2 & ""','"" & KDYŽ(G2="""";HODNOTA.NA.TEXT(DNES();""dd.mm.rrrr"");G2) &""')"")"
Range("K2").Select
Selection.AutoFill Destination:=Range("K2:" & "K" & Range("A" & Rows.Count).End(xlUp).Row)

' Application.Wait Now + TimeValue("00:00:01")

'Smazani predchozich dat - update pri znovuspusteni reportu
Range("K1").FormulaLocal = "=""delete FROM DATA where DATUM_VLOZENI like '""& HODNOTA.NA.TEXT(DNES();""dd.mm.rr"") & ""'"""

' Upload na SQL
Set objADO = CreateObject("ADODB.Connection")
' Rucni dotaz na DB
'objADO.Properties("Prompt") = 2

objADO.Open "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=SERVER; UID=LOGIN; PWD=PASSWORD;"

'SQL spusteni dotazu generovaneho v excelu jako text

pocet = Range("K" & Rows.Count).End(xlUp).Row

For provedeni = 1 To pocet ' prvni radek
dotaz = Sheets("Zdroj").Range("K" & provedeni)
If dotaz <> "" Then
objADO.Execute dotaz

End If
Next provedeni
objADO.Close
Set objADO = Nothing

'Vymaz prikazu
Range("K:K").Clear

End Sub

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Upload z Excelu do Oracle SQL tabulky

Podmínka při počtu hledané hodnoty

If WorksheetFunction.CountIf(Range("F:F"), "VYMAZAT") > 0 Then

'co udělat

endif

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Podmínka při počtu hledané hodnoty

Počet hledané hodnoty ve sloupci

Dim x As Long
x = Range("L" & Rows.Count).End(xlUp).Row
If x < 2 Then x = 1 'Ošetření prázdného sloupce kontrola = Application.WorksheetFunction.CountIf(Range("L1:L" & x), "Not_in_Agenda") endif

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Počet hledané hodnoty ve sloupci

Výmaz netisknutelných znaků – funkce

Function CleanTrim(ByVal S As String, Optional ConvertNonBreakingSpace As Boolean = True) As String
Dim X As Long, CodesToClean As Variant
CodesToClean = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, _
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 129, 141, 143, 144, 157)
If ConvertNonBreakingSpace Then S = Replace(S, Chr(160), " ")
For X = LBound(CodesToClean) To UBound(CodesToClean)
If InStr(S, Chr(CodesToClean(X))) Then S = Replace(S, Chr(CodesToClean(X)), "")
Next
CleanTrim = WorksheetFunction.Trim(S)
End Function

————————-
nebo lze i klasickým způsobem konkrétní znak pomocí vzorce

=PROČISTIT(DOSADIT(A2;ZNAK(9);ZNAK(32))))

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Výmaz netisknutelných znaků – funkce

Ukončení programu v systému – task kill

Sub Test()
If TaskKill("notepad.exe") = 0 Then MsgBox "Terminated" Else MsgBox "Failed"
End Sub

Function TaskKill(sTaskName)
TaskKill = CreateObject("WScript.Shell").Run("taskkill /f /im " & sTaskName, 0, True)
End Function

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Ukončení programu v systému – task kill

Hledání duplicity ve sloupci

=COUNTIF($A$2:$A2;A2)>1

*Roztáhnout vzorec na celý sloupec

Rubriky: Excel notes | Komentáře nejsou povolené u textu s názvem Hledání duplicity ve sloupci

Přizpůsobení velikosti buňky dle obsahu – autofit

Přizpůsobení ve sloupci

ThisWorkbook.Worksheets("List1").Columns("O:O").EntireColumn.AutoFit

Přizpůsobení na listu

ThisWorkbook.Worksheets("List1").Cells.EntireColumn.AutoFit

Přizpůsobení v celém sešitu

For Each sht In ThisWorkbook.Worksheets
sht.Cells.EntireColumn.AutoFit
Next sht

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Přizpůsobení velikosti buňky dle obsahu – autofit

Počet použitých sloupců

Dim currentColumn As Integer
currentColumn = ActiveSheet.UsedRange.Columns.Count

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Počet použitých sloupců

Přidání sloupce

Columns("N:N").Select
Selection.Insert Shift:=xlToRight

Rubriky: Excel notes, VBA | Komentáře nejsou povolené u textu s názvem Přidání sloupce