A jeśli chcszesz się sprawdzić w IBM:
Oferta pracy w IBM
Linux: Fedora Core 23: Jak wyłączyć protokół IPv6
Koniec końców musiało się to stać. Trafiłem na aplikację, która łączy się do serwera z wykorzystaniem protokołu IPv6, z tym tylko, że serwer takiego połączenia nie akceptuje. Konkretnie mam tutaj na myśli serwer Sybase ASE, dla którego klientem jest jest instalator Job Schedulera (srvbuild).
Podczas instalacji Job Schedulera dostawałem komunikat o błędzie:
jst_svr_update_statistics: 100% complete.
Installing SybBackupDbToDiskTemplate.xml in the SAP Adaptive Server
Enterprise...
Task failed
----------------------------------------------------------------
W E L C O M E T O
TemplateImport Utility [version 1.11] Mar 9, 2016 8:11:51 PM
Runtime Switches:
TemplateImport Properties:
Server_Machine_Name: localhost
Server_Name: SAP1
Server_Port: 5000
Template_Description_Override: Dumps specified database(s).
Template_Group_Path_Override: Backups
Template_Language: en
Template_Name_Override: Backup Database to Disk Template
Template_Version_Override: 3.1
Template_XML_File: /opt/sap/ASE-16_0/jobscheduler/Templates/xml/en/SybBackupDbToDiskTemplate.xml
----------------------------------------------------------------
Reading XML File: /opt/sap/ASE-16_0/jobscheduler/Templates/xml/en/SybBackupDbToDiskTemplate.xml
XML File Read Completed Successfully
Creating Initial Template Record
SQLException: JZ006: Caught IOException: java.net.ConnectException: Connection refused (port 5000 to address ::ffff:127.0.0.1 (localhost))
SQLException during getConnection: java.sql.SQLException: JZ006: Caught IOException: java.net.ConnectException:
Connection refused (port 5000 to address ::ffff:127.0.0.1 (localhost))
Exception : SQLException when trying to connect.
SQL: Indeksacja dużej tabeli
Chyba niestety dość częsty scenariusz…. Duża baza, no cóż zdarza się. W dużej bazie duża tabela – no cóż bywa. I oprócz tego… prawie nic więcej. Tak jakby ktoś pozbierał wszystkie excele z firmy i zapisał je w bazie. Niestety jedyny indeks w tabeli się pofragmentował. Nie ma problemu, trzeba uruchomić reindeksację. Ale o reindeksacji dużych obiektów wiadomo:
Indexes with more than 128 extents are rebuilt in two separate phases: logical and physical. In the logical phase, the existing allocation units used by the index are marked for deallocation, the data rows are copied and sorted, then moved to new allocation units created to store the rebuilt index. In the physical phase, the allocation units previously marked for deallocation are physically dropped in short transactions that happen in the background, and do not require many locks.
(https://technet.microsoft.com/en-us/library/ms189858(v=sql.110).aspx)
Ile więc potrzeba miejsca na reindeksację? Jeśli nie masz ochoty czytać dalej, to mniej więcej tyle samo, co reindeksowany obiekt aktualnie zajmuje. A właściwie to trochę więcej, dajmy na to 120%. Podczas reindeksowania można posłużyć się opcją SORT_IN_TEMPDB, która ma pewien wpływ na ilość potrzebnego miejsca. Jednak opcja ta nie spowoduje, że miejsce jest potrzebne tylko w temp! Nadal potrzebujesz miejsca w bazie. Nie pomoże również dostępna w edycji ENTERPRISE opcja ONLINE. Będzie nawet trochę gorzej, bo opccja online powoduje, że SQL gwarantuje możliwość korzystania z indeksu podczas reindeksacji. Potrzebuje więc, aby zbudować dodatkową tabelę mapującą, która pozwoli odpowiadać na zapytania użytkowników podczas indeksowania.
A teraz już dokładniej:
- żeby zindeksować 10 GB musisz obok istniejącego indeksu stworzyć jego kopię. Jeśli kopia jest tworzona z FILL FACTOR 80% to do rozmiaru trzeba dorzucić 20%
- podczas budowania indeksu dane są roboczo sortowane i tu mamy 2 przypadki:
- Nie było opcji SORT_IN_TEMPDB – wtedy te dodatkowe obiekty są tworzone w bieżącej bazie. Ilość miejsca jest zależna od wielkości klucza podstawowego. Za to w tym scenariuszu tempdb nie cierpi
- Była opcja SORT_IN_TEMPDB – wtedy nowy indeks powstaje i tak w oryginalnej bazie danych, co łącznie z FILL FACTOR znowu sprowadza nas do 120% wielkości indeksu. Jednak dane robocze są sortowane w tempdb, a jeśli wydajnie skonfigurowano tempdb (jako oddzielny szybki napęd), to takie indeksowanie skończy się trochę szybciej. Niestety tempdb potrzebuje teraz więcej miejsca i jest dociążone. Użycie tej opcji spowoduje więc, że sumarycznie będzie potrzebne jeszcze więcej miejsca na dysku.
- Jeśli korzystasz z edycji ENTERPRISE i decydujesz się skorzystać z opcji ONLINE, to płacisz za to znowu dodatkowym miejscem.
Artykuł https://technet.microsoft.com/en-us/library/ms191183(v=sql.105).aspx analizuje te przypadki o wiele dokładniej. Dla mnie wniosek jest jeden. W przypadku takich baz i takich tabel, zasada, która będzie zakłądać, że w każdej bazie danych mam mieć co najmniej (czytaj około) 20% wolnego miejsca, bierze w łeb. W normalnym życiu bazy, 20% zapasu wystarczy, ale przy reindeksacji, potrzeba będzie około 1.5 raza tyle co największy obiekt….
Polecam też: https://blogs.msdn.microsoft.com/sqlserverstorageengine/2007/01/24/checkdb-part-7-how-long-will-checkdb-take-to-run/
Zmiana cenników kursów na Udemy
Wszystko się kiedyś kończy…
Od 1 IV wzrasta cena szkolenia „Powershell dla administratorów” na Udemy. Kursy będą miały odgórnie ustaloną cenę i niestety taniej nie będzie. Dlatego jeżeli chcesz skorzystać z ostatniej chwili, to korzystając z kuponu „STARACENA” możesz obniżyć sobie cenę do 10$.
Nie trać czasu…
Powershell dla administratora Windows – kompletny kurs
Kurs wprowadzający w jezyk skryptowy, pozwalający Ci na samodzielną automatyzację Windows. Zaczyna się od całkowitych podstaw, a kończy na zaawansowanych zastosowaniach powershella w administracji. Tylko do końca marca w promocyjnej cenie 10 $ z kodem STARACENA
SQL Server wprowadzenie. Instalacja narzędzia. Exam 70-461
Szkoła podstawowa SQL. Pierwszy kurs z serii kursów przygotowujących do egzaminu 70-461. Przedstawia, jak zainstalować SQL server w podstawowej konfiguracji, jak wgrać przykładową bazę danych oraz jak z nią pracować. Są to konieczne podstawy, do pełnego udziału w dalszych kursach serii.
Linux: Jaki mam adres IP
Prosta rzecz, a nie wiedziałem. Jak sprawdzić jaki mam adres ip, czyli taki odpowiednik ipconfig z Windows:
ip addr show
[sybase@localhost log]$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:15:5d:01:6e:04 brd ff:ff:ff:ff:ff:ff inet 192.168.1.104/24 brd 192.168.1.255 scope global dynamic eth0 valid_lft 78732sec preferred_lft 78732sec inet6 fe80::215:5dff:fe01:6e04/64 scope link valid_lft forever preferred_lft forever
SQL: Gdy śmierć patrzy ci w oczy
Brzmi groźnie? Śmierć w SQL to DEADLOCK. No więc, co masz zrobić biedny adminie, kiedy uruchamiasz swoje polecenie, które jest oczywiście najważniejsze na świecie, a SQL serwer powiada Ci na to „you have been chosen as a deadlock victim”?
Spróbuj tego:
SET DEADLOCK_PRIORITY HIGH
Mi to życie uratowało 😉
Powershell: Uruchomić proces i poczekać aż się skończy
Skrypty powershellowe są często używane do automatyzacji instalacji oprogramowania na serwerach. Podczas tej instalacji często spotyka się 3 główne kroki:
1. Przygotowanie instalacji, np sprawdzenie czy są obecne inne wymagane komponenty, czy jest wystarczająca ilość miejsca na dysku, czy są odpowienie foldery itp. Na tym etapie również często przekoiowujemy na serwer binaria instalacyjne
2. Właściwa instalacja programu – zazwyczaj uruchomienie batch-a instalacyjnego lub programu setup.exe z odpowienimi parametrami
3. Czynności poinstalacyjne, jak np.: usunięcie plików instalacyjnych, uruchomienie usług, konfiguracja zainstalowanego programu itp.
O ile przejście od kroku pierwszego do drugiego jest proste, bo po wykonaniu wszystkich zadań z kroku 1 przechodzisz po prostu do kroku 2, o tyle moment w którym należy wykonać krok 3 nie jest już taki oczywisty. Krok ten należy wykonać dopiero po zakończeniu pracy instalatora, który nie jest twoim skryptem, ale raczej zewnętrznym programem.
I tu przychodzi z pomocą parametr -Wait, który można używać wraz z poleceniem Start-Process:
Start-Process -FilePath "notepad.exe" -PassThru -Wait
Powyższa instrukcja uruchamia notatnik, ale skrypt zatrzyma się do momentu zakończenia naotatnika. Gdyby to polecenie uruchamiać bez przełącznika -Wait, to proces notatnika również się uruchomi, ale zaraz potem, mimo tego, że notatnik nadal działa, skrypt będzie kontynuwał pracę. Czytaj dalej »