Tuesday, January 31, 2012

Many Thoughts On Skyrim.




With about fifty hours in, I've completed about as much of Elder Scrolls V: Skyrim (on the 360) as I'm likely to. It's been a great break from fixing bugs in our upcoming games. Skyrim is more fun that iOS development. You heard it here first.

I've done the main quest plus whatever side quests were interesting or insane enough to attract my interest. I don't want to write a full review because it would be entirely redundant. Everyone already knows it's an excellent game.

Instead, I wanted to say a few quick things about what worked (or sometimes didn't) in Skyrim.

The Quest Writing

For a game this size, with multiple quest chains long and involved enough to feel like full games in themselves, uneven writing is to be expected. Some of the major quests were, indeed, better than others in this regard.

I thought the best writing, going away, was in the Dark Brotherhood (assassin's guild) quest. It was over the top, deranged, and entirely fun. Alas, since players tend to shy away from the evil and deranged, most people won't get to enjoy this bit of concentrated insanity. It's a pity. In Skyrim, having a voice in your head telling you to kill people isn't a handicap. It's a career choice.

Sadly, I thought the least involving writing was in the main game quest, which was just another retelling of, "See that guy over there? He's evil. Kill that guy." Except, in this case, "that guy" is a dragon without much dialogue or presence in the story. The storyline would have been much more involving if the player were able to have more interaction with the main villain.

On the bright side, while the Empire and Rebel quest lines get a tad repetitive (with all those fort assaults), they also do a great job of depicting an epic struggle, full of sacrifices, risks, and hard choices. The bit where the Jarl of Whiterun tries to decide which side to support was really suspenseful and nicely done.

Selling Items

All fantasy RPGs have tedious inventory management and selling of stuff. It's just part of the genre. In recent years, designers have looked for ways to make the economic side of things go faster and eat up less precious play-time. The best example of this is in Torchlight you can have your pet dog take all your junk back to town and sell it for you.

Thank you! More killing, less realism!

But in Skyrim ... Look. If you want to have each shop only buy a limited range of items, fine. And if you want to have shops have a limited amount of gold, fine. And if you want to have stolen items only bought by one character, who doesn't have much money on hand and is well out of the way, fine. But having all three of these means that you hate me.

You might say, “Hey, they want a more realistic feeling world.” Fine. I get that. Just bear in mind that when someone says he played Skyrim for 60 hours, at least 20 of those were spent trying to find someone who will buy eleven pairs of elven boots.

(Yes, I know you can buy feats to change how this works. I prefer to spend my feats on the sort of combat skills that keep me from getting slaughtered the moment I try to ride to the next town, thank you.)

Killing Elves

You spend a lot of time in Skyrim killing elves. In this world, elves are obnoxious and ugly, and you kill them.

This is awesome.

The World Map

The roads in Skyrim are really nicely laid out. I spent just the right amount of time wandering around lost. In a big world like this, you want the player to get lost sometimes. It's a rare pleasure to have a game you can actually get lost in.

On the other hand, I've looked at a lot of maps in my life, and I've never seen one where the cartographer drew in the clouds. Having the in-game world map be a depiction of Skyrim as seen from space, clouds and all, is malicious. It really obscures where you can and can't go.

(Also, the printed map that comes with the game has inaccurate and incomplete roads, and the roads are the most important part of the map. Paper maps are awesome, but the developers should give them a once-over to make sure they’re accurate. This is just the sort of extra that gets people to buy instead of rent.)

Arrow In the Knee

I know I'm supposed to think the whole "Arrow in the knee" meme is overplayed. Sorry. Still cracks me up every time. Especially whenever a guard passive-aggressively says it to me as I run by.

Awesome Evilness

If you are ever in Markarth and some guy asks you to help investigate an abandoned house, do that quest. It's really, really, really evil and deranged. Its audacity should be rewarded with play. In fact, play through it in front of your loved ones. My wife watched me play it and, a few weeks later, she can almost make eye contact with me again.

It's a Great Game

OK. Done nitpicking. It's buggy, sprawling, uneven, and an entirely brilliant game experience. It overwhelms you with sheer size. You can't go for a horsey ride for five minutes without the game trying to distract you with some new cool thing. You can simply get lost in it.

After what seems like an endless parade of games where you mindlessly shoot/slash your way down a corridor, see a cutscene, and then are funneled down another corridor, Skyrim is a delight.

Monday, January 16, 2012

CRS-4640 Error on Starting 11gR2 clusterware

CRS-4640 Error on Starting 11gR2 clusterware

I was working on a issue where in Clusterware was not coming up as private interface was down. Following errors were recorded in ocssd.log which informed that issue was with private interface

In   ocssd.log  following message appears
2012-01-16 18:45:04.647: [    CSSD][1110051136]clssnmvDHBValidateNCopy: node 1, rac1prod, has a disk HB, but no network HB, DHB has rcfg 21996
[root@rac2prod ~]# cd /u01/app/11.2.0/grid/bin


Checking status of crs informed that the OHASD process was up and running but CRS,CSSD and EVMD processes were not running.
[root@rac2prod bin]# ./crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager


I checked Private Interconnect Cables that were lose from the switch port.
After fixing the interface issue, we tried starting CRS with ‘crsctl start crs‘ command and it failed with following errors

[root@rac2prod bin]# ./crsctl start crs
 CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.

Since ohasd was already running, I tried crsctl start cluster (this command requires ohasd to be up), and this command succeeded

[root@rac2prod bin]# ./crsctl start cluster
CRS-2672: Attempting to start 'ora.cssd' on 'rac2prod'
CRS-2672: Attempting to start 'ora.diskmon' on 'rac2prod'
CRS-2676: Start of 'ora.diskmon' on 'rac2prod' succeeded
CRS-2676: Start of 'ora.cssd' on 'rac2prod' succeeded
CRS-2672: Attempting to start 'ora.ctssd' on 'rac2prod'
CRS-2679: Attempting to clean 'ora.cluster_interconnect.haip' on 'rac2prod'
CRS-2681: Clean of 'ora.cluster_interconnect.haip' on 'rac2prod' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'rac2prod'
CRS-2676: Start of 'ora.ctssd' on 'rac2prod' succeeded
CRS-2672: Attempting to start 'ora.evmd' on 'rac2prod'
CRS-2676: Start of 'ora.evmd' on 'rac2prod' succeeded
CRS-5702: Resource 'ora.evmd' is already running on 'rac2prod'
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'rac2prod' succeeded
CRS-2679: Attempting to clean 'ora.asm' on 'rac2prod'
CRS-2681: Clean of 'ora.asm' on 'rac2prod' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'rac2prod'
CRS-2676: Start of 'ora.asm' on 'rac2prod' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'rac2prod'
CRS-2676: Start of 'ora.crsd' on 'rac2prod' succeeded
CRS-4000: Command Start failed, or completed with errors.

Ideally crsctl start crs should be used to start the Clusterware components. But in case they fail to come up due to some issue (e.g voting disk inaccessible,interface issue) and you are in situation when ohasd is up then you can use crsctl start cluster to start the remaining clusterware processes after fixing underlying issue.I believe crsctl stop crs -f option can also be used, though I didn’t try it for this issue.

[root@rac2prod bin]# ./crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online





=======================================

Friday, January 13, 2012

Now You (Yes, You!) Can Design Dungeons and Dragons!!!!!!!

 
Dungeons and Dragons was actually in the news this week. There was even a big article in the New York Times. Turns out, they are going to redesign the game from the ground up.

(Again!?!? Wasn't the last time in 2008? Answer: Yes, it was.)

The impending redesign wasn't the big news item, though. Redesigning D&D isn't news. Happens all the time. What did attract a lot of attention is how they are going to redesign it. They are going to have a “hearts and minds” campaign, ask players what they want in the new edition, and supposedly make it from the ground up while actually taking into account feedback from their fan base.

I assume, of course, that this is all simple marketing-speak, part of a clever and successful way to get attention, and not an actual, realistic plan of action. I assume this because it's the best possible scenario. Actually trying to design a game this way is a terrible, terrible idea.

I've written before about the considerable dangers of relying too much on your fan base to figure out how to design your game. And, as often happens, Penny Arcade did a fantastic job of boiling down what is screwy about this approach.

But I just want to throw out two points.

1. A cacophony of voices will never solve a hard problem.

Whenever you need to make a big, difficult decision about your game design and turn to the public for help, you will get a huge number of responses. They will all be passionate, many will be well-argued, and they will split evenly between all of the possible decisions.

Think about it. If a decision is difficult (and making a game like D&D involves LOTS of tough decisions), it's difficult because there is no clear answer. You could go either way. And people giving you feedback will totally go in any imaginable direction.

The real artistry in game design comes from making all of the possible decisions in a way that they all build towards one unified goal. You want all the decisions to add up to more than the sum of their parts. Some people are really good at doing this. We call them Game Designers.

2. The people giving feedback are not the people you need to listen to.

When you throw open the doors, you will get feedback from the most intense, passionate fans. (Note I didn't say "smart" or "insightful." Some of them will be smart. Some won't. Good luck figuring out which are which.)

But D&D's big problem is not that it lacks a core cadre of passionate fans. It's that any sort of person who doesn't live and breathe this stuff has long ago drifted away. Those are the people you need to hear from. But you won't hear from them. Because they don't care. And you need to know why they don't care, because people who cared once not caring anymore is the heart of the problem. 

Of Course, This Doesn't Matter ...

Because people don't put in the long years of work getting a plum position like "Dungeons & Dragons Designer" to then throw up their hands and say, "Hey. Let's see what the forums have to say!" This "hearts and minds" stuff is marketing. It should be marketing. There is nothing wrong with marketing, and making the fans feel involved is a worthwhile goal.

I don't envy them their task. Dungeons & Dragons is one of the great games, and it's had some rough years. Sadly, it's a fair question whether tabletop RPGs will ever be more than a niche of a niche of a niche again, no matter how many times you redesign them. I'll have more to say about this soon.

Tuesday, January 10, 2012

Single Client Access Name (SCAN) Explained

11gR2 Grid Infrastructure Single Client Access Name (SCAN) Explained

SCAN Concepts

  • Single client access name (SCAN) is the virtual hostname to provide for all clients connecting to the cluster (as opposed to the vip hostnames in 10g and 11gR1).  
  • SCAN is a domain name registered to at least one and up to three IP addresses, either in the domain name service (DNS) or the Grid Naming Service (GNS).
  • By default, the name used as the SCAN is also the name of the cluster and must be globally unique throughout your enterprise. The default value for the SCAN is based on the local node name. SCAN name must be at least one character long and no more than 15 characters in length, must be alphanumeric - cannot begin with a numeral and may contain hyphens (-). If you require a SCAN that is longer than 15 characters, then select an Advanced installation.
  • For installation to succeed, the SCAN must resolve to at least one address.
  • SCAN VIP addresses must be on the same subnet as virtual IP addresses and public IP addresses.
  • Oracle strongly recommends that you do not configure SCAN VIP addresses in the hosts file. But if you use the hosts file to resolve SCAN name, you can have only one SCAN IP address.
  • If hosts file is used to resolve SCAN hostname, you will receive Cluster Verification Utility failure at end of installation (see Note: 887471.1 for more details)
  • For high availability and scalability, Oracle recommends that you configure the SCAN to use DNS Round Robin resolution to three addresses.
  • Because the SCAN is associated with the cluster as a whole, rather than to a particular node, the SCAN makes it possible to add or remove nodes from the cluster without needing to reconfigure clients. It also adds location independence for the databases, so that client configuration does not have to depend on which nodes are running a particular database.
  • Clients can continue to access the cluster in the same way as with previous releases, but Oracle recommends that clients accessing the cluster use the SCAN. Clients using the SCAN can also access the cluster using EZCONNECT.
  • Grid Infrastructure will start local listener LISTENER on all nodes to listen on local VIP, and SCAN listener LISTENER_SCAN1 (up to three cluster wide) to listen on SCAN VIP(s); 11gR2 database by default will set local_listener to local LISTENER, and remote_listener to SCAN listener.
  • SCAN listener will be running off GRID_HOME, and by default, in 11gR2 local listener will be running off GRID_HOME as well.

Common Questions Regarding SCAN

The following is a list of commonly asked questions regarding SCAN:

How can we configure the SCAN and SCAN listener?

During Typical installation, you are prompted to confirm the default Single Client Access Name (SCAN), which is used to connect to databases within the cluster irrespective of which nodes they are running on.  If you change the SCAN from the default, then the name that you use must be globally unique throughout your enterprise.

Also we can use 'srvctl' to add/modify the scan resource and the listeners.  Please refer to "Real Application Clusters Admin and Deployment Guide" or Note 1053147.1 for more information.

Do we still need to configure local listeners on each node?

Yes, you would need to configure independent local listeners for each node.  SCAN listeners are not replacements for the node listeners.

A new set of cluster processes called scan listeners will run on three nodes in a cluster (or all nodes if there are less than 3).  If you have more than three nodes, regardless of the number of nodes you have, there will be at most three scan listeners.  The database registers with the SCAN listener through the remote listener parameter in the init.ora/spfile.  If any of these clustered processes fail, they are automatically restarted on a new node.

How does SCAN work ?

 The following is the explanation given in Appendex D "Oracle Grid Infrastructure for a Cluster Installation Concepts" of the Oracle Grid Infrastructure Installation Guide:

"When a client submits a request, the SCAN listener listening on a SCAN IP address and the SCAN port is contracted on a client's behalf. Because all services on the cluster are registered with the SCAN listener, the SCAN listener replies with the address of the local listener on the least-loaded node (Each scan listener keeps updated cluster load statistics) where the service is currently being offered. Finally, the client establishes connection to the service through the listener on the node where service is offered.All of these actions take place transparently to the client without any explicit configuration required in the client."

$ SRVCTL STATUS SCAN_LISTENER
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node TEST1
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is running on node TEST2
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is running on node TEST3

Instead of DNS or GNS, Can we use '/etc/hosts' to resolve SCAN?

Oracle strongly recommends that you do not configure SCAN VIP addresses in the hosts file. But if you use the hosts file to resolve SCAN name, you can have only one SCAN IP address.

If hosts file is used to resolve SCAN hostname, you will receive Cluster Verification Utility failure at end of installation (See NOTE 887471.1 for more details)

Can we use the previous method (Using VIP) for client connection?

Clients can continue to access the cluster in the same way as with previous releases. Vips are still used internally, and can still be used for connections. But Oracle strongly recommends that clients accessing the cluster use the SCAN. Clients using the SCAN can also access the cluster using EZCONNECT.

Is it mandatory to use SCAN?

It's highly recommended to use SCAN unless there's strong business reason preventing it from being used.

Is it supported to remove SCAN?

SCAN is an elementary part of 11gR2 Grid Infrastructure, it's not supported to remove SCAN.



Demo

SCAN DEMO

Sample TNS entry for SCAN

TEST.ORACLE.COM =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=SCAN-TEST.ORACLE.COM)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=11GR2TEST.ORACLE.COM))
)


Sample TNS Entry without SCAN

TEST.ORACLE.COM =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=TEST1-vip.ORACLE.COM)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=TEST2-vip.ORACLE.COM)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=11GR2TEST.ORACLE.COM))
)