Revert to Manual Control

If you want to manually operate and control TimesTen databases, you can delete the timesten-operator Deployment. This causes the TimesTen Operator to stop. It does not restart. This affects all of the TimesTenClassic objects that are running in your Kubernetes namespace. If you do not want the TimesTen Operator to stop managing all of the TimesTenClassic objects, you can suspend the management of individual TimesTenClassic objects. See About Suspending Management of a TimesTenClassic Object.

A TimesTenClassic object remains in Kubernetes as do other Kubernetes objects associated with the TimesTenClassic object. You can use the kubectl exec -it command to invoke a shell in one or more Pods and you can control Timesten running in those Pods.

If a Pod fails, Kubernetes creates new ones to replace them. This is due to the StatefulSet object that the TimesTen Operator had previously created in Kubernetes. However, since the TimesTen Operator is not running the new Pods, it cannot automatically start TimesTen. In this case, your TimesTen databases cannot be configured or started. You are responsible for the operation of TimesTen in the Pods.

If you want the TimesTen Operator to take control, you must redeploy the Operator. Once the Operator is redeployed, it automatically identifies the TimesTenClassic objects in your Kubernetes cluster and attempts to manage them again.

This example shows you how to manually control TimesTen.

  1. Verify the Operator and the TimesTen databases are running.
    % kubectl get pods
    NAME                                        READY   STATUS    RESTARTS   AGE
    sample-0                                    3/3     Running   0          18h
    sample-1                                    2/3     Running   0          18h
    timesten-operator-5d7dcc7948-pzj58          1/1     Running   0          18h
    
  2. Navigate to the /deploy directory where the operator.yaml resides. (kube_files/deploy, in this example.)
    % cd kube_files/deploy
    
  3. Use the kubectl delete command to delete the Operator. The Operator is stopped and no longer deployed.
    % kubectl delete -f operator.yaml
    deployment.apps "timesten-operator" deleted
    
  4. Verify the Operator is no longer running, but the TimesTen databases are.
    % kubectl get pods
    NAME       READY   STATUS    RESTARTS   AGE
    sample-0   3/3     Running   0          19h
    sample-1   2/3     Running   0          19h
    
  5. Use the kubectl exec -it command to invoke a shell in a Pod that runs TimesTen.
    % kubectl exec -it sample-0 -c tt -- /bin/bash
    Last login: Thu Jan  16 14:30:45 UTC 2025 on pts/0
    
  6. Run the ttStatus utility.
    % ttStatus
    TimesTen status report as of Thu Jan  16 14:36:31 2025
     
    Daemon pid 183 port 6624 instance instance1
    TimesTen server pid 190 started on port 6625
    ------------------------------------------------------------------------
    ------------------------------------------------------------------------
    Data store /tt/home/timesten/datastore/sample
    Daemon pid 183 port 6624 instance instance1
    TimesTen server pid 190 started on port 6625
    There are 20 connections to the data store
    Shared Memory KEY 0x02200bbc ID 32769
    PL/SQL Memory Key 0x03200bbc ID 65538 Address 0x5000000000
    Type            PID     Context            Connection Name             ConnID
    Replication     263     0x00007f99fc0008c0 LOGFORCE:140299698493184      2029
    Replication     263     0x00007f9a040008c0 XLA_PARENT:140300350273280    2031
    Replication     263     0x00007f9a080008c0 REPLISTENER:140300347123456   2030
    Replication     263     0x00007f9a080acd60 RECEIVER:140299429472000      2028
    Replication     263     0x00007f9a0c0008c0 FAILOVER:140300353423104      2032
    Replication     263     0x00007f9a2c0009b0 TRANSMITTER(M):140299695343360 2034
    Replication     263     0x00007f9a300008c0 REPHOLD:140300356572928        2033
    Subdaemon       187     0x00000000023365b0 Manager                        2047
    Subdaemon       187     0x00000000023b57f0 Rollback                       2046
    Subdaemon       187     0x0000000002432cf0 Log Marker                     2041
    Subdaemon       187     0x000000000244fc00 Garbage Collector              2035
    Subdaemon       187     0x00007f90c80008c0 Aging                          2038
    Subdaemon       187     0x00007f90d00008c0 Deadlock Detector              2044
    Subdaemon       187     0x00007f90d001d7d0 HistGC                         2039
    Subdaemon       187     0x00007f90d40008c0 Checkpoint                     2042
    Subdaemon       187     0x00007f90d401d7d0 AsyncMV                        2036
    Subdaemon       187     0x00007f90d80008c0 Monitor                        2043
    Subdaemon       187     0x00007f90f808b360 IndexGC                        2037
    Subdaemon       187     0x00007f90fc0008c0 Flusher                        2045
    Subdaemon       187     0x00007f910004efd0 XactId Rollback                2040
    Open for user connections
    RAM residence policy: Always
    Replication policy  : Manual
    Replication agent is running.
    Cache Agent policy  : Manual
    PL/SQL enabled.
    ------------------------------------------------------------------------
    Accessible by group timesten
    End of report
    
  7. Run the ttIsql utility to connect to the sample database and perform various operations.
    % ttIsql sample
     
    Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
     
     
     
    connect "DSN=sample";
    Connection successful: 
    DSN=sample;UID=timesten;DataStore=/tt/home/timesten/datastore/sample;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=200;
    DDLReplicationLevel=3;
    (Default setting AutoCommit=1)
    Command> describe sampleuser.emp;
     
    Table SAMPLEUSER.EMP:
      Columns:
       *ID                              NUMBER NOT NULL
        NAME                            CHAR (32)
     
    1 table found.
    (primary key columns are indicated with *)
    
    Command> INSERT INTO sampleuser.emp VALUES (1,'This is a test.');
    1 row inserted.
    Command> SELECT * FROM sampleuser.emp;
    < 1, This is a test.                  >
    1 row found.