We present oblivious routing algorithms whose routing paths are constructed independent of each other, with no dependence on the routing history. Oblivious algorithms are inherently adaptive to dynamic packet traffic, exhibit low congestion, and require low maintenance. All these attributes make oblivious algorithms to be suitable for sensor networks which are characterized by their limited energy and computational resources. Specifically, low congestion provides load balancing, and low stretch provides low energy utilization. We present two simple oblivious routing algorithms. The first algorithm is for geometric networks in which nodes are embedded in the Euclidean plane. In this algorithm, a packet path is constructed by first choosing a random intermediate node in the space between the source and destination, and then the packet is sent to its destination through the intermediate node. In the second algorithm we study mesh networks, where the nodes are arranged in a 2-dimensional grid. Grids are interesting symmetric topologies which can be used as a testbed for designing efficient new routing algorithms in sensor networks. The oblivious algorithm in the mesh constructs the paths by decomposing the network into smaller submeshes in a hierarchical manner. This algorithm can be extended to d-dimensions, which makes it suitable for three-dimensional sensor network deployments, such as in buildings and tall structures. We analyze the algorithms in terms of the stretch and congestion of the resulting paths, and demonstrate that they exhibit near optimal performance.