我遵循了https://github.com/oracle/vagrant-boxes的OracleDatabase/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
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-oci8
和activerecord-oracle_enhanced-adapter
宝石。
Q1:不,您不必创建数据库; Vagrantfile创建CDB(ORCLCDB)和PDB(ORCLPDB1)。调配完成后即可使用。
如果您不熟悉多租户概念,请参阅About the Multitenant Architecture。
Q2:如Bjarte所述,要连接到PDB,您需要使用Service Name
选项而不是SID
。PDBADMIN
用户仅存在于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) ===========================