Sayfalar

19 Mart 2019 Salı

unix de büyük yada coklu dosyalarda ilk satırları silme

Delete first and (OR) last line on files(s)


aşağıdaki gibi verimiz olsun

K|ACTCTTT|TXEC|123|TEMPCOLUMN|COLUMN|
18494002|448|1208004|1
18493007|228|1208004|1
ASDFTT|234342
 
<><>BU komutla ilk ve son satrıları silebiliriz.
sed '$d' > file1.txt | sed "1d"
 
<><>bu komutlada coklu dosyalarda çalıştırabilirsiniz.ilk satırı siler.
  for f in  *.txt ;do sed '1d' $f > tmpfile; mv tmpfile $f;done
 
<><>Çoklu dosyalarda baştan iki satır silinecekse
 for f in  *.txt ;do sed '1,2d' $f > tmpfile; mv tmpfile $f;done
 
 
unix,aix,linux,sed,multiplefiles 

18 Mart 2019 Pazartesi

power shell yada cmd ekranında dummy file oluşturma

windowsta bazen istediğimiz kadar büyüklükte bir dosya create etmek isteriz. Bunu komutlarla cok rahat yapabiliriz.


önce istediğimiz dizine aşağıdaki komutla gidiyoruz.
C:\>cd /d Z:\

 Z:\>cd DENEMEFILE

35 bytle lık dummy adında bir dosya oluşturur.
Z:\DENEMEFILE>fsutil file createnew dummy 35

14 Şubat 2019 Perşembe

AlwaysOndan çıkarılmış database'i second (ikinci) note da AlwayOn'a alma

Merhabalar,

Eğer Database'iniz daha önceden ikinci yada diğer notlarda ise çıkartmışsanız yada bir şekilde AlwaysOn listenerdan cıkarmışsanız. Aşağıdaki adımlarla ve benim gibi görsel değilde komutlarla çalışmaya alışmışsanız hızlı bir şekilde alwayson'a alabilirsiniz..


1Adım:
A) eğer Dblerinizin sürekli full ve log backupları alınıyorsa aşağıdaki komutla backuplarınız alındığı pathleri çıkarın..

SELECT          physical_device_name,
                backup_start_date,
                backup_finish_date,
                backup_size/1024.0 AS BackupSizeKB
FROM msdb.dbo.backupset b
JOIN msdb.dbo.backupmediafamily m ON b.media_set_id = m.media_set_id
WHERE database_name = 'DATABASE_NAME'
ORDER BY backup_finish_date DESC
 
 Çıkan sonuc ".bak" ile biten dosya pathlerinden itibaren full backuptan sıra ile yukarıya restore edilecek(şuanki zamana kadar alınan backupları).
  
B)Eğer hazırda backupınız yoksa bu komutlarla full ve log backuplar alınır..(ilk note da çalıştırılacak.)
BACKUP DATABASE DATABASE_NAME 
   FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME.bak'
WITH COPY_ONLY;
GO

BACKUP LOG DATABASE_NAME 
   FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME.trn'
WITH COPY_ONLY;
GO

2Adım: ikinci notda çalıştırılacak restore işlemleri(elimizde backuplar var şimdi eşitlemeye geldi)
RESTORE DATABASE DATABASE_NAME 
   FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME.bak' 
  WITH NORECOVERY, REPLACE, 
   MOVE 'vdk' TO 'W:\DATA\DATABASE_NAME.mdf',
   MOVE 'vdk_log' TO 'X:\LOG\DATABASE_NAME_log.ldf';
GO

RESTORE LOG DATABASE_NAME 
   FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME4.trn' WITH NORECOVERY;
GO
   
RESTORE LOG DATABASE_NAME 
   FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME3.trn' WITH NORECOVERY;
GO
RESTORE LOG DATABASE_NAME 
   FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME2.trn' WITH NORECOVERY;
GO
RESTORE LOG DATABASE_NAME 
   FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME1.trn' WITH NORECOVERY;
GO


3ADIM:Eşitleme tamamlandı şimdi sıra lsn'eri eşitlemek kaldı..
--->>eğer daha önce hiç gruba alınmadısya alttaki komuıtla gruba alabilirsin.
  ALTER AVAILABILITY GROUP [AO_GROUPNAME] ADD DATABASE [DATABASE_NAME]
go

--gruba alınmışsa zaten aşagıdaki komutla eşitlemeyi başlatabilir ve AlwaysOna alabilirsin.
ALTER DATABASE [vdk] SET HADR AVAILABILITY GROUP = AO_GROUPNAME;
go
 
4.ADIM:Eğer backupı alınmış db içeriğine bakmak istersen  aşağıdaki komutla detaylarını listeleyebilirsin.
RESTORE FILELISTONLY FROM DISK = '\\10.10.10.12\backupfile\DATABASE_NAME1.bak'


MSSQL,SQL,SQL SERVER, SQL BACKUP, ALWAYSON

2 Ocak 2018 Salı

Sybase ASE Load ve Drop database hatası ve kısır döngü

Merhabalar,
Diyelimki VeriTabanı Load işleminde bu şekilde bir hata aldınız.

The log segment in the target database % is too small (% MB) to accommodate the log segment from the dumped database (% MB)

sizden LogSegmentin az yada cok olduğuınu söylüyor. bu durumda disk resize ederek sorunu aşağıdaki şekilde çözebilirsiniz
 eğer hatada 15MegaByte'a ihtiyaç varsa aşağıdaki şekilde ekstra '15M' eklenebilirEğer GigaByte ise GigaByte eklenebilir '45G'

1> disk resize name='VT_log01', size= "15M"
2> go
1> alter database TEST_DB log on VT_log01 = "15M"
2> go

çalıştırdınız ama hata aldınız. Ne diyor.

An attempt was made to fetch logical page '%' from cache 'default data cache'. Page belongs to database '%' (12), object 'sysdepends' (12), index 'csysdepends' (2), partition 'csysdepends_12' (12) and not to database '%' (12), object 'sysreferences' (16), index 'sysreferences' (0), partition 'sysreferences_16' (16).
 


bu hatanın birçok sebebi olabilir. bunlardan biri de Dtabase Load ederken sizin tarafınızdan load işlemin kesilmesi yada bi şekilde kesilmiş olması. yani load tamamlanmadan load işlem kesildi ise bu hatayı alabilirsiniz.

yapmamız gereken. Database'i drop edip tekrardan create etmemiz.


1>drop database TEST_DB

 dedik. :)  Ancak bunda da hata alıyoruz.

An attempt was made to fetch logical page '%' from cache 'default data cache'. Page belongs to database '%' (12), object 'sysdepends' (12), index 'csysdepends' (2), partition 'csysdepends_12' (12) and not to database '%' (12), object 'sysreferences' (16), index 'sysreferences' (0), partition 'sysreferences_16' (16).

 

 VeriTabanına ve disklerine zaten erişemiyoruz ki. Nasıl drop edelim.
Ozaman bizde VeriTabanını Repair yaparız.

 dbcc dbrepair(TEST_DB,dropdb)
  go


 Database 'ebyn_arc' is not marked suspect. You cannot drop it with DBCC

yine hata verdi. Benim daha önceden işaretleme yaptığım  birşey yok. bunu yapamazsın diyor.

O zman bizde Kısır döngüye giriyoruz. burada çıkmaz yoldayız. ne yapacağız.
Öncelikle sistem databaselerinin update yetkisini açacağız.

 sp_configure "allow updates", 1
 go 


daha sonra database in statusunu değiştireceğiz. sonra sistem databaselerine erişimi kapatacağız. bunu yaparken sa logini ile yapmanız gerekmektedir.


  1> use master 
  2> go
  1> begin transaction
  2> update sysdatabases set status = 320
  3> where name = 'TEST_DB'
  4> go 
 
 kontorl edin gerçekten 1 tane mi kayıt etkilendi. sonra commitlemeyi yapın

  1> commit transaction
  2> go


 daha sonra sistem database erişimi kaldırın.

     1> sp_configure "allow updates", 0
      2> go


sonra VeriTabanı instance ını kapatıyoruz tekrar açıyoruz.

   1> shutdown with nowait
  2> go


kapattıktan sonra tekrar açmayı Unix/Linux sistemlerde komutla windows sistemlerde servislerden açıyorsunuz.

daha sonra  dbccrepair komutu ile databasei kaldırıyoruz.

1> dbcc dbrepair(TEST_DB,dropdb)
2> go

bundan sonrası artık size kalmış. VeriTabanını tekrardan create edeceksiniz.

iyi şanslar.

5 Aralık 2017 Salı

Fiziksel Okuma ve Mantıksal Okuma (Physical read and Logical read)

Soru —  Vt'lerde Fiziksel okuma ve mantıksal okuma arasındaki fark nedir?

Cevap:

 — Fiziksel Okuma Diskten okunan sayfa(Page)lar olarak tanımlanır.

 — Mantıksal Okuma Bellekten okunan sayfa(Page)lar olarak tanımlanır. (RAM/cache).

17 Mart 2017 Cuma

BACKUP detected corruption in the database log hatası

Veri Tabanlarınızdan birinde eğer log corruption olmuşsa aşağıdaki yöntemi uygulayabilirsiniz.

 hata

BACKUP detected corruption in the database log. Check the errorlog for more information.
 Msg: 3049, Level: 16, State: 1, Procedure: , Line: 1

>[Error] Script lines: 1-2 --------------------------
 BACKUP DATABASE is terminating abnormally.
 Msg: 3013, Level: 16, State: 1, Procedure: , Line: 1



çözüm
  trun back-up' ı alıyoruz CONTINUE_AFTER_ERROR option'u ile

BACKUP LOG [MyDb]
 TO  DISK = N'C:\\MyDb.trn'
 WITH NOFORMAT, NOINIT, NAME = N'MyDb', SKIP, NOREWIND,
 NOUNLOAD, COMPRESSION, STATS = 10, NO_CHECKSUM, CONTINUE_AFTER_ERROR
 GO



 sonra full back-up alarak devam edebilirsiniz her ihtimale karşı elimizde bulunsun

BACKUP DATABASE [MyDb] TO  DISK = N'C:\\MyDb.bak' WITH NOFORMAT, NOINIT,  NAME = N'VDK-DRIVE', SKIP, REWIND, NOUNLOAD,  STATS = 10
 



kolay gelsin..

10 Mart 2017 Cuma

ubuntuda windows alanı mount etme (mounting windows share on ubuntu )

öncelikle cifs ' i yükleyeceğiz

# sudo apt-get install cifs-utils


 linuxde id komutu ile group ve user id kodunu bulun(büyük ihtimal ikisi de 1000 dir)

#id


şimdi mount komutunu çalıştırabiliriz.

# sudo mount //WINSRV/SHARE -t cifs -o uid=1000,gid=1000,username=winuser /mnt/path

örnek:
#sudo mount //10.1.2.3/share -t cifs -o uid=1000,gid=1000,username=IBRAHIMPEKTAS,domain=BIM  /mnt/share
 bu kadar



:)