Oracle入门

由于工作需要,在本机搭建了Oracle,并使用Navicat图形化操作管理,期间遇到了好些问题,对于刚入坑的人来说,可能会花比较长的去百度查找资料来解决这些问题。这里将演示使用sqlplus和Navicat操作Oracle数据库。

使用入门

Oracle在使用上还是跟Mysql这些差不多的,Oracle在命令行使用sqlplus命令来进行操作,安装Oracle就不在这里详细说了,直接开始使用Oracle时,先要知道一点,因为Oracle占用比较高,所以一台电脑基本上只建一个数据库。Oracle可以通过用户来实现多个数据库,因为每个用户都有自己的模式,也就可以当做是一个用户一个库,当一个用户需要访问其他用户的数据库时,就需要权限了。刚安装完数据库,我们可以通过命令行来完成用户的创建和授权。在命令行输入sqlplus / as sysdba来以管理员身份登录到Oracle数据库中。接着看下面代码块来创建用户和为用户授权。

1
2
3
4
-- 创建用户,创建时不带上c##就给我提示个公共用户名或角色无效
create user c##test identified by test123456;
-- 普通用户只需要connect和resource就能够满足开发需求,dba则是全部权限,只有dba可以创建数据库结构。
grant connect, resource to abc;

在使用Navicat连接Oracle之前,需要对应版本的oci环境。我们能够从Oracle的官网上直接下载到instantclient-basic-windows.x64-19.6.0.0.0dbru.zip下载完成之后在Navicat的工具->选项->环境中的OCI环境中指向下载好的dll文件即可。

OCI环境配置
OCI环境配置
创建新连接
创建新连接

如果测试连接时,报了TNS什么的错,就重启一下OracleOraDB19Home1TNSListener这个服务,如果还是不行就从sqlplus登录sysdba看看是不是登陆了空闲例程。如果登录了空闲例程,则使用startup看看能不能将oracle启动起来。

无法正常启动Oracle

当时我这里是因为将sga_max值调到500m导致oracle无法正常启动了。这种情况下需要以pfile来启动,先以sysdba登录,然后通过命令创建出pfile文件,create pfile='$ORACLE_HOME/dbs/spfileorcl_bak.ora' from spfile;

然后我们打开文件,将文件中的sga_max_size的值改到2G,再将sga_target的值改成1G,这样就能够正常运行起来了。当时由于占用过高,在百度找到相关的解决办法后,没有理解清楚就执行了命令,导致sga_max_size小于了sga_target值,所以数据库就启动不起来了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=1845493760
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=0
orcl.__large_pool_size=16777216
orcl.__oracle_base='G:\database'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=855638016
orcl.__sga_target=2550136832
orcl.__shared_io_pool_size=134217728
orcl.__shared_pool_size=536870912
orcl.__streams_pool_size=0
orcl.__unified_pga_pool_size=0
*.audit_file_dest='G:\database\admin\orcl\adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='G:\database\oradata\ORCL\control01.ctl','G:\database\oradata\ORCL\control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.diagnostic_dest='G:\database'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.enable_pluggable_database=true
*.local_listener='LISTENER_ORCL'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=810m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=2147483648
*.sga_target=1024m
*.undo_tablespace='UNDOTBS1'

修改完文件后,我们可以通过startup pfile=‘$(这里填写你的pfile文件路径)’就可以看到数据库启动起来了。但是这样子只是本次启动起来了,重新启动计算机之后,数据库仍然是使用spfile的配置进行启动的,因为spfile的优先级高于pfile。所以我们可以通过create spfile from pfile='C:/app/Administrator/product/11.2.0/dbhome_1/dbs/spfileorcl_bak.ora';命令来从pfile配置中创建spfile的配置。当然,在执行这条命令之前,我们需要将数据库先关掉,使用shutdown immediate命令来关闭数据库。

到这里,体验数据库的坑就填完了,至于其他的坑,目前还没有体验过,希望以后能踩更多的坑,从填坑中汲取经验,不断成长。