Like we execute .sql file against SQL, we can write multiple goldengate commands inside a .oby file and execute it against GGSCI prompt using OBEY command.
EXAMPLE:
In the below example, we will add supplemental login(add trandata) for multiple tables using obey command.
1. Create a text file and put goldengate commands.
vi addtran.oby
dblogin USERID ggate, PASSWORD ggate123
add trandata exatree.TEST3
add trandata exatree.TEST4
2. execute obey command from GGSCI
SYNTAX - obey < text_file_name.oby>
ggsci> obey addtran.oby
./ggsci
GGSCI > obey addtran.oby
GGSCI > dblogin USERID ggate, PASSWORD ggate123
Successfully logged into database.
GGSCI > add trandata exatree.TEST3
2017-07-17 11:24:29 WARNING OGG-06439 No unique key is defined for table TEST3.
Logging of supplemental redo data enabled for table EXATREE.TEST3.
TRANDATA for scheduling columns has been added on table 'EXATREE.TEST3'.
TRANDATA for instantiation CSN has been added on table 'EXATREE.TEST3'.
GGSCI 4> add trandata exatree.TEST4
2017-07-17 11:24:33 WARNING OGG-06439 No unique key is defined for table TEST4.
Logging of supplemental redo data enabled for table EXATREE.TEST4.
TRANDATA for scheduling columns has been added on table 'EXATREE.TEST4'.
TRANDATA for instantiation CSN has been added on table 'EXATREE.TEST4'.
We can see, it executed all the commands mentioned inside the text file.
NESTED OBEY:
Can we put one obey file inside another obey file.?? Well this nested obey is controlled by the keyword ALLOWNESTED.
NOALLOWNESTED:
This is the default setting. Any attempt to run nested obey file will throw below error.
ERROR: Nested OBEY scripts not allowed. Use ALLOWNESTED to allow nested scripts.
ALLOWNESTED:
This parameter Enables the use of nested OBEY files. i.e we can use one obey file inside another obey file.
Let-s create two obey files:
--- obey file 1
cat infotran1.oby
dblogin USERID ggate, PASSWORD ggate123
info trandata exatree.TEST3
--- obey file 2
cat infotran2.oby
dblogin USERID ggate, PASSWORD ggate123
info trandata exatree.TEST4
Let-s try with the default one(NOALLOWNESTED)
Here I have created two obey files and put them inside another obey file
cat infotran.oby
obey infotran1.oby
obey infotran2.oby
Execute the obey file
GGSCI > obey infotran1.oby
ERROR: Nested OBEY scripts not allowed. Use ALLOWNESTED to allow nested scripts.
As expected it is throwing error,
Now let-s use ALLOWNESTED parameter:
cat infotran.oby
ALLOWNESTED
obey infotran1.oby
obey infotran2.oby
Execute the obey file:
GGSCI > obey infotran.oby
GGSCI > ALLOWNESTED
Nested OBEY scripts allowed.
GGSCI > obey infotran1.oby
**** Halting script [infotran.oby], starting script [infotran1.oby]...
GGSCI > dblogin USERID ggate, PASSWORD ggate123
Successfully logged into database.
GGSCI > info trandata exatree.TEST3
Logging of supplemental redo log data is enabled for table EXATREE.TEST3.
Columns supplementally logged for table EXATREE.TEST3: CREATED, DATA_OBJECT_ID, EDITION_NAME, GENERATED, LAST_DDL_TIME, NAMESPACE, OBJECT_ID, OBJECT_NAME, OBJECT_TYPE, OWNER, SECONDARY, STATUS, SU
BOBJECT_NAME, TEMPORARY, TIMESTAMP.
Prepared CSN for table EXATREE.TEST3: 11733401025760
GGSCI 6>
GGSCI 6> **** Terminating script [infotran1.oby], resuming script [infotran.oby]...
GGSCI 6> obey infotran2.oby
**** Halting script [infotran.oby], starting script [infotran2.oby]...
GGSCI > dblogin USERID ggate, PASSWORD ggate123
Successfully logged into database.
GGSCI > info trandata exatree.TEST4
Logging of supplemental redo log data is enabled for table EXATREE.TEST4.
Columns supplementally logged for table EXATREE.TEST4: CREATED, DATA_OBJECT_ID, EDITION_NAME, GENERATED, LAST_DDL_TIME, NAMESPACE, OBJECT_ID, OBJECT_NAME, OBJECT_TYPE, OWNER, SECONDARY, STATUS, SU
BOBJECT_NAME, TEMPORARY, TIMESTAMP.
Prepared CSN for table EXATREE.TEST4: 11733401025806
GGSCI >
GGSCI > **** Terminating script [infotran2.oby], resuming script [infotran.oby]...
With ALLOWNESTED, obey file executed successfully. The maximum number of nested levels is 16.
goldengateobey GOLDENGATE