使用 Oracle 数据保护的 Symfony2 学说配置
Symfony2 doctrine configuration with an Oracle dataguard
在我工作的 Symfony2 项目中,我想在 config.yml / parameters.yml 文件中配置我的连接,以指向他们稍后将安装的 Oracle 数据保护数据库。事情是,他们告诉我们:这是连接器:
jdbc:oracle:thin@(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=some.primary.host)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=some.secondary.host)(PORT=1521))
(LOAD_BALANCE=off)
(FAILOVER=on)
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=SOMESERVICENAME))
(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 120)(DELAY = 5))
)
而且由于有 2 个地址,我找不到处理此问题的方法。
我们的站点在 Windows 7,本地我有一个 Apache2.4 和 PHP 5.4,带有 12c 的 Oracle 即时客户端。
现在,我们使用 Symfony2 的常规配置连接到当前基础,在 .yml 文件中设置主机:用户:变量等。
我们的测试/预生产/生产环境都是linux.
我试图阅读很多资料以了解它是如何工作的,所以我继续阅读教义文档,并且我还按照 link 了解其中的 Oracle 命名方法。我还阅读了 Symfony2 学说配置页面。我还不能 post 超过 2 link 秒,抱歉。
然后我发现有人在谈论像这样的教义中的 classes https://github.com/symfony/symfony/issues/5106 and this one http://blog.ineat-conseil.fr/2014/07/configurer-doctrine-dbal-avec-oracle/
所以,我从这一切中得到的是:
- 在 .yml 文件中,连接的 slave 和 master 可能不是我要找的,但我不确定它们的目的,所以也许是。
- 在 Doctrine\DBAL\Driver\OCI8\OCI8Connection class 中,我清楚地看到使用 ADDRESS_LIST 构建的连接字符串仅包含一个 ADDRESS
现在,我想到了两件事:
- 删除 Doctrine,但此时会非常困难
- 扩展(或重写?)我需要的 class 或类似的东西,但这看起来很复杂
我试图为 .yml 文件中的 "dbname" 属性赋予我在特定位置创建的 tsnames.ora 中服务名称的值,并通过将TNS_ADMIN env 变量到此位置,但没有用(我把它放在系统变量中,而不是用户变量中)。
所以,也许这是微不足道的事情,但我有点迷路了。
如有任何帮助,我们将不胜感激。
干杯:)
好吧,事实证明,解决方案是将连接字符串直接放入 dbname 中:
database_host: false
主机参数为 false :
database_name: '(DESCRIPTION=…'
在我工作的 Symfony2 项目中,我想在 config.yml / parameters.yml 文件中配置我的连接,以指向他们稍后将安装的 Oracle 数据保护数据库。事情是,他们告诉我们:这是连接器:
jdbc:oracle:thin@(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=some.primary.host)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=some.secondary.host)(PORT=1521))
(LOAD_BALANCE=off)
(FAILOVER=on)
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=SOMESERVICENAME))
(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 120)(DELAY = 5))
)
而且由于有 2 个地址,我找不到处理此问题的方法。 我们的站点在 Windows 7,本地我有一个 Apache2.4 和 PHP 5.4,带有 12c 的 Oracle 即时客户端。 现在,我们使用 Symfony2 的常规配置连接到当前基础,在 .yml 文件中设置主机:用户:变量等。 我们的测试/预生产/生产环境都是linux.
我试图阅读很多资料以了解它是如何工作的,所以我继续阅读教义文档,并且我还按照 link 了解其中的 Oracle 命名方法。我还阅读了 Symfony2 学说配置页面。我还不能 post 超过 2 link 秒,抱歉。
然后我发现有人在谈论像这样的教义中的 classes https://github.com/symfony/symfony/issues/5106 and this one http://blog.ineat-conseil.fr/2014/07/configurer-doctrine-dbal-avec-oracle/
所以,我从这一切中得到的是:
- 在 .yml 文件中,连接的 slave 和 master 可能不是我要找的,但我不确定它们的目的,所以也许是。
- 在 Doctrine\DBAL\Driver\OCI8\OCI8Connection class 中,我清楚地看到使用 ADDRESS_LIST 构建的连接字符串仅包含一个 ADDRESS
现在,我想到了两件事:
- 删除 Doctrine,但此时会非常困难
- 扩展(或重写?)我需要的 class 或类似的东西,但这看起来很复杂
我试图为 .yml 文件中的 "dbname" 属性赋予我在特定位置创建的 tsnames.ora 中服务名称的值,并通过将TNS_ADMIN env 变量到此位置,但没有用(我把它放在系统变量中,而不是用户变量中)。
所以,也许这是微不足道的事情,但我有点迷路了。
如有任何帮助,我们将不胜感激。
干杯:)
好吧,事实证明,解决方案是将连接字符串直接放入 dbname 中:
database_host: false
主机参数为 false :
database_name: '(DESCRIPTION=…'