Tuesday, August 19, 2014
Thursday, July 31, 2014
Jenkins Installation in Weblogic
I tried installing Jenkins (1.574) into Weblogic 10.3.6 server. I tried following steps
https://wiki.jenkins-ci.org/display/JENKINS/Weblogic but with no luck.
Changed the weblogic.xml to include couple more packages, and also added -Djava.awt.headless=true to the the Server Startup options in the weblogic console. You can download the war from below link.
Weblogic 10.3.6 ready Jenkin 1.574
Wednesday, July 16, 2014
Getting file with SMB Protocol
Get the jcifs jars from below sites..
http://mvnrepository.com/artifact/jcifs/jcifs
http://jcifs.samba.org/
If anyone wants info regarding SMB,
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365233(v=vs.85).aspx
https://www.samba.org/cifs/docs/what-is-smb.html
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
public class SMBFileReader {
private String USER_NAME = null;
private String PASSWORD = null;
private String DOMAIN = null;
private String NETWORK_FOLDER = null;
public boolean getFile(String fileName) throws Exception{
boolean successful = false;
String path = null;
NtlmPasswordAuthentication auth = null;
SmbFile sFile = null;
SmbFileOutputStream sfos = null;
try {
USER_NAME = "xyz";
PASSWORD = "****";
DOMAIN = "cswg.com";
NETWORK_FOLDER = "smb://optmsdb03/WDGMD/Orders/";
auth = new NtlmPasswordAuthentication(
DOMAIN, USER_NAME, PASSWORD);
path = NETWORK_FOLDER + fileName;
sFile = new SmbFile(path, auth);
SmbFileInputStream in = new SmbFileInputStream( sFile);
FileOutputStream out = new FileOutputStream("C:/data/test_200.txt");
byte[] b = new byte[8192];
int n, tot = 0;
long t1 = 0;
while(( n = in.read( b )) > 0 ) {
out.write( b, 0, n );
tot += n;
}
in.close();
out.close();
successful = true;
Log.logger("File successfully created.", "info");
} catch (Exception e) {
successful = false;
Log.logger("Unable to create file. Cause: "
+ e.getMessage(), "error");
throw e;
}
return successful;
}
}
Tuesday, July 15, 2014
Oracle Database Advanced Queue (AQ)
Grants:
For a oracle db user, to create queues, queue tables, listen onto the AQ's and consume messages and to send messages to AQ, the below grants need to be assigned.
GRANT AQ_ADMINISTRATOR_ROLE, AQ_USER_ROLE TO srini;
GRANT EXECUTE ON DBMS_AQADM TO srini;
GRANT EXECUTE ON DBMS_AQ TO srini;
GRANT EXECUTE ON DBMS_LOB TO srini;
GRANT EXECUTE ON DBMS_AQIN TO srini;
GRANT EXECUTE ON DBMS_AQJMS TO srini;
GRANT EXECUTE ON DBMS_JMS_PLSQL TO srini;
More to follow on this topic...
Wednesday, July 2, 2014
IBM MQSeries
http://www.ibm.com/developerworks/websphere/library/techarticles/0602_currie/0602_currie.html
Copying here for future purposes(original above)...
Introducing message groups
IBM® WebSphere® MQ cannot always guarantee the ordering of messages between a sending and receiving application. If three messages are sent in the orderA B C, they may not arrive in that same order if, for example, the intervening network distributes the messages across a cluster and then recombines them. But what if message order is vital to the functioning of the application?
Imagine a scenario in which message B tells the application to ignore the previous message.
The meaning of the sequence would then be very different if the messages arrived in the order C B A.WebSphere MQ addresses this issue through message grouping. The originating application can specify that it is sending messages
A, B and C as part of a group.
Each message in the group is assigned a sequence number starting at 1. The receiving application can then specify that it wishes to receive the messages
in this logical order, as opposed to the physical order in which the messages arrive at a destination. Now, even if message B or C arrives first, they will not be passed to the application immediately because they do not have sequence number 1.Message groups can serve another purpose. Sometimes, message order may not matter, but it may be important that a collection of messages are processed together, both spatially and temporally. For example, consider an application that sends a message each time an item is added to an online shopping cart. The items in the shopping cart may need to be processed together, perhaps to aggregate them into a single order message. You could manage this aggregation by placing the messages in a message group. The recipient of the messages can specify that they do not want to receive any of the messages in the group until all of them have arrived at the destination. In this scenario, it is also important that all of the messages are received in the same place. If, for scalability reasons, there are multiple consumers at the destination, it is vital that all messages representing items in the same order are delivered to the same consumer, and message groups can ensure that this happens.
The concept of message groups is distinct from that of message segmentation, which means that a large message has been broken down into smaller messages on sending and should be re-assembled into the original message upon receipt. Each of the entities in a message group is an entire message. You can break down the messages within a message group using message segmentation, but we will not consider that option in this article.
Using the WebSphere MQ Java API
Exception handling
To improve clarity, exception handling logic has been removed from the code listings in this article. For the example classes containing the complete code, see the Download section.Sending a message group
Listing 1 below illustrates the code required to use the WebSphere MQ Java API to send a group of five messages to the queuedefault on the queue manager QM_host:Listing 1. Sending a message group using the WebSphere MQ Java API
MQQueueManager queueManager = new MQQueueManager("QM_host");
MQQueue queue = queueManager.accessQueue("default", MQC.MQOO_OUTPUT);
MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_LOGICAL_ORDER;
for (int i = 1; i <= 5; i++) {
MQMessage message = new MQMessage();
message.format = "MQSTR";
message.writeString("Message " + i);
if (i < 5) {
message.messageFlags = MQC.MQMF_MSG_IN_GROUP;
} else {
message.messageFlags = MQC.MQMF_LAST_MSG_IN_GROUP;
}
queue.put(message, pmo);
}
queue.close();
queueManager.disconnect();
MQPMO_LOGICAL_ORDER is added to the put message options.
This value indicates to the queue manager that the application is going to put each of the messages in the group in sequential order
and that all of the messages in one group will be put by this client before any of the messages in the next.The code then loops five times, putting a new message on each occasion. (The message format is set to
MQSTR so that we may later receive the messages as JMS text messages.) For the first four messages, the message flag MQMF_MSG_IN_GROUP is set to indicate that the message should be part of the current group.
The fifth message has the message flag MQMF_LAST_MSG_IN_GROUP set to indicate that it is the final message in the group.
The next time a message is put with the MQMF_MSG_IN_GROUP flag, a new group will automatically be started.The example ends by closing the queue handle and disconnecting from the queue manager. Having run this code, Figure 1 below illustrates the result of browsing the group of messages using WebSphere MQ Explorer:
Figure 1. Browsing the message group in WebSphere MQ Explorer

Each of the messages has been allocated the same 24-byte group identifier along with a logical sequence number running from 1 through 5.
The use of the
MQPMO_LOGICAL_ORDER put message option is purely for convenience. It is possible for an application
to not use this flag and to set the group identifier and sequence numbers explicitly, which may be necessary if messages are to be sent out of order
or interleaved with other message groups. The message flags should still be set to indicate that a message is in a group and whether it is the last message.
Another scenario where this may be useful is if the messages in a group are spread over a long period of time.
An application may send the first few messages in a group using logical message ordering, after which the system fails.
When the application restarts, it can continue with the message group by sending the next message without logical ordering and explicitly set the group identifier to be the one used for the earlier messages along with the next sequence identifier. At this point, it may switch back to using logical message ordering for the subsequent messages. The queue manager will then continue to use the same group identifier and increment the sequence number each time.You can combine the use of message groups with transactions. If the first message is put under a transaction, then all of the other messages must be put under a transaction if they use the same queue handle. However, each message does not need to be in the same transaction.
Receiving a message group
Having sent our messages in a group, we now want to receive them again in the same order. Listing 2 below gives an example of how to do this using the WebSphere MQ Java API:Listing 2. Receiving a message group using the WebSphere MQ Java API
MQQueueManager queueManager = new MQQueueManager("QM_host");
MQQueue queue = queueManager.accessQueue("default", MQC.MQOO_INPUT_AS_Q_DEF);
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = MQC.MQGMO_LOGICAL_ORDER | MQC.MQGMO_ALL_MSGS_AVAILABLE;
gmo.matchOptions = MQC.MQMO_NONE;
MQMessage message = new MQMessage();
do {
queue.get(message, gmo);
int dataLength = retrievedMessage.getDataLength();
System.out.println(message.readStringOfCharLength(dataLength));
gmo.matchOptions = MQC.MQMO_MATCH_GROUP_ID;
} while (gmo.groupStatus != MQC.MQGS_LAST_MSG_IN_GROUP);
queue.close();
queueManager.disconnect();
MQGMO_LOGICAL_ORDER indicates that we wish to receive the messages in logical order, in other words, the message with sequence number 1 should be received first, then number 2, and so on. The second option,
MQGMO_ALL_MSGS_AVAILABLE, indicates that we don't wish to receive any messages in a group until all of the messages are available.
This option prevents us from starting to process messages in a group only to discover that subsequent messages haven't been sent yet, let alone arrived.For the first
get, we specify that no match options are required -- we are prepared to receive the first message in any group.
For subsequent iterations, we specify the MQMO_MATCH_GROUP_ID option, which indicates that we only wish to receive a message
with a matching group identifier. We reuse the same message object for each iteration and consequently, for the second get, it will contain the group identifier
of the first message received. Each get updates the group status field of the get message options.
When it is set to MQGS_LAST_MSG_IN_GROUP, we know that we have received all of the messages in the group.As in the previous listing, be sure to clean up on completion by closing the queue handle and disconnecting from the queue manager.
Using the WebSphere MQ JMS API
Specification versions
The JMS examples in this article use the unified domain interfaces from JMS 1.1. However, they could be rewritten to use the point-to-point or publish-subscribe interfaces available with earlier versions of WebSphere MQ JMS. Similarly, the MDB example available in the Download section could be made to work in a J2EE 1.3 application server by using an EJB 2.0 deployment descriptor and the JMS 1.0.2b interfaces.JMSXGroupID and JMSXGroupSeq,
and specifies that they represent the identity of the group a message is part of, and the sequence number within that group. The JMS specification does not, however, provide any support for using these properties.
All is not lost though -- with a few workarounds, we can still replicate our existing behavior using these properties.Sending a message group
Let's start by looking at the sending application. As mentioned above, the put message optionMQPMO_LOGICAL_ORDER was simply an instruction to the queue manager to automatically allocate message group identifiers and sequence numbers. The example in Listing 3 below
demonstrates how, in the absence of this option in the JMS API, we can set these properties explicitly. Listing 3. Sending a message group using the WebSphere MQ JMS API
MQConnectionFactory factory = new MQConnectionFactory();
factory.setQueueManager("QM_host")
MQQueue destination = new MQQueue("default");
destination.setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ);
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(destination);
String groupId = "ID:" + new BigInteger(24 * 8, new Random()).toString(16);
for (int i = 1; i <= 5; i++) {
TextMessage message = session.createTextMessage();
message.setStringProperty("JMSXGroupID", groupId);
message.setIntProperty("JMSXGroupSeq", i);
if (i == 5) {
message.setBooleanProperty("JMS_IBM_Last_Msg_In_Group", true);
}
message.setText("Message " + i);
producer.send(message);
}
connection.close();
BigInteger and converting it to a hexadecimal string.
As with message identifiers, the WebSphere MQ JMS API expects the group identifier to be prefixed by the string ID:The code then iterates to send the five messages. The group identifier is set to the
JMSXGroupId string property and the sequence number to the JMSXGroupSeq integer property. The API assumes that if the group identifier is set, then the message is part of a group.
Therefore all that remains is to indicate the last message in the group, which we do by setting the Boolean property
JMS_IBM_Last_Msg_In_Group to true.If you run this code and then browse the queue using WebSphere MQ Explorer, you will see that the message descriptor properties have been set as before. We should now be able to run our original WebSphere MQ Java receiver to pick up this group of messages. To make this possible, we specified the target client as
MQJMS_CLIENT_NONJMS_MQ in Listing 3 above,
which ensures that an RFH2 header is not added to the body of the message, which would confuse the non-JMS client.Receiving a message group
Unfortunately, replicating the behavior for receiving message groups with JMS is not quite so easy. Logical ordering is fairly simple to do using message selectors. We start with a selector matching any message with a sequence number of 1, and once we have that message, we determine which group it is in. We then set up a second selector that specifies a sequence number of 2 along with the group identifier. We continue incrementing the sequence number until we receive a message that has theJMS_IBM_Last_Msg_In_Group property set.
The hard part is trying to reproduce the behavior of the MQGMO_ALL_MSGS_AVAILABLE option. Listing 4 shows one possible solution:Listing 4. Receiving a message group using the WebSphere MQ JMS API
MQConnectionFactory factory = new MQConnectionFactory();
factory.setQueueManager("QM_host")
MQQueue destination = new MQQueue("default");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
MessageConsumer lastMessageConsumer =
session.createConsumer(destination, "JMS_IBM_Last_Msg_In_Group=TRUE");
TextMessage lastMessage = (TextMessage) lastMessageConsumer.receiveNoWait();
lastMessageConsumer.close();
if (lastMessage != null) {
int groupSize = lastMessage.getIntProperty("JMSXGroupSeq");
String groupId = lastMessage.getStringProperty("JMSXGroupID");
boolean failed = false;
for (int i = 1; (i < groupSize) && !failed; i++) {
MessageConsumer consumer = session.createConsumer(destination,
"JMSXGroupID='" + groupId + "'AND JMSXGroupSeq=" + i);
TextMessage message = (TextMessage)consumer.receiveNoWait();
if (message != null) {
System.out.println(message.getText());
} else {
failed = true;
}
consumer.close();
}
if (failed) {
session.rollback();
} else {
System.out.println(lastMessage.getText());
session.commit();
}
}
connection.close();
JMS_IBM_Last_Msg_In_Group=TRUE. If the messaging topology is such that ordering cannot be guaranteed, then we cannot be 100% sure that all of the other messages in the group have arrived. In a moment we'll see how we deal with the case when they have not all arrived.If we receive the last message in a group, then we can obtain the group identifier and use its sequence number to determine the size of the group. With this information, we then iterate, attempting to receive all of the other messages in the group in sequence order starting at the beginning. We achieve this by setting up a new consumer on each iteration that selects based on the group identifier and sequence number that we require. Now, if for some reason the message has not arrived yet, we will get
null back from the receiveNoWait method. At this point we set the failed flag, which causes us to drop out of the loop.Look back at the line where we created the JMS session. You'll see that, unlike the previous example code, the first parameter has been set to
true to indicate that the send and receive operations performed on this session should be performed as part of a local transaction.
This means that, if the failed flag has been set because a message has not been received, we can roll back the transaction
and return all of the other messages in the group back to the queue. If we did successfully receive all of the messages,
then we must remember to commit the transaction. Otherwise, when we close the connection, the transaction will be rolled back on our behalf.Unfortunately, whilst we are repeatedly rolling back one incomplete group, there may be other groups available on the destination that are complete but we are not reaching. This problem can be solved by temporarily excluding the incomplete group from the message selector, or by copying the group to an in-memory or persistent store for completion later. The next section examines how to address this problem in one particular environment -- the application server.
Receiving message groups in a J2EE application server
Listing 4 above shows how to receive a message group using the WebSphere MQ JMS API. But in an application server environment, message receipt is typically performed via a message-driven bean (MDB). How can we adapt our approach so that it will work in this situation? It is still possible to configure a message selector for an MDB but it is statically defined by the administrator. We will therefore configure this selector withJMS_IBM_Last_Msg_In_Group=TRUE so that the MDB is always passed the last message in a group.
We need this first message to be received as part of a transaction, and therefore the MDB should also be configured to use Container Managed Transactions (CMT)
with a transaction attribute of RequiresNew. Here is the code for the onMessage method of our MDB:Listing 5. A message-driven bean for receiving message groups
public void onMessage(Message lastMessage) {
InitialContext context = new InitialContext();
ConnectionFactory factory =
(ConnectionFactory) context.lookup("java:comp/env/jms/factory");
Destination destination =
(Destination) context.lookup("java:comp/env/jms/destination");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
int groupSize = lastMessage.getIntProperty("JMSXGroupSeq");
String groupId = lastMessage.getStringProperty("JMSXGroupID");
boolean failed = false;
for (int i = 1; (i < groupSize) && !failed; i++) {
MessageConsumer consumer = session.createConsumer(destination,
"JMSXGroupID='" + groupId + "'AND JMSXGroupSeq=" + i);
TextMessage message = (TextMessage) consumer.receiveNoWait();
if (message != null) {
System.out.println(message.getText());
} else {
failed = true;
}
consumer.close();
}
if (failed) {
_context.setRollbackOnly();
Thread.sleep(5000);
} else {
System.out.println(((TextMessage) lastMessage).getText());
}
connection.close();
}
In this environment, try to limit the number of times that you attempt to receive the group, since each time you roll back a transaction, the message delivery count is incremented for the messages that were received. If you call the above code repeatedly, this count may reach the backout threshold configured on the destination, at which point the messages will be re-queued and no longer available for receipt.
If the entire message group is received successfully, then the method completes and the container commits the transaction, thereby removing the messages from the destination.
Conclusion
This article has described what messages groups are and why you might want to use them. You have seen sample code showing how message groups can be sent and received using both the WebSphere MQ Java and JMS APIs, as well as how an MDB may be used to receive a group of messages in a J2EE application server. While somewhat simplified, these examples should help you understand how message groups can be handled effectively in these environments.Monday, June 30, 2014
AIX Commands
Find larger files
find /archive -type f -size +1000 -exec ls -lrt {} \; | sort -n +4
(http://lafirgk.blogspot.com/2010/11/finding-large-files-works-in-aix-unix.html)
-------------------------------------------------------------------------------------------------------------------
If there is a need to split a file based on record tags , we
can use the following awk command
awk
'/^HDR/{x="File"++i;}{print > x;}' sample_file
HDR à Tag
based on which the file has to be split
“File” à Name
of the split files .. File1,File2……..Filen
Sample_file à Input file --------------------------------------------------------------------------------------------------------------------
oslevel -a
6100 denotes AIX Version 6.1.0.0
06 denotes Technology Package
08 denotes Service Pack
1216 - First 2 characters(12) denote the 2 digit year (2012) in which the update happened.
Last 2 characters(16) denote the Week in which the update happened in a given year.
More AIX Commands from below:
http://www.ibm.com/developerworks/aix/library/au-aix_cmds/
Just copying into my blog to have the full text if in case the blog entry gets deleted...
Introduction
As you know, AIX has a vast array of commands that enable you to do a multitude of tasks. Depending on what you need to accomplish, you use only a certain subset of these commands. These subsets differ from user to user and from need to need. However, there are a few core commands that you commonly use. You need these commands either to answer your own questions or to provide answers to the queries of the support professionals.In this article, I'll discuss some of these core commands. The intent is to provide a list that you can use as a ready reference. The behavior of these commands should be identical in all releases of AIX. The exceptions have been noted where that is not true.
Commands
Kernel
How do I know if I am running a uniprocessor kernel or a multiprocessor kernel, or a 32-bit kernel or a 64-bit kernel?/unix is a symbolic link to the booted kernel. To find out what kernel mode is running, enter ls -l /unix and see what file /unix it links to. The following are the three possible outputs from the ls -l /unix command and their corresponding kernels:/unix -> /usr/lib/boot/unix_up # 32 bit uniprocessor kernel /unix -> /usr/lib/boot/unix_mp # 32 bit multiprocessor kernel /unix -> /usr/lib/boot/unix_64 # 64 bit multiprocessor kernel
AIX 5L Version 5.3 does not support a uniprocessor kernel.
How can I change from one kernel mode to another?
During the installation process, one of the kernels, appropriate for the AIX version and the hardware in operation, is enabled by default. Use the method from the previous question and assume that the 32-bit kernel is enabled. Also assume that you want to boot it up in the 64-bit kernel mode. This can be done by running the following commands in sequence:
ln -sf /usr/lib/boot/unix_64 /unix ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix bosboot -ad /dev/hdiskxx shutdown -r
lslv -m hd5
In AIX V5.2, the 32-bit kernel is installed by default. In AIX V5.3, the 64-bit kernel is installed on 64-bit hardware and the 32-bit kernel is installed on 32-bit hardware by default.
Hardware
How do I know if my machine is capable of running AIX 5L Version 5.3?AIX 5L Version 5.3 supports all 32- bit and 64-bit Common Hardware Reference Platform (CHRP)-based IBM Power® hardware. Only 64-bit CHRP systems are supported with AIX 6.1 and AIX V7.1.
How do I know if my machine is CHRP-based?
Run the
prtconf command. If it is a CHRP machine, the string chrp appears on the Model Architecture line.How do I know if my Power Systems machine (hardware) is 32-bit or 64-bit?
Run the
prtconf command.How much real memory does my machine have?
To display real memory in kilobytes (KB), type one of the following:
lsattr -El sys0 -a realmem
64-bit hardware is required to run the 64-bit kernel.
What are the values of attributes for devices in my system?
To list the current values of the attributes for the tape device, rmt0, type:
lsattr -l rmt0 -E
lsattr -l rmt0 -D
tty0, type:lsattr -l tty0 -a login -R
lsattr -E -l sys0
To display the number of processors on your system, type:
lscfg | grep proc
To display the number of hard disks on your system, type:
lspv
To find details about hdisk1, for example, run the following command:
lspv hdisk1
Type the following:
lscfg
| Option | Description |
|---|---|
| -p | Displays platform-specific device information. The flag is applicable to AIX V4.2.1 or later. |
| -v | Displays the vital product data (VPD) found in the customized VPD object class. |
lscfg -vl rmt0
prtconf command.How do I find out the chip type, system name, node name, model number, and so forth?
The
uname command provides details about your system.| Command | Description |
|---|---|
| uname -p | Displays the chip type of the system. For example, IBM PowerPC®. |
| uname -r | Displays the release number of the operating system. |
| uname -s | Displays the system name. For example, AIX. |
| uname -n | Displays the name of the node. |
| uname -a | Displays the system name, nodename, version, machine ID. |
| uname -M | Displays the system model name. For example, IBM, 9114-275. |
| uname -v | Displays the operating system version. |
| uname -m | Displays the machine ID number of the hardware running the system. |
| name -u | Displays the system ID number. |
AIX
What is the technology level of my system?To determine the highest technology level reached for the current version of AIX on the system, type:
oslevel -r lslpp -h bos.rte
lslpp -l "bos.rte.*"
oslevel -r -l 5300-01
oslevel -r -g 5300-01
oslevel -s
oslevel -sq
Known service packs ------------------- 6100-00-02-0750 6100-00-01-0748 6100-00-00-0000
oslevel -s -l 6100-00-01-0748
oslevel -s -g 6100-00-01-0748
The following command will create, within volume group testvg, a journaled file system (JFS) of 10 MB with mounting point /fs1:
crfs -v jfs -g testvg -a size=10M -m /fs1
crfs -v jfs2 -g testvg -a size=10M -p ro -m /fs2
crfs -v jfs -g rootvg -m /test -a \ size=32768 -a frag=512 -a nbpi=1024
To make a JFS on the rootvg volume group with nondefault fragment size and nondefault NBPI, enter:
crfs -v jfs -g rootvg -m /test -a size=16M -a frag=512 -a nbpi=1024
How do I change the size of a file system?
To increase the
/usr file system size by 1000000 512-byte blocks, type:chfs -a size=+1000000 /usr
chfs -a size=24576 /test
To increase the size of the /test JFS, enter:
chfs -a size=+8192 /test
To change the mount point of a file system, enter:
chfs -m /test2 /test
To delete the accounting attribute from a file system, enter:
chfs -d account /home
To split off a copy of a mirrored file system and mount it read-only for use as an online backup, enter:
chfs -a splitcopy=/backup -a copy=2 /testfs
To change the file system size of the /test JFS, enter:
chfs -a size=64M /test
To reduce the size of the /test JFS2 file system, enter:
chfs -a size=-16M /test
Note:
In AIX V5.3, the size of a JFS2 file system can be shrunk, as well.
How do I mount a CD?
Type the following:
mount -V cdrfs -o ro /dev/cd0 /cdrom
The following command will mount file system /dev/fslv02 on the /test directory:
mount /dev/fslv02 /test
The following command will mount all such file systems:
mount {-a|all}
Type the following command to display information about all currently mounted file systems:
mount
mount -n nodeA /home/tom.remote /home/tom.local
VfsName parameter=remote, which must be defined in the /etc/vfs file.To mount a file or directory from the /etc/file systems file with a specific type, enter the following command:
mount -t remote
type=remote attribute.To mount a snapshot, enter the following command:
mount -o snapshot /dev/snapsb /home/janet/snapsb
To mount a file system and create a snapshot, enter the following command:
mount -o snapto=/dev/snapsb /dev/sb /home/janet/sb
To remount the mounted read-only JFS2 file system to a read-write file system, enter the following command:
mount –o remount,rw fsname
The
remount option is not available in AIX 5.3.How do I unmount a file system?
Type the following command to unmount the /test file system:
umount /test
umount -n nodeA
Type the following command to remove the /test file system:
rmfs /test
How can I defragment a file system?
The
defragfs command can be used to improve or report the status of contiguous space within a file system. For example, to defragment the file system /home, use the following command:defragfs /home
defragfs -r /data1
defragfs -s /data1
To list the file set that owns
/usr/bin/vmstat, type:lslpp -w /usr/bin/vmstat
lslpp -w
installp, type:lslpp -w "*installp*"
/usr/bin/svmon, type:which_fileset svmon
Type the following command:
lslpp -l
lslpp -l "bos.rte.*"
lslpp -La bos.rte.filesystem
lslpp -f bos.rte.lvm
installp, type:lslpp -w "*installp*"
Type the following command:
instfix -i | grep TL
To inform the user on whether fixes IX38794 and IX48523 are installed, type:
instfix -i -k "IX38794 IX48523"
To install APAR IY73748 from
/dev/cd0, for example, enter the command:instfix -k IY73748 -d /dev/cd0
instfix -k IX38794 -d /dev/rmt0.1
instfix -T -d /dev/rmt0.1 | instfix -d /dev/rmt0.1 -f-
How do I verify if file sets have required prerequisites and are completely installed?
To show the file sets that need to be installed or corrected, type:
lppchk -v
Type the following command:
dump -Htv
dump -o a.out
dump -l a.out
dump -s a.out
dump -t a.out
Firmware-assisted dump is now the default dump type in AIX V7.1, when the hardware platform supports firmware-assisted dump. The traditional dump remains the default dump type for AIX V6.1, even when the hardware platform supports firmware-assisted dump.
# oslevel -s 6100-00-03-0808 # sysdumpdev -l primary /dev/lg_dumplv secondary /dev/sysdumpnull copy directory /var/adm/ras forced copy flag TRUE always allow dump FALSE dump compression ON type of dump traditional # oslevel -s 7100-00-00-0000 # sysdumpdev -l primary /dev/lg_dumplv secondary /dev/sysdumpnull copy directory /var/adm/ras forced copy flag TRUE always allow dump FALSE dump compression ON type of dump fw-assisted full memory dump disallow
# sysdumpdev -f require # sysdumpdev -l primary /dev/lg_dumplv secondary /dev/sysdumpnull copy directory /var/adm/ras forced copy flag TRUE always allow dump FALSE dump compression ON type of dump fw-assisted full memory dump require
# sysdumpdev -t traditional # sysdumpdev -l primary /dev/lg_dumplv secondary /dev/sysdumpnull copy directory /var/adm/ras forced copy flag TRUE always allow dump FALSE dump compression ON type of dump traditional
# sysdumpdev -t fw-assisted
The firmware-assisted system dump will be configured at the next reboot.
How do I determine the amount of paging space allocated and in use?
Type the following:
lsps -a
You can use the
chps -s command to dynamically increase the size of a paging space. For example, if you want to increase the size of hd6 with three logical partitions, you issue the following command:chps -s 3 hd6
chps -s 4 myvg
How do I reduce a paging space?
You can use the
chps-d command to dynamically reduce the size of a paging space. For example, if you want to decrease the size of hd6 with four logical partitions, you issue the following command:chps -d 4 hd6
Your system is capable of SMT if it is an IBM POWER5 processor-based system or later running AIX 5L Version 5.3 or later.
How would I know if SMT is enabled for my system?
If you run the
smtctl command without any options, it tells you if it is enabled or not.Is SMT supported for the 32-bit kernel?
Yes, SMT is supported for both 32-bit and 64-bit kernel.
Note:
AIX V5.3 32-bit kernel only supports SMT 2. For SMT 4 exploitation, you would need to run AIX V5.3 in a versioned workload partition (WPAR) on top of AIX V7.1 (described in the Workload partitions section). The 32-bit kernel was removed in AIX V6.1.
How do I enable or disable SMT?
You can enable or disable SMT by running the
smtctl command. The following is the syntax:smtctl [ -m off | on [ -w boot | now]]
| Option | Description |
|---|---|
| -m off | Sets SMT mode to disabled |
| -m on | Sets SMT mode to enabled |
| -w boot | Makes the SMT mode change effective on next and subsequent reboots if you run the bosboot command before the next system reboot
|
| -w now | Makes the SMT mode change immediately but will not persist across reboot |
-w boot option nor the -w now option is specified, then the mode change is made immediately. It persists across subsequent reboots if you run the bosboot command before the next system reboot.To disable simultaneous multithreading for the current boot cycle and for all subsequent boots, enter:
smtctl -m off
smtctl: SMT is now disabled. It will persist across reboots if you run the
bosboot command before the next reboot.How do I get partition-specific information and statistics?
The
lparstat command provides a report of partition information and utilization statistics. This command also provides a display of hypervisor information.To get the default LPAR statistics, enter the following command:
lparstat 1 1
lparstat –h 1 1
lparstat -i
lparstat –H 1 1
lparstat –m
The
m option is not available in AIX 5.3.Volume groups and logical volumes
AIX V7.1 includes enhanced support for solid-state drive (SSD) in the AIX Logical Volume Manager (LVM). The commands
lsvg, mkvg, chvg, extendvg, and replacepv described in the following sections support creation, extension, and maintenance of volume groups consisting of SSDs.How do I know if my volume group is normal, big, or scalable?
Run the
lsvg command on the volume group and look at the value for MAX PVs. The value is 32 for normal, 128 for big, and 1024 for scalable volume group.How can I create a volume group?
Use the following command, where
s partition_size sets the number of megabytes (MB) in each physical partition where the partition_size is expressed in units of MB from 1 through 1024. (It is 1 through 131072 for AIX V5.3.) The partition_size variable must be equal to a power of 2 (for example: 1, 2, 4, 8). The default value for standard and big volume groups is the lowest value to remain within the limitation of 1016 physical partitions per physical volume. The default value for scalable volume groups is the lowest value to accommodate 2040 physical partitions per physical volume.mkvg -y name_of_volume_group -s partition_size list_of_hard_disks
mkvg -s 1 hdisk3 hdisk5 hdisk6
To create a volume group that can accommodate a maximum of 1024 physical volumes and 2048 logical volumes, type:
mkvg -S -v 2048 hdisk6
You use the following command to change the characteristics of a volume group:
chvg
chvg -a y vg03
smit chvg fast path to run this command.How do I create a logical volume?
Type the following:
mklv -y name_of_logical_volume name_of_volume_group number_of_partition
mklv vg03 15 hdisk5 hdisk6 hdisk9
To increase the size of the logical volume represented by the lv05 directory by three logical partitions, for example, type:
extendlv lv05 3
You can display all logical volumes that are part of rootvg by typing the following command:
lsvg -l rootvg
lsvg -o
lsvg
lsvg vg02
How do I list information about logical volumes?
Run the following command to display information about the logical volume lv1:
lslv lv1
lslv -p hdisk2
LogicalVolume parameter was included, the map does not contain logical partition numbers specific to any logical volume.To display information about the lv03 logical volume by physical volume, enter:
lslv -l lv03
How do I remove a logical volume from a volume group?
You can remove the logical volume lv7 by running the following command:
rmlv lv7
rmlv command removes only the logical volume, but does not remove other entities, such as file systems or paging spaces that were using the logical volume.How do I mirror a logical volume?
mklvcopyLogicalVolumeName NumberofcopiessyncvgVolumeGroupName
syncvg command synchronizes the logical volume copies.To add physical partitions to the logical partitions in the
lv01 logical volume, so that a total of three copies exist for each logical partition, enter:mklvcopy lv01 3
lv01 directory have three copies.How do I remove a copy of a logical volume?
You can use the
rmlvcopy command to remove copies of logical partitions of a logical volume. To reduce the number of copies of each logical partition belonging to the testlv logical volume, enter:rmlvcopy testlv 2
Queries about volume groups
To show volume groups in the system, type:
lsvg
rootvg, type:lsvg rootvg
rootvg, type:lsvg -p rootvg
Type the following:
extendvg VolumeGroupName hdisk0 hdisk1 ... hdiskn
hdisk3 and hdisk8 to volume group vg3, enter:extendvg vg3 hdisk3 hdisk8
The volume group must be varied on before extending.
How do I find out the maximum supported logical track group (LTG) size of my hard disk?
You can use the
lquerypv command with the -M flag. The output gives the LTG size in KB. For instance, the LTG size for hdisk0 in the following example is 256 KB./usr/sbin/lquerypv -M hdisk0 256
lspv command on the hard disk and look at the value for MAX REQUEST.What does the
syncvg command do?The
syncvg command is used to synchronize stale physical partitions. It accepts names of logical volumes, physical volumes, or volume groups as parameters.For example, to synchronize the physical partitions located on physical volumes
hdisk4 and hdisk5, use:syncvg -p hdisk4 hdisk5
testvg, use:syncvg -v testvg
vg04 and vg05, enter:syncvg -v vg04 vg05
extendvgVolumeGroupName hdisk_newmigratepvhdisk_bad hdisk_newreducevg -dVolumeGroupName hdisk_bad
migratepv moves allocated physical partitions from one physical volume to one or more other physical volumes.The
reducevg command removes physical volumes from a volume group. When all the physical volumes are removed from the volume group, the volume group is deleted.How can I clone (make a copy of) the rootvg?
You can run the
alt_disk_copy command to copy the current rootvg to an alternate disk. The following example shows how to clone the rootvg to hdisk1.alt_disk_copy -d hdisk1
Network
How can I display or set values for network parameters?The
no command sets or displays current or next boot values for network tuning parameters.To display the maximum size of the mbuf pool, type:
no -o thewall
no -r -o tcp_sendspace=32768 no -r -o udp_recvspace=32768
no -o ipforwarding=1
no command, type:no -L
Type one of the following commands:
ifconfig -a host Fully_Qualified_Host_Name
host cyclop.austin.ibm.com
Either of the following two commands will display the network interfaces:
lsdev -Cc if ifconfig -a
tr0, run the command:ifconfig tr0
To activate the network interface
tr0, run the command:ifconfig tr0 up
For example, to deactivate the network interface
tr0, run the command:ifconfig tr0 down
To display routing table information for an Internet interface, type:
netstat -r -f inet
netstat -i -f inet
netstat -s -f inet
To record packets coming in and going out to any host on every interface, enter:
iptrace /tmp/nettrace
To record packets received on an interface
en0 from a remote host airmail over the Telnet port, enter:iptrace -i en0 -p telnet -s airmail /tmp/telnet.trace
Workload partitions
Workload partitions (WPARs), a set of completely new software-based system virtualization features, were introduced in IBM AIX Version 6.1. With AIX 6.1 TL4, the capability to create a WPAR with its root file systems on a storage device dedicated to that WPAR was introduced. With AIX 6.1 TL6, the capability to have Virtual I/O Server (VIOS)-based virtual Small Computer System Interface (VSCSI) disks in a WPAR was introduced. Storage area network (SAN) support for rootvg system WPAR released with AIX 6.1 TL 6 provided the support of individual devices (disk or tapes) in a WPAR.With AIX 7.1, the support of kernel extension load and VIOS disks and their management within a WPAR has been added, allowing a rootvg WPAR that supports VIOS disks. A new product named AIX 5.2 Workload Partitions for AIX 7 to support an AIX 5.2 environment in a versioned workload partition has been introduced in AIX 7.1. The enhancement introduced with the reliability, availability, and serviceability (RAS) error-logging mechanism has been propagated to WPARs with AIX 7.1. This RAS error-logging feature first became available in AIX 7.1 and was included in AIX 6.1 TL 06.
How do I create a workload partition?
To create a WPAR named temp with the IP address xxx.yyy.zzz.nnn, type:
mkwpar -n temp -N address= xxx.yyy.zzz.nnn
To create a workload partition based on an existing specification file wpar1.spec, type:
mkwpar -f /tmp/wpar1.spec
To create a specification file wpar2.spec for an existing workload partition
wpar1, type:mkwpar -e wpar1 -o /tmp/wpar2.spec -w
To start the workload partition called
temp, type:startwpar temp
To stop the workload partition called
temp, type:stopwpar temp
To view the characteristics of all workload partitions, type:
lswpar Name State Type Hostname Directory --------------------------------------------------------------------------------- bar A S bar.austin.ibm.com /wpars/bar bar A S bar.austin.ibm.com /wpars/bar foo D S foo.austin.ibm.com /wpars/foo trigger A A trigger /
To log in to the workload partition named
wpar1 as user foo, type:clogin wpar1 -l foo
To run the /usr/bin/ps command as user root in a workload partition named
howdy, type:clogin howdy -l root /usr/bin/ps
To remove the workload partition called
temp, type:rmwpar temp
temp preserving data on its file system, type:rmwpar -p -s temp
Performance monitoring tools
Theiostat command described below has been enhanced in AIX 6.1 TL6 and AIX 7.1 to capture useful data to help analyze I/O issues and identify and correct the problem quicker. A new flag, -b, is available for the iostat command to display block I/O device utilization statistics.How do I display virtual memory statistics?
To display a summary of the virtual memory statistics since boot, type:
vmstat
vmstat 2 5
vmstat scdisk13 scdisk14
vmstat -t
vmstat -vs
vmstat -@ ALL
vmstat -vs -@ ALL
To display a single set of statistics for all TTY, CPU, and disks since boot, type:
iostat
disk1, type:iostat -d disk1 2
disk1, type:iostat disk1 2 6
iostat -d 2 6
disk1, disk2, disk3, enter the following command:iostat disk1 disk2 disk3 2 6
iostat -s
iostat -a 5
iostat -sat 20 10
iostat -sad hdisk0 hdisk7 30
iostat, enter the following command:iostat -T 60
iostat -F -@ ALL
iostat -s -@ ALL
Type the following command:
topas
topas -P
topas -L
topas -D
topas -F
abc, enter the following command:topas -@ abc
topas WPAR mode, enter the following command:topas -@
Type the following command:
sar
sar -y -r 2 20
sar -@ wparname
sar -P ALL 1 1
sar -u -P 0,1
cpu %usr %sys %wio %idle 0 45 45 5 5 1 27 65 3 5
Conclusion
Admittedly, a list such as this can be helpful in quickly answering some of your own questions. However, it does not cover everything that you might need. You can extend the usefulness of such a list by adding other commands that answer additional questions not addressed here.
Subscribe to:
Posts (Atom)