Module: PuppetX::EnterpriseModules::Oracle::Information

Included in:
OracleFeature, Password, Settings
Defined in:
lib/puppet_x/enterprisemodules/oracle/information.rb

Overview

Docs

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(parent) ⇒ Object



11
12
13
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 11

def self.included(parent)
  parent.extend(Information)
end

Instance Method Details

#cached_sid_value(name, sid) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 15

def cached_sid_value(name, sid)
  # rubocop:disable Style/ClassVars
  @@cache ||= {}
  # rubocop:enable Style/ClassVars
  @@cache[name] ||= {}
  if @@cache[name][sid].nil?
    @@cache[name][sid] = yield
  else
    Puppet.debug "Using cached version of #{name} for sid #{sid}."
    @@cache[name][sid]
  end
end

#cluster?(on_sid = sid) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 32

def cluster?(on_sid = sid)
  cached_sid_value(:cluster, on_sid) { sql('select parallel as par from v$instance', :sid => on_sid).first['PAR'] == 'YES' }
end

#cluster_instances(on_sid = sid) ⇒ Object



72
73
74
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 72

def cluster_instances(on_sid = sid)
  cached_sid_value(:cluster_instances, on_sid) { sql('select INSTANCE_NAME from gv$instance', :sid => on_sid).collect { |e| e['INSTANCE_NAME'] } }
end

#containerdb?(on_sid = sid) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 36

def containerdb?(on_sid = sid)
  oracle_major_version(on_sid) >= 12 && cached_sid_value(:containerdb, on_sid) { sql('SELECT CDB FROM V$DATABASE', :sid => on_sid).first['CDB'] == 'YES' }
end

#database_properties(on_sid = sid) ⇒ Object



96
97
98
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 96

def database_properties(on_sid = sid)
  cached_sid_value(:database_properties, on_sid) { sql('select property_name, property_value as value from database_properties', :sid => on_sid) }
end

#database_version(on_sid = sid) ⇒ Object



76
77
78
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 76

def database_version(on_sid = sid)
  cached_sid_value(:database_version, on_sid) { sql('select version from v$instance', :sid => on_sid).first['VERSION'] }
end

#db_create_file_dest(on_sid = sid) ⇒ Object



84
85
86
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 84

def db_create_file_dest(on_sid = sid)
  cached_sid_value(:db_create_file_dest, on_sid) { sql("select value from v$parameter where name = 'db_create_file_dest'", :sid => on_sid).first['VALUE'] }
end

#db_domain(on_sid = sid) ⇒ Object



80
81
82
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 80

def db_domain(on_sid = sid)
  cached_sid_value(:db_domain, on_sid) { sql("select value from v$parameter where name = 'db_domain'", :sid => on_sid).first['VALUE'] }
end

#db_for(on_sid = sid) ⇒ Object



108
109
110
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 108

def db_for(on_sid = sid)
  cluster?(on_sid) ? sid_for(on_sid).chop : sid_for(on_sid)
end

#diagnostic_dest(on_sid = sid) ⇒ Object



88
89
90
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 88

def diagnostic_dest(on_sid = sid)
  cached_sid_value(:diagnostic_dest, on_sid) { sql("select value from v$parameter where name = 'diagnostic_dest'", :sid => on_sid).first['VALUE'] }
end

#local_sid_for_db(db) ⇒ Object



112
113
114
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 112

def local_sid_for_db(db)
  running_sids.find { |sid| sid.include? db }
end

#open_pdbs(on_sid = sid) ⇒ Object

Don’t cache this one. This might change during a run and we always need the latest value



62
63
64
65
66
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 62

def open_pdbs(on_sid = sid)
  return [] unless containerdb?(on_sid)

  sql("select name from v$pdbs where open_mode != 'MOUNTED'", :sid => on_sid).map { |e| e['NAME'] }
end

#oracle_major_version(on_sid = sid) ⇒ Object



100
101
102
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 100

def oracle_major_version(on_sid = sid)
  database_version(on_sid).split('.').first.to_i
end

#oracle_managed_files_enabled?(on_sid = sid) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 28

def oracle_managed_files_enabled?(on_sid = sid)
  !db_create_file_dest(on_sid).to_s.empty?
end

#pdb?(on_sid = sid) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
55
56
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 52

def pdb?(on_sid = sid)
  return false unless containerdb?(on_sid)

  oracle_major_version(on_sid) >= 12 && cached_sid_value(:pdb, on_sid) { sql("select sys_context('userenv', 'con_id') as con_id from dual", :sid => on_sid).first['CON_ID'].to_i > 2 }
end

#primary?(on_sid = sid) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 68

def primary?(on_sid = sid)
  cached_sid_value(:primary, on_sid) { sql('select database_role from v$database', :sid => on_sid).first['DATABASE_ROLE'] == 'PRIMARY' }
end

#rootdb?(on_sid = sid) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
43
44
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 40

def rootdb?(on_sid = sid)
  return false unless containerdb?(on_sid)

  oracle_major_version(on_sid) >= 12 && cached_sid_value(:rootdb, on_sid) { sql("select sys_context('userenv', 'con_id') as con_id from dual", :sid => on_sid).first['CON_ID'] == '1' }
end

#seeddb?(on_sid = sid) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
50
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 46

def seeddb?(on_sid = sid)
  return false unless containerdb?(on_sid)

  oracle_major_version(on_sid) >= 12 && cached_sid_value(:seeddb, on_sid) { sql("select sys_context('userenv', 'con_id') as con_id from dual", :sid => on_sid).first['CON_ID'] == '2' }
end

#sid_for(on_sid = sid) ⇒ Object



104
105
106
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 104

def sid_for(on_sid = sid)
  pdb?(on_sid) ? configuration_for(on_sid)['contained_by'] : on_sid
end

#value_for_init_param(init_param, on_sid = sid) ⇒ Object



92
93
94
# File 'lib/puppet_x/enterprisemodules/oracle/information.rb', line 92

def value_for_init_param(init_param, on_sid = sid)
  cached_sid_value(init_param, on_sid) { sql("select value from v$parameter where name = '#{init_param}'", :sid => on_sid).first['VALUE'] || '' }
end