我们正在使用一个oracle数据库,其中设置它的人"已经不在了",因此不知道sysdba密码,但需要它.我们有root访问权限(在Linux上).有没有办法恢复或更改系统密码?
我在我的 oracle 过程中使用 dbms_crypto.encrypt 函数来加密密码。我已连接到 oracle 为:
connect sqlplus as sysdba
Run Code Online (Sandbox Code Playgroud)
然后授予权限:
grant execute on sys.dbms_crypto to myuser;
Run Code Online (Sandbox Code Playgroud)
然后我可以在我的程序中使用 dbms_crypto。但我想知道如何检查我的数据库是否授予 dbms_crypto 权限?因为我必须在另一个数据库中使用此过程,并且不知道该数据库是否具有 dbms_crypto 的授予权限。
代码如下 -
import groovy.sql.Sql
def driver = "oracle.jdbc.OracleDriver"
def jdbcUrl = "jdbc:oracle:thin@myhost:1521:MYSID"
def sql = Sql.newInstance(jdbcUrl , "sys", "password", driver)
Run Code Online (Sandbox Code Playgroud)
但我得到了以下错误
Caught: java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:600)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:445)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:380)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:760)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
Run Code Online (Sandbox Code Playgroud)
我尝试将用户替换为'sys as sysdba',如本SO答案中所述.
我也试过用
Properties props …Run Code Online (Sandbox Code Playgroud) 创建一个新的数据库(基本数据库和高级数据库),这是我第一次与Oracle打交道,在其中我不知道为什么只想创建一个空的关系数据库时为什么会有这么多的表,触发器,视图和其他对象。
还有另一种方法可以做到吗,或者我错过了一些了解的东西?
谢谢。
捕获:
我需要将 ORACLE 9 DMP 文件导入新安装的 Oracle 11g。我正在使用imp 实用程序并使用SYSMAN 作为登录名。我到了要恢复的地步,并被告知“只有 DBA 才能导入由另一个 DBA 导出的文件”。当我尝试使用 SYSDBA 时,空白密码不起作用。当我使用 SQLPLUS / 作为 SYSDBA 然后尝试分配一个新密码时,我被告知 SYSDBA 不存在。如果我尝试以 SYS 身份登录,则会被告知以 SYSDBA 身份登录。
我正在使用Oracle Sql Developer
我有一个巨大的脚本,可以创建表,索引,主键约束等.
我的DB名称是:dbo_other
我以sysdba身份登录了这个dbo_other.
如果我运行我的脚本,则表格不会出现在"桌子"下的左侧面板上
但是,如果我通过添加'dbo_other'来附加脚本.在每个表名前面,表格会显示出来.
这非常繁琐且耗时.
有办法避免这种情况吗?为什么他们不会在没有添加dbo_other的情况下出现在dbo_other中.在每个表名前?当我在右上角运行查询时,下拉列表中选择了dbo_other !!
我甚至可以从创建的表中做一个select*(但是在左侧边栏中看不到它)此外,我可以在pl/sql developer中看到该表.
为什么oracle sql开发人员要我用dbo_other创建它.??
另外,有没有办法避免为每个表添加它?也许可以在脚本之上完成某些事情,以便它对随后的所有内容生效?