如何在Vagrant中创建Oracle数据库并在我的本地Rails应用程序和SQL Developer中连接到它?

问题描述 投票:0回答:1

我遵循了https://github.com/oracle/vagrant-boxesOracleDatabase/18.3.0/README.md上的指示。

vagrant up安装完成后,在终端输出:

oracle-18c-vagrant: ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: my_password

我尝试通过SQL Developer在新的数据库连接窗口中使用以下值连接到该数据库:

  • 连接名称:my_local_oracle_db
  • 用户名:PDBADMIN
  • 密码:my_password
  • 连接类型:Basic
  • 主机名:localhost
  • 端口:1521
  • SID:ORCLCDB

但是它给我一个错误:ORA-01017: invalid username/password; logon denied

Q1)我首先需要在流浪汉内部创建一个新数据库吗?我可以使用什么指令来创建它?

Q2)我应该输入什么值以使用SQL Developer连接到它?

下一步,使用Rails连接它

我在config/database.yml中使用了此配置:

test:
  adapter: oracle_enhanced
  hostname: localhost
  port: 1521
  username: PDBADMIN
  password: my_password

但是当我执行rails db:migrate时,它失败并显示此错误:

$ RAILS_ENV=test rails db:migrate
Warning: NLS_LANG is not set. fallback to US7ASCII.
rails aborted!
NoMethodError: undefined method `match' for nil:NilClass

Q3)我应该在config / database.yml中输入什么值?

[我的Rails应用已安装ruby-oci8activerecord-oracle_enhanced-adapter宝石。

ruby-on-rails database oracle vagrant oracle-sqldeveloper
1个回答
1
投票

Q1:不,您不必创建数据库; Vagrantfile创建CDB(ORCLCDB)和PDB(ORCLPDB1)。调配完成后即可使用。

如果您不熟悉多租户概念,请参阅About the Multitenant Architecture

Q2:如Bjarte所述,要连接到PDB,您需要使用Service Name选项而不是SIDPDBADMIN用户仅存在于ORCLPDB1 PDB中,因此您需要将ORCLPDB1指定为服务。

请注意,PDBADMIN在安装后没有很多特权,您可能希望首先以SYSTEM的身份连接到CDB,并为PDBADMIN授予更多特权-例如。

ALTER SESSION SET CONTAINER=ORCLPDB1
GRANT DBA TO PDBADMIN

还请注意,您在端口号中输入了错字(1512而不是1521)

Q3:参见oracle-enhanced documentation

以下为我工作:

development:
  adapter: oracle_enhanced
  database: //localhost:1521/orclpdb1
  username: pdbadmin
  password: MySecretPassword
$ rake db:migrate
== 20200319203904 CreateAuthors: migrating ====================================
-- create_table(:authors)
   -> 0.0628s
== 20200319203904 CreateAuthors: migrated (0.0630s) ===========================
© www.soinside.com 2019 - 2024. All rights reserved.