The description from BMW for this code is Fuel Trim (Bank 2), O2 Control Limit Fault. The Engine Controller for the Lambda was too long beyond a minimum or a maximum limit in memory. Usually due to a lean condition. Check for signs of a vacuum leak or an exhaust air leak. Check the crankcase breather valve for proper operation or replace. If everything looks good up to this point you can swap all of the injectors from one bank to the other to see if code switches banks if so you have a injector problem. Let me know if you have questions, thanks.
I should have added that when i punch the in dash diagnostic "check" button sometimes i get FI (i assume fuel injection) and sometimes okay. It also exhibits a rough idle, especially when cold (again, sounds like a lean condition to me) but then the idle will settle in and be okay for a while. this car was originally a "rust belt" car for whatever that is worth.
Where would I find the crankcase breather? i should check that first since it is likly the easiest and least exspensive repair. I have looked around the intake system checking for vacum leaks but didin't see anything unusual. My repair shop is talking 700-900 to fix this and that seems awfully high. What do you think?