背景:下载了oracle19c的windows安装包,解压在C:\a_file\WINDOWS.X64_193000_db_home,运行目录里的setup.exe启动安装,oracle目录设在C:\a_software\oracle 。
1.启动navicat12进行连接,报ORA-12541:TNS:no listener错误
是listener.ora文件没配置的问题,接下来进行配置:
(1)文件在哪?
文件在oracle的home目录,即解压文件夹(C:\a_file\WINDOWS.X64_193000_db_home),的\network\admin下面。
注:oracle安装包的解压文件夹就是oracle的home目录了,安装前就应该规划好文件夹名和硬盘路径,不要像我一样忘了。
(2)配置什么?
原来只有 HOST = localhost 这一个配置,再加一个配置,把 localhost 改成本地ip
(3)重启oracle监听程序
运行cmd,输入lsnrctl stop命令,报错,当前用户无权限。
用管理员方式运行cmd,输入lsnrctl stop命令,再输入lsnrctl start命令,就可以了。
2.再次进行连接,报sid或server name未找到
(1)还是listener.ora文件没配置的问题,接下来进行配置:
加上红框的部分,SID_NAME为oracle安装时设置的SID,默认是orcl
(2)重启oracle监听程序
3.再次进行连接,报ORA-28040: No matching authentication protocol
是oracle服务端 与 oracle客户端版本不匹配的问题。
在oracle服务端修改客户端最低版本可以解决。
(1)找到sqlnet.ora文件
与刚才的listener.ora文件在同一个目录。
没有的话,就手动新建一个txt文本,文件名改为sqlnet,后缀改为ora。
(2)修改内容
添加
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
这两行,不用重启数据库,也不用重启监听程序。
4.再次进行连接,报用户名口令无效
因为改了第三步的sqlnet.ora,修改了最低客户端版本。
本地登录无影响;但客户端登录想要生效,得重新修改密码。
修改用户密码:
(1)输入 sqlplus / as sysdba
(2)输入alter user sys identified by oracle;
蓝色的部分,第一个是用户名,第二个是密码
5.navicat登陆成功
(1)要是报角色错误
点“高级”选项卡,把第二行的角色改成SYSDBA
(2)创建新用户并赋予dba权限
1)运行cmd,进入oracle命令行:
sqlplus / as sysdba
2)在oracle命令行,输入以下语句:
create user c##dba identified by c##dba;
grant dba to c##dba;
注:为什么用c##这么诡异的前缀?
因为默认创建了cdb容器数据库,分为root数据库和其他多个数据库。默认进的root数据库。
其他多个数据库:用户名不用加c##前缀。
—— 在哪个数据库建用户,这用户就只能在哪个数据库用。
root数据库:用户名就得加c##前缀。
—— 这用户在哪个数据库都能用。因此,加这前缀也是为了区分用户。
—— 听说不启用 PDB(其他多个数据库) ,就可以去掉这个前缀限制。