Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)
Showing posts with label log. Show all posts
Showing posts with label log. Show all posts

SAP RS - The transaction log in database RSSD is almost full

What happened?
Error when trying to start SAP Replication Server.

Error Message:
E. 2020/12/14 21:39:52. ERROR #11061 GLOBAL RS(GLOBAL RS) - generic\sts\stscol.c(2631)
Check the log for error messages from RSSD.
I. 2020/12/14 21:39:52. Message from server: Message: 7415, State 1, Severity 10 -- 'The transaction log in database RS1_RSSD is almost full. Your transaction is being suspended until space is made available in the log.

Reason:
Cause of the error: The transaction lof of the RSSD database is (almost) full.

Solution:
use master
go

sp_helpdb RS1_RSSD  --a check
sp_helpdevice rssd_log --a check

disk resize name = "rssd_log", size = "1500M"
go

alter database RS1_RSSD log on rssd_log = "1500M"
go

MySQL - Find where the error log is stored

mysql> SHOW VARIABLES LIKE 'log_error’;

SAP RS: Can't connect to RS but can connect to ASE in the same server

What happened?
Can't connect to RS but can connect to ASE in the same server:

C:\SAPRS>isql64 -S RSSERVERNAME -Usa -Ppassword
CT-LIBRARY error:
        ct_connect(): user api layer: internal Client Library error: Read from the server has timed out.
CT-LIBRARY error:
        ct_connect(): network packet layer: internal net library error: Net-lib operation timed out

C:\SAPRS>isql64 -S ASESERVERNAME -Usa -Ppassword
1>

Error message:
Check in the RS log:

I. 2020/04/22 20:34:47. Check the log for error messages from RSSD.
I. 2020/04/22 20:34:47. Message from server: Message: 7412, State 2, Severity 10 -- 'Space available in the log segment has fallen critically low in database 'RS_RSSD'.  All future modifications to this database will be suspended until the log is successfully dumped and space becomes available..

Cause: 
Log space of the RSSD database (of the RS) is full.
Check it using:

sp_helpdb <RSSDNAME>
sp_helpdevice <RSSDLOGDEVICENAME>

Solution:
Add space to the RSSD log:
http://copypastenet.blogspot.com/2020/01/sap-ase-sybase-transaction-log-in.html

SAP ASE (Sybase) - write to the server log - logprint

dbcc logprint('itai test errorlog')
-- will be written with severity=0
or:

sp_addmessage 20002, 'itai test sp_addmessage with_log'
raiserror 20002
-- will be written with severity=0

or:

sp_addmessage 20002, 'itai test sp_addmessage with_log', @with_log=TRUE
raiserror 20002
-- will be written with severity=16

or with parameters:
sp_addmessage 20003, 'itai %1! sp_addmessage with parameters', @with_log=TRUE
raiserror 20003, 'parameter'
-- will be written with severity=16

WITH (TABLOCK) - Minimal logging while insert

In order to improve performance for an insert statement,
We can consider use WITH (TABLOCK) option:

INSERT INTO dbo.testItai WITH (TABLOCK) (id, NAME) SELECT ...

Whet it will do is to minimize the writes to the log.

Try it:
Run insertion statement with and without the TABLOCK and check the log:

INSERT INTO dbo.testItai (id, NAME)
SELECT TOP 5000 ABS(CHECKSUM(NEWID())) % 100,
       char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) +char(65+ ABS(CHECKSUM(NEWID())) % 26)
FROM master..sysobjects a cross join master..sysobjects b

INSERT INTO dbo.testItai WITH (TABLOCK) (id, NAME)
SELECT TOP 5000 ABS(CHECKSUM(NEWID())) % 100,
       char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) + char(65+ ABS(CHECKSUM(NEWID())) % 26) +char(65+ ABS(CHECKSUM(NEWID())) % 26)
FROM master..sysobjects a cross join master..sysobjects b 

Check the log using
select * from fn_dblog(null, null)

You will see that after the insertion without the TABLOCK 5000 records will be written in the log, and much less with the TABLOCK.

WITH (TABLOCK) has few constraints:
1. The destination table must be empty or without clustered index.
2. There is no non-clustered index on the destination table.

fn_dblog - display the log file

fn_dblog is an undocumented SQL function that display the log file.


select * from fn_dblog(null, null)

  1. The first parameter is the starting log sequence number. NULL = from the first number.
  2. The second parameter is the ending log sequence number. NULL = to the last number.


  • Read more about Reading Transaction Log File here: