ALTER USER p$prodschema ACCOUNT LOCK; BEGIN FOR x IN (SELECT 'alter system disconnect session ''' || sid || ',' || serial# || ''' immediate;' sqlstr FROM v$session WHERE username = 'P$PRODSCHEMA') LOOP EXECUTE IMMEDIATE x.sqlstr; END LOOP; END; DROP USER p$prodschema CASCADE;
Wednesday, February 10, 2010
drop schema on oracle
DROP USER
Monday, February 1, 2010
mongodb backup with zfs
http://www.mongodb.org/display/DOCS/fsync+Command
ZFS has many problems with fragmentation.
use admin switched to db admin > db.runCommand({fsync:1,lock:1}) { \"info\" : \"now locked against writes\", \"ok\" : 1 } > db.currentOp() { \"inprog\" : [ ], \"fsyncLock\" : 1 } > // do some work here: for example, snapshot datafiles... /sbin/zfs/snapshot /mongo/mongo1@backup > db.$cmd.sys.unlock.findOne(); { \"ok\" : 1, \"info\" : \"unlock requested\" } > // unlock is now requested. it may take a moment to take effect. > db.currentOp() { \"inprog\" : [ ] }
[Database] server: localhost user: root password: pass port: 27017 [ZFS] zfs_command: /usr/sbin/zfs ; ZFS filesystem containing the MongoDB database files. db_fs_name: mongo db_fs_dir: /mong
import ConfigParser import sys,os,time,commands,re from optparse import OptionParser from os.path import exists from pymongo.connection import Connection from pymongo.son import SON txt_program_revision = \"0.1\" txt_program_name = \"MoBack\" args_parser = OptionParser(usage=\"%prog --filename MoBack.cfg -d directory\", version=txt_program_name + \" \" + txt_program_revision) args_parser.add_option(\"-f\", \"--filename\", dest=\"FN_CONFIG\",help=\"Configuration file containing MONGODB and ZFS settings to use for backup run.\") args_parser.add_option(\"-d\", \"--directory\", dest=\"DIRECTORY\",help=\"Copy backup to directory\") args_parser.add_option(\"-N\", \"--no-destroy\", dest=\"NODESTROY\",action=\"store_true\", help=\"Ceated snapshot will be not destroyed.\",default=False ) arg_program_options, arg_leftover = args_parser.parse_args() if arg_program_options.FN_CONFIG==None: print \"\\nMust supply a configuration filename. Please use --help for syntax.\" sys.exit(-1) if arg_program_options.DIRECTORY==None: print \"\\nMust supply a directory where snapshot will send. Please use --help for syntax.\" sys.exit(-1) ### Load in configuration settings config_parser = ConfigParser.SafeConfigParser() try: f_config = open(arg_program_options.FN_CONFIG) except IOError, e: print \"\\nCannot find \" + arg_program_options.FN_CONFIG + \". Please check the argument and try again.\" sys.exit(-2) backup_dir = None if not exists( arg_program_options.DIRECTORY): print \"\\nDirectory \" + arg_program_options.FN_CONFIG + \" don\'t exist. Please check the argument and try again.\" sys.exit(-2) else: backup_dir = arg_program_options.DIRECTORY config_parser.readfp(f_config) # Validate individual required options try: database_server= config_parser.get(\"Database\",\"server\") database_user = config_parser.get(\"Database\",\"user\") database_pass = config_parser.get(\"Database\",\"password\") database_port = config_parser.get(\"Database\",\"port\") fn_zfs_cmd = config_parser.get(\"ZFS\",\"zfs_command\") fn_zfs_db_fs = config_parser.get(\"ZFS\",\"db_fs_name\") fn_zfs_db_fs_dir = config_parser.get(\"ZFS\",\"db_fs_dir\") except ConfigParser.NoOptionError, e: print \"\\n\" + repr(e) print \"Please make sure all required sections and options are supplied and try again.\" f_config.close() sys.exit(-3) zfs_list_status, zfs_list_output = commands.getstatusoutput(fn_zfs_cmd + \" list\") if not re.compile(fn_zfs_db_fs).search(zfs_list_output, 1): print \"\\nNo ZFS DB filesystem named \" + fn_zfs_db_fs + \" exists. Please check your configuration and try again.\" sys.exit(-4) print \"\\nAll specified ZFS filesystems are present.\" print \"\\n\\nMoBack is connecting to MongoDB:\" try: connection = Connection( database_server , int(database_port)) db = connection[\'admin\'] db.authenticate(database_user, database_pass) except: print \"Unable to connect to MySQL server \" + database_server + \". Please check the configuration file and try again.\" sys.exit(-5) print \"\\tConnected to \" + database_server + \".\" time_snapshot = \'auto-\'+ time.strftime(\"%Y-%m-%d_%H%M%S\") print \"\\tPrepared MongoDB to ensure consistency.\" loc_cmd = SON() loc_cmd[\'fsync\'] = 1 loc_cmd[\'lock\'] = 1 res = db.command(loc_cmd) ### Pull ZFS snapshots. try: # Snapshot DB snap_name = fn_zfs_db_fs + \"@\" + time_snapshot print \"\\tSnapping ZFS DB filesystem.\" zfs_dbsnap_status, zfs_dbsnap_output = commands.getstatusoutput(fn_zfs_cmd + \" snapshot \" + snap_name) if zfs_dbsnap_status != 0: print \"An error occurred while executing the ZFS snapshot on \" + _fn_zfs_db_fs + \". Unlocking collections and quitting.\" coll = db[\'$cmd.sys.unlock\'] coll.findOne() sys.exit(-7) except: coll = db[\'$cmd.sys.unlock\'] coll.findOne() print \"\\tAn unrecoverable error occurred while trying to pull the snapshots. We have unlocked the collections. Please check your system logs for details as to the ZFS error.\" sys.exit(-7) print \"\\tUnlocking collections.\" coll = db[\'$cmd.sys.unlock\'] coll.findOne() print \"\\tcollections unlocked.\" print \"MoBack snapshot run completed.\" print \"\\n\\nSnapshots created:\" print \"\\t\" + fn_zfs_db_fs + \"@\" + time_snapshot sys.exit( 0) if backup_dir: zfs_backsend_status, zfs_backsend_output = \\ commands.getstatusoutput(fn_zfs_cmd + \" send \" + snap_name + \" > \" + backup_dir +\"/\"+ _database_server+\"_\"+database_port+\"_\"+time_snapshot) if zfs_backsend_status != 0: print \"\\nAn error occurred while executing the ZFS send on \" + fn_zfs_db_fs + \".\" print zfs_backsend_output sys.exit(-7) if arg_program_options.NODESTROY != True: snap_re = re.compile(r\'@auto\\-\') if not snap_re.search(snap_name): print \"\\n\\nBad snapshot name.\" sys.exit(-1) print \"\\n\\nScript is going to destroiy snapshot \"+ snap_name +\".\" zfs_dbsdestroy_status, zfs_dbsdestroy_output = commands.getstatusoutput(fn_zfs_cmd + \" destroy \" + snap_name) if zfs_dbsdestroy_status != 0: print \"\\nAn error occurred while executing the ZFS destroy on \" + snap_name + \".\" print zfs_dbsdestroy_output sys.exit(-7) print \"\\n\"+ snap_name +\" destroyed.\"
ZFS has many problems with fragmentation.
Subscribe to:
Posts (Atom)