Monthly Archives: December 2012

Physical Versus Virtual Presence

Telecommuting has been on the rise.  Technology advances have escorted the virtual office to the forefront.  The old school thought that collaboration only works if all parties are physically located in the office still exist.  Is there real merit in this thought or is it personality based?

Working from home isn’t necessarily for everyone but that doesn’t mean that everyone should be forced to work in the same manner.  It’s quite possible for a hybrid model, which happens today.  Some people are working in the office, others work in different locations.  Technology allows for working at the beach, the coffeehouse, home, or anywhere else with a connection. The caveat, is responsiveness and accountability.

Simply put you work as you would work in the office. Your hours should be posted and you should be available during the posted hours. This provides people with feedback as to when to expect a response and when you are available for contact.  Employees working remotely (not in the office) must still be held accountable for deadlines, meetings and other timely work.

The mindset that people need to be physically located in the same room in order to achieve the end goal of collaboration doesn’t apply to every employee. Personality is a big factor. With the exception of a few individuals, with the right leadership collaboration even in a high crisis time can be achieved virtually with responsive individual.  How can the leadership change the environment?

Set the appropriate expectations.  Working from home isn’t a free day to watch email while attending to personal items. It’s a work day just as if you were sitting at a desk in an office with everyone monitoring you.  You must respond to emails, calls, tasks and deadlines in the same manner.  I have found too often the reasons management is so reluctant to have a work from home policy is simply people misuse it.  Instead of allowing the work from home to substitute for appointments and other personal tasks, appropriately setting the expectations will provide for an atmosphere that will demonstrate a ROI to the company through a higher level productive from their employees.

Management still not convinced.  Fearful that work still won’t get done.  Set the expectation and start a trial.  A leader should know who would be able to work well in this type of environment.  Trust your employees. Surrender to the fact that your employees don’t need to be watched over with a mindful eye and will actually produce more for you while working remotely.

Advertisements

Missing or Corrupt Controlfile

Ever receive the following message when starting an Oracle database?

ORA-00205: error in identifying control file, check alert log for more info

Review the alert log will show which controlfile can’t be accesses.

ALTER DATABASE   MOUNT
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u02/app/oracle/oradata/control01.ctl'
ORA-27048: skgfifi: file header information is invalid
ORA-205 signalled during: ALTER DATABASE   MOUNT...
Mon Apr 26 10:11:23 2010
Checker run found 1 new persistent data failures

ORA-205 signalled during: ALTER DATABASE   MOUNT..

After starting the database check the parameter for a list of the controlfiles

SQL> show parameter control_files

Once you have a list of the controlfiles, copy one of the existing one’s to the missing or corrupt.

SQL > host

[oracle@host ~]$ cp /u02/app/oracle/oradata/control02.ctl /u01/app/oracle/oradata/control01.ctl

[oracle@host ~]$ exit

SQL> alter database  mount;

Database altered.

SQL> alter database open;

Database altered.

Retrieve Execution Plan

From AWR:

select plan_table_output from table (dbms_xplan.display_awr('&sqlid'));

ORA-12528 When Creating A Standby Database

I went through all the steps to prepare for setting up a standby database manually. Long story as to why the data guard broker is not currently being used, will be changed in the future. Sometimes during the setup dyslexia hits me and I have a typo or to despite reviewing the setup. That occurred with the INIT parameter for the log files. Not a big deal. I set aside the project until after the holidays.

Upon my return to the project I started receiving the following:
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 12/26/2012 09:47:25
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-03009: failure of backup command on prmy1 channel at 12/26/2012 09:47:25
ORA-17629: Cannot connect to the remote database server
ORA-17627: ORA-12528: TNS:listener: all appropriate instances are blocking new connections
ORA-17629: Cannot connect to the remote database server

What happened? I checked the listener

lsnrctl services
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.150.50.102)(PORT=1521)))
Services Summary…
Service “firlstd” has 1 instance(s).
Instance “firlstd”, status BLOCKED, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:6 refused:0 state:ready
LOCAL SERVER
Service “firlstd (ORACLE_HOME = /u01/app/oracle/product/11.2.0.2” has 1 instance(s).
Instance “firlstd (ORACLE_HOME = /u01/app/oracle/product/11.2.0.2”, status UNKNOWN, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0
LOCAL SERVER
Service “seclstd” has 2 instance(s).
Instance “seclstd”, status UNKNOWN, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0
LOCAL SERVER
Instance “seclstd”, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully

There’s a second database seclstd that wasn’t there when I started creating mine. Turns out one of the DBAs had started the second standby for a different production database and had modified the listener. They had placed their database under the sid_list at the top, so they hadn’t modified mine.

I tried the following:

1. lsnrctl reload — no luck

2. I checked the local_listener to ensure that it wasn’t set — not set

3. I added (UR=A) to the tnsnames to see if that would make a difference based on MOS recommendation in a note. — no luck

4. The database is in nomount, which is correct and with 11.2 you can connect to nomount via the listener.

5. There are no processes running for the database other than the background so we were not exceeding the max number of processes or connections.

6. The alert log showed nothing, which made sense as I could connect via sqlplus without going through the listener.

Had to be something within the listener.ora itself.

We weren’t using dynamic registration which is the correct way to set up the listener for a data guard configuration. So why are connections being blocked?

Upon further review the of the listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = frslstd)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.2)
)
(SID_DESC =
(SID_NAME = seclstd
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.2)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
)
)

URGH!!! There was a missing parenthesis after the sid_name in the listener.ora. How did I miss that. It would appear that if there is only one database that is a standby then dynamic registration works which is why I only experienced this issue after the second database was started.

Clone Oracle Homes

ORACLE RDBMS HOME:

1. On target, move to parent directory of the oracle home

cd /u01/app/oracle/product

2. Create a compression file of the oracle home. The -p preserves the permissions

tar -pcvf 11202.tar 11.2.0.2

3. Move the tarball to the destination

scp -p 11202.tar oracle@destination:/u01/app/oracle/product

4. Uncompress the tarball

tar -xvf 11202.tar

5. There’s two methods to actual clone the home. The first one, clone.pl, makes use of perl and doesn’t require the display to be set. The second method utilizes the runInstaller and does require the display to be set. The clone.pl script is my preferred method for cloning because it doesn’t require the display to be set and there’s no options that I need to remember. But both work.

CLONE.PL
a. Perl should be within your path. If not you can locate it usually under the oracle home $ORACLE_HOME/perl
b. the clone script, clone.pl is located under the oracle home as well $ORACLE_HOME/clone/bin
c. the script takes in the arguments of the oracle home, oracle base and the oracle home name.

perl /u01/app/oracle/product/11.2.0.2/clone/bin/clone.pl ORACLE_HOME=”/u01/app/oracle/product/11.2.0.2″ ORACLE_BAESE=”/u01/app/oracle” ORACLE_HOME_NAME=”11202_HOME”

d. the installer will be initiated. At the end you will be provided the path of the orainstroot.sh and root.sh which must be ran as root. The first script orainstroot.sh registers the oracle home with the inventory. The second script sets necessary variables and permissions. Both scripts run in a matter of seconds.

RUNINSTLLER
a. runInstaller requires that the display be set as if you were running an normal installation
b. This script is located under the oui directory within the oracle home.

./runInstaller -silent -clone -waitForCompletion “ORACLE_HOME=/u01/app/oracle/product/11.2.0.2” “ORACLE_HOME_NAME=11202_Home” -noConfig -nowait

c. Once complete you will be provided with the paths to run the .orainstroot.sh as well as the root.sh

One caveat, if this cloned installation will reside on a host where an existing installation resides and you do not wish to use the central inventory you can set a different location.  Modify the $ORACLE_HOME/oraInst.loc with the location of the inventory you desire along with the group.  When call the ./runInstaller utilize -invPrvtLoc followed by the path of the oraInst.loc file.  Ex.  -invPrvtLoc “/u01/app/oracle/product/11.2.0.2/oraInst.loc” .  If you are using the clone.pl method you will need to edit the config file under the bat directory to include this option.

Linux OS Commands To Remember

Remove files older than a certain date:

find /path/* -mtime +180 -exec rm {} \;

include the whole path.  Substitue the +180 is the number of days.  There is a space after rm and after {}.

If you receive list argument too long error try the following instead:

cd /path to files/

find *.ext -mtime +180 -print0|xargs -0 rm -f

 

 

Leadership and Work Place Bullies

I read this article on work place bullies on DBAKEVLAR blog and since this is so common I thought I would share.

We have all been employed where there are workplace bullies. The article addresses those specifically in leadership position, but let’s face it co-workers can have the same damaging effects. I have to agree with DBKEVLAR that they not only pick on stronger people, but those that they feel threatened by. They are bullies because they don’t feel confident with themselves even though they believe they are only doing their jobs. But I often have wondered over the years what has happened to leadership in the workplace.

In my experience, the best managers are the natural leaders. It seems natural leaders often times are overlooked in the promotions or don’t want the added responsibility of people reporting them. Leadership doesn’t happen just because someone is good at their job which is often times the reason people are promoted to management, as well they are good at playing the political game.