Class: ArJdbc::Tasks::OracleDatabaseTasks

Inherits:
JdbcDatabaseTasks show all
Defined in:
lib/arjdbc/tasks/oracle_database_tasks.rb

Instance Attribute Summary

Attributes inherited from JdbcDatabaseTasks

#configuration

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from JdbcDatabaseTasks

#charset, #collation, #expand_path, #initialize, #resolve_database, #resolve_database_from_url

Constructor Details

This class inherits a constructor from ArJdbc::Tasks::JdbcDatabaseTasks

Class Method Details

.load_enhanced_structure_dumpObject



54
55
56
57
58
59
60
61
# File 'lib/arjdbc/tasks/oracle_database_tasks.rb', line 54

def self.load_enhanced_structure_dump
  unless defined? ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter
    ActiveRecord::ConnectionAdapters.module_eval do
      const_set :OracleEnhancedAdapter, ActiveRecord::ConnectionAdapters::OracleAdapter
    end
  end
  require 'arjdbc/tasks/oracle/enhanced_structure_dump'
end

Instance Method Details

#createObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/arjdbc/tasks/oracle_database_tasks.rb', line 7

def create
  print "Please provide the SYSTEM password for your oracle installation\n>"
  system_password = $stdin.gets.strip
  establish_connection(config.merge('username' => 'SYSTEM', 'password' => system_password))
  unless ( config = self.config ).key?('username')
    config = config_from_url(config['url']) if config['url']
  end
  begin
    connection.execute "CREATE USER #{config['username']} IDENTIFIED BY #{config['password']}"
  rescue => e
    if e.message =~ /ORA-01920/ # user name conflicts with another user or role name
      connection.execute "ALTER USER #{config['username']} IDENTIFIED BY #{config['password']}"
    else
      raise e
    end
  end
  connection.execute "GRANT unlimited tablespace TO #{config['username']}"
  connection.execute "GRANT create session TO #{config['username']}"
  connection.execute "GRANT create table TO #{config['username']}"
  connection.execute "GRANT create sequence TO #{config['username']}"
end

#dropObject



29
30
31
32
33
# File 'lib/arjdbc/tasks/oracle_database_tasks.rb', line 29

def drop
  self.class.load_enhanced_structure_dump
  establish_connection(config)
  connection.execute_structure_dump(connection.full_drop)
end

#purgeObject



35
36
37
38
39
40
# File 'lib/arjdbc/tasks/oracle_database_tasks.rb', line 35

def purge
  self.class.load_enhanced_structure_dump
  establish_connection(:test)
  connection.execute_structure_dump(connection.full_drop)
  connection.execute("PURGE RECYCLEBIN") rescue nil
end

#structure_dump(filename) ⇒ Object



42
43
44
45
46
# File 'lib/arjdbc/tasks/oracle_database_tasks.rb', line 42

def structure_dump(filename)
  self.class.load_enhanced_structure_dump
  establish_connection(config)
  File.open(filename, "w:utf-8") { |f| f << connection.structure_dump }
end

#structure_load(filename) ⇒ Object



48
49
50
51
52
# File 'lib/arjdbc/tasks/oracle_database_tasks.rb', line 48

def structure_load(filename)
  self.class.load_enhanced_structure_dump
  establish_connection(config)
  connection.execute_structure_dump(File.read(filename))
end