use*_*442 4 database oracle oracle12c
我已经安装了Oracle 12c,但是在创建第一个数据库并使用它时遇到了问题.我运行SQL Developer并使用"hr"用户,但它一直告诉我该帐户已被锁定.我搜索了stackoverflow的答案和官方文档,并尝试解锁它:
ALTER USER HR IDENTIFIED BY password ACCOUNT UNLOCK;
Run Code Online (Sandbox Code Playgroud)
但没有成功.我收到错误ORA01918,意味着用户不存在.
然后我尝试使用在安装时创建的用户(SYS as SYSDBA),但之后它说用户/密码不正确.我很确定我已经在我的系统上正确安装了Oracle 12c,这是Windows 8.1 x64.
我该怎么办?请帮我.
其他我不明白的是,"数据库"一词是否与MySQL的"架构"相同?"连接"是连接到特定的数据库,是吗?谢谢.
你是如何配置数据库的?你检查了选项Pluggable database吗?如果是,请确保您登录PDB而不是CDB.
默认情况下,pre-installed用户喜欢SCOTT,HR等驻留在container database和不在pluggable database.
tnsnames.ora中
编辑您的tnsnames.ora文件以添加PDB详细信息.例如,
PDBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl)
)
)
Run Code Online (Sandbox Code Playgroud)
打开所有PDB
要在登录后立即打开所有/特定PDB,请在CDB中创建AFTER STARTUP系统级触发器.
因为,PDB不是通过CDB开始打开的.让我们来看看 :
SHUTDOWN IMMEDIATE;
STARTUP;
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBP6 MOUNTED
Run Code Online (Sandbox Code Playgroud)
因此,为了让所有PDB自动打开,请执行以下操作:
做," SQLPLUS / AS SYSDBA",然后执行:
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
Run Code Online (Sandbox Code Playgroud)
它在CDB中创建一个启动后系统级别触发器.
SQLPLUS/AS SYSDBA
最常见的误解是关于"SQLPLUS/AS SYSDBA"的用法.
由于我们已经选中了创建单个CDB的选项,因此"SQLPLUS/AS SYSDBA"命令将始终登录到CDB.通常开发人员在以SYSDBA身份登录后直接解锁"SCOTT"帐户.但这是诀窍:
"SCOTT"和其他示例模式位于PDB中,而不在CDB中.因此,您需要以sysdba身份登录到PDB.
sqlplus SYS/password@PDBORCL AS SYSDBA
SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
sqlplus scott/tiger@pdborcl
SQL> show user;
USER is "SCOTT"
Run Code Online (Sandbox Code Playgroud)